[Btrfs-devel] [PATCH 2/2] Add per-file dependency tracking

Jan Engelhardt jengelh at computergmbh.de
Thu Sep 13 10:11:28 PDT 2007


From: Jan Engelhardt <jengelh at computergmbh.de>

Adds per-file dependency tracking.

The dependency archive ".depend" is only created once.
Changing a C file's dependencies does not remake .depend,
so make will recompile either too few or too many things.
Use of per-.c file dependencies that are created and update
during compile solve this.

---
 Makefile |   14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

Index: btrfs-progs-0.8/Makefile
===================================================================
--- btrfs-progs-0.8.orig/Makefile
+++ btrfs-progs-0.8/Makefile
@@ -6,6 +6,7 @@ objects = ctree.o disk-io.o radix-tree.o
 #
 CHECKFLAGS=-D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ -Wbitwise \
 		-Wuninitialized -Wshadow -Wundef
+DEPFLAGS = -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@
 
 INSTALL= install
 prefix ?= /usr/local
@@ -22,16 +23,11 @@ endif
 
 .c.o:
 	$(check) $<
-	$(CC) $(CFLAGS) -c $<
+	$(CC) $(DEPFLAGS) $(CFLAGS) -c $<
 
 
 all: $(progs)
 
-$(progs): depend
-
-depend:
-	@$(CC) -MM $(ALL_CFLAGS) *.c 1> .depend
-
 btrfsctl: btrfsctl.o
 	gcc $(CFLAGS) -o btrfsctl btrfsctl.o
 
@@ -51,12 +47,10 @@ quick-test: $(objects) quick-test.o
 	gcc $(CFLAGS) -o quick-test $(objects) quick-test.o
 
 clean :
-	rm -f $(progs) cscope.out *.o .depend
+	rm -f $(progs) cscope.out *.o .*.d
 
 install: $(progs)
 	$(INSTALL) -m755 -d $(DESTDIR)$(bindir)
 	$(INSTALL) $(progs) $(DESTDIR)$(bindir)
 
-ifneq ($(wildcard .depend),)
-include .depend
-endif
+-include .*.d



More information about the Btrfs-devel mailing list