makefile
authorNiki Roo <niki@nikiroo.be>
Sun, 30 Jun 2024 09:36:12 +0000 (11:36 +0200)
committerNiki Roo <niki@nikiroo.be>
Sun, 30 Jun 2024 09:36:12 +0000 (11:36 +0200)
src/cutils
src/tests-cutils/makefile.d

index 9e29e2f55d36a2e05a3420825b8ecc33006a45eb..5b43528760ac0faf92931578d3801d6f8d4708fa 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 9e29e2f55d36a2e05a3420825b8ecc33006a45eb
+Subproject commit 5b43528760ac0faf92931578d3801d6f8d4708fa
index c42debeb4889ece3b553a8a09444371fd4635b23..3ee2928feb85bf8690e6b0a22ec495e5ebddbe53 100644 (file)
@@ -1,6 +1,7 @@
 # Note: 99+ required for for-loop initial declaration (CentOS 6)
 
 NAME   = tests-cutils
+NAMES  = $(NAME)
 srcdir = $(NAME)
 dstdir = ../bin
 
@@ -15,7 +16,7 @@ CXXFLAGS += -ggdb -O0
 endif
 
 .PHONY: all build install uninstall clean mrpropre mrpropre \
-       $(NAME) test run run-test run-test-more
+       $(NAME) deps test run run-test run-test-more
 
 SOURCES=$(wildcard $(srcdir)/*.c)
 HEADERS=$(wildcard $(srcdir)/*.h)
@@ -25,24 +26,29 @@ OBJECTS=$(SOURCES:%.c=%.o)
 
 all: build
 
-build: $(NAME)
+build: $(NAMES)
 
-$(NAME): $(dstdir)/$(NAME)
+$(NAME): deps $(dstdir)/$(NAME)
 
 ################
 # Dependencies #
 ################
-OBJECTS+=$(dstdir)/libcutils.o
-OBJECTS+=$(dstdir)/libcutils-check.o
-$(dstdir)/libcutils.o:
+## Libs (if needed)
+deps:
        $(MAKE) --no-print-directory -C cutils/ cutils
-$(dstdir)/libcutils-check.o:
        $(MAKE) --no-print-directory -C cutils/ check
+DEPS=$(dstdir)/libcutils.o $(dstdir)/libcutils-check.o
+
+## Headers
+DEPENDS=$(SOURCES:%.c=%.d)
+-include $(DEPENDS)
+%.o: %.c
+       $(CC) $(CCFLAGS) -MMD -MP -c $< -o $@
 ################
 
-$(dstdir)/$(NAME): $(OBJECTS)
+$(dstdir)/$(NAME): $(DEPS) $(OBJECTS)
        mkdir -p $(dstdir)
-       $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $@
+       $(CC) $(CFLAGS) $(LDFLAGS) $(DEPS) $(OBJECTS) -o $@
 
 # Test program, so running = running tests
 run: run-test
@@ -56,7 +62,7 @@ run-test-more: test
        @$(dstdir)/$(NAME) --more
 
 clean:
-       rm -f $(srcdir)/*.o $(srcdir)/*/*.o
+       rm -f $(OBJECTS) $(DEPENDS)
 
 mrproper: mrpropre
 mrpropre: clean