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