From b6372af76a4e6d3ab19696ad26a78e9d019222c6 Mon Sep 17 00:00:00 2001 From: Efe ERKEN <efe.erken@etu.unistra.fr> Date: Fri, 18 Nov 2022 17:18:52 +0100 Subject: [PATCH] :bug: BUGFIX: Enhance and fix makefile Fixed makefile for compilation, updated ignore list for dependencies. --- .gitignore | 1 + makefile | 29 ++++++++++++++++------------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index bbd8564..dc27bba 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.s *.a *.d +*.Td *.lib *.so *.dylib diff --git a/makefile b/makefile index d4f3e05..67cc825 100644 --- a/makefile +++ b/makefile @@ -4,9 +4,12 @@ CPPFLAGS = -I include CFLAGS = -Wall -Wextra -g LDFLAGS = LDLIBS = -lncurses +DEPFLAGS = -MT $@ -MMD -MP -MF $(DPATH)$*.Td +POSTCOMPILE = mv -f $(DPATH)$*.Td $(DPATH)$*.d && touch $@ SPATH = src/ HPATH = include/ OPATH = obj/ +DPATH = dep/ LEVELPATH = levels/ ALL_SOURCES = $(wildcard $(SPATH)*.c) TEST_SOURCES = $(filter-out $(SPATH)main.c, $(ALL_SOURCES)) @@ -15,6 +18,7 @@ HEADERS = $(wildcard $(HPATH)*.h) ALL_OBJECTS = $(addprefix $(OPATH),$(patsubst %.c,%.o,$(notdir $(ALL_SOURCES)))) TEST_OBJECTS = $(addprefix $(OPATH),$(patsubst %.c,%.o,$(notdir $(TEST_SOURCES)))) OBJECTS = $(addprefix $(OPATH),$(patsubst %.c,%.o,$(notdir $(SOURCES)))) +ALL_DEPENDS = $(addprefix $(DPATH),$(patsubst %.c,%.d,$(notdir $(ALL_SOURCES)))) LEVELS = $(wildcard $(LEVELPATH)level*.txt) DOCGEN = doxygen DOXYFILE = doc/Doxyfile @@ -37,15 +41,23 @@ $(EXEC) : $(OBJECTS) $(TEST_EXEC) : $(TEST_OBJECTS) $(CC) $(CFLAGS) -o $@ $^ $(LDLIBS) -$(OPATH)%.o : $(SPATH)%.c $(HPATH)%.h | $(OPATH) - @echo "-o $@ -c $^" - $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $< +$(OPATH)%.o : $(SPATH)%.c $(DPATH)%.d | $(OPATH) $(DPATH) + $(CC) $(DEPFLAGS) $(CPPFLAGS) $(CFLAGS) -o $@ -c $< + @$(POSTCOMPILE) $(OPATH) : mkdir -p $@ +$(DPATH) : + mkdir -p $@ + +$(ALL_DEPENDS) : + +# include $(wildcard $(ALL_DEPENDS)) +-include $(ALL_DEPENDS) + clean : - rm -f $(EXEC) $(TEST_EXEC) $(ALL_OBJECTS) + rm -f $(EXEC) $(TEST_EXEC) $(ALL_OBJECTS) $(ALL_DEPENDS) doc : $(DOCGEN) $(DOXYFILE) @@ -55,12 +67,3 @@ archive : $(ARCHIVE_NAME) $(ARCHIVE_NAME) : $(ARCHIVE_SOURCES) $(ARCHIVER) $(ARCHIVE_FLAGS) $@ $^ -echo : - @echo "All_SOURCES = $(ALL_SOURCES)" - @echo "TEST_SOURCES = $(TEST_SOURCES)" - @echo "SOURCES = $(SOURCES)" - @echo "HEADERS = $(HEADERS)" - @echo "All_OBJECTS = $(ALL_OBJECTS)" - @echo "TEST_OBJECTS = $(TEST_OBJECTS)" - @echo "OBJECTS = $(OBJECTS)" - -- GitLab