From: Jan Engelhardt <[EMAIL PROTECTED]>

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

_______________________________________________
Btrfs-devel mailing list
[email protected]
http://oss.oracle.com/mailman/listinfo/btrfs-devel

Reply via email to