CC = gcc
RM = rm -rf
TAR = tar -cf
CP = cp -r
MKDIR = mkdir -p
SRC_DIR = src
INC_DIR = includes
SOURCES = $(wildcard $(SRC_DIR)/*.c)
OBJETS = $(patsubst %.c,%.o,$(notdir $(SOURCES)))
CFLAGS = -std=gnu11 -pedantic
LDFLAGS =
EXE = projet
EXE_EXT = out
ARCHIVE = kennel
PDF_DIR = report
%.o: src/%.c
$(CC) -c $< -o $@ $(CFLAGS)
compilation: $(OBJETS)
$(CC) -o $(EXE).$(EXE_EXT) $(OBJETS) $(LDFLAGS)
main: CFLAGS += -O3
main: compilation
dev: CFLAGS += -Wall -Wextra -Wshadow -Wcast-align -Wstrict-prototypes
dev: CFLAGS += -fanalyzer -fsanitize=undefined -g -Og
dev: LDFLAGS += -fsanitize=undefined
dev: compilation
all:
main
pdf-make:
cd report && \
$(MAKE)
pdf-clean:
@cd report && \
$(MAKE) clean
clean: pdf-clean
$(RM) $(OBJETS) "$(EXE).$(EXE_EXT)" "$(ARCHIVE).tar"
archive: pdf-make
$(MKDIR) "$(ARCHIVE)"
$(CP) "$(SRC_DIR)" "$(INC_DIR)" Makefile README \
"$(wildcard $(PDF_DIR)/*.pdf)" "$(ARCHIVE)"
$(TAR) "$(ARCHIVE).tar" "$(ARCHIVE)"
$(RM) "$(ARCHIVE)"