Unify dependency generation
authorH. Peter Anvin <hpa@zytor.com>
Tue, 28 Apr 2009 03:58:14 +0000 (20:58 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 28 Apr 2009 03:58:14 +0000 (20:58 -0700)
Make the dependency generation more common; have a general pattern in
MCONFIG, and use it in rules (not in CFLAGS).

For NASM source, in order to stay compatible with old versions of
NASM, run NASM twice; newer versions of NASM is capable of generating
dependencies simultaneously like gcc can, but that would break
compatibility with older distros.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
MCONFIG
com32/MCONFIG
core/Makefile
dos/Makefile
extlinux/Makefile
linux/Makefile
mbr/Makefile
mtools/Makefile
utils/Makefile
win32/Makefile

diff --git a/MCONFIG b/MCONFIG
index 3fd3946..daeb9d4 100644 (file)
--- a/MCONFIG
+++ b/MCONFIG
@@ -54,3 +54,10 @@ GZIPPROG = gzip
 PNGTOPNM = pngtopnm
 
 com32    = $(topdir)/com32
+
+# Common stanza to make gcc generate .*.d dependency files
+MAKEDEPS = -Wp,-MT,$@,-MD,$(dir $@).$(notdir $@).d
+
+# Dependencies that exclude system headers; use whenever we use
+# header files from the platform.
+UMAKEDEPS = -Wp,-MT,$@,-MMD,$(dir $@).$(notdir $@).d
index 599cfb6..e02ec67 100644 (file)
@@ -35,10 +35,12 @@ endif
 CFLAGS     = $(GCCOPT) -W -Wall -march=i386 \
             -fomit-frame-pointer -D__COM32__ \
             -nostdinc -iwithprefix include \
-            -I$(com32)/libutil/include -I$(com32)/include $(GPLINCLUDE) \
-            -Wp,-MT,$@,-MD,$(dir $@).$(notdir $@).d
-SFLAGS     = $(GCCOPT) -D__COM32__ -march=i386 \
-            -Wp,-MT,$@,-MD,$(dir $@).$(notdir $@).d
+            -I$(com32)/libutil/include -I$(com32)/include $(GPLINCLUDE)
+SFLAGS     = $(GCCOPT) -W -Wall -march=i386 \
+            -fomit-frame-pointer -D__COM32__ \
+            -nostdinc -iwithprefix include \
+            -I$(com32)/libutil/include -I$(com32)/include $(GPLINCLUDE)
+
 LDFLAGS    = -m elf_i386 -T $(com32)/lib/com32.ld
 LIBGCC    := $(shell $(CC) $(GCCOPT) --print-libgcc)
 
@@ -54,11 +56,11 @@ C_LNXLIBS  = $(com32)/libutil/libutil_lnx.a
 
 .PRECIOUS: %.o
 %.o: %.S
-       $(CC) $(SFLAGS) -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(SFLAGS) -c -o $@ $<
 
 .PRECIOUS: %.o
 %.o: %.c
-       $(CC) $(CFLAGS) -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(CFLAGS) -c -o $@ $<
 
 .PRECIOUS: %.elf
 %.elf: %.o $(LIBS) $(C_LIBS)
@@ -66,11 +68,11 @@ C_LNXLIBS  = $(com32)/libutil/libutil_lnx.a
 
 .PRECIOUS: %.lo
 %.lo: %.S
-       $(CC) $(LNXSFLAGS) -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(LNXSFLAGS) -c -o $@ $<
 
 .PRECIOUS: %.lo
 %.lo: %.c
-       $(CC) $(LNXCFLAGS) -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(LNXCFLAGS) -c -o $@ $<
 
 .PRECIOUS: %.lnx
 %.lnx: %.lo $(LNXLIBS) $(C_LNXLIBS)
index 16e21dc..1bd13e7 100644 (file)
@@ -72,6 +72,7 @@ iso%.bin: iso%.elf checksumiso.pl
        $(OBJCOPY) -O binary $< $@
 
 %.o: %.asm kwdhash.gen ../version.gen
+       ( $(NASM) -DDEPEND $(NINCLUDE) -o $@ -M $< && echo '' ) > .$@.d; true
        $(NASM) $(NASMOPT) -f elf -g -F stabs -DDATE_STR="'$(DATE)'" \
                -DHEXDATE="$(HEXDATE)" \
                -l $(@:.o=.lsr) -o $@ $<
@@ -111,28 +112,14 @@ install-all: install install-lib
 netinstall: installer
 
 tidy dist:
-       rm -f codepage.cp *.o *.elf stupid.* patch.offset
+       rm -f codepage.cp *.o *.elf stupid.* patch.offset .depend .*.d
        rm -f *.lsr *.lst *.map *.sec
        rm -f $(OBSOLETE)
 
 clean: tidy
 
 spotless: clean
-       rm -f $(BTARGET) *.bin *_bin.c .depend
-
-# Note: the extra echo '' is to deal with old versions of NASM which
-# did not properly terminate the dependency list.
-.depend:
-       rm -f .depend
-       for csrc in $(CSRC) ; do $(CC) $(INCLUDE) -MM $$csrc >> .depend ; done ; true
-       for nsrc in $(NASMSRC) ; do \
-               ( $(NASM) -DDEPEND $(NINCLUDE) -o \
-                 `echo $$nsrc | sed -e 's/\.asm/\.o/'` -M $$nsrc ; \
-                 echo '' ) >> .depend ; done ; true
-
-depend:
-       rm -f .depend
-       $(MAKE) .depend
+       rm -f $(BTARGET) *.bin *_bin.c
 
 # Include dependencies file
--include .depend
+-include .*.d
index da73a6d..afcb146 100644 (file)
@@ -60,15 +60,15 @@ syslinux.com: syslinux.elf
        $(OBJCOPY) -O binary $< $@
 
 %.o: %.c
-       $(CC) -Wp,-MT,$@,-MD,.$@.d $(CFLAGS) -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(CFLAGS) -c -o $@ $<
 %.i: %.c
-       $(CC) $(CFLAGS) -E -o $@ $<
+       $(CC) $(MAKEDEPS) $(CFLAGS) -E -o $@ $<
 %.s: %.c
-       $(CC) $(CFLAGS) -S -o $@ $<
+       $(CC) $(MAKEDEPS) $(CFLAGS) -S -o $@ $<
 %.o: %.S
-       $(CC) -Wp,-MT,$@,-MD,.$@.d $(CFLAGS) -D__ASSEMBLY__ -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(CFLAGS) -D__ASSEMBLY__ -c -o $@ $<
 %.s: %.S
-       $(CC) $(CFLAGS) -E -o $@ $<
+       $(CC) $(MAKEDEPS) $(CFLAGS) -D__ASSEMBLY__ -E -o $@ $<
 %.com: %.asm
        $(NASM) $(NASMOPT) -f bin -o $@ -l $*.lst $<
 
index d915e5a..4810533 100644 (file)
@@ -50,10 +50,10 @@ extlinux: $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $^
 
 %.o: %.c
-       $(CC) -Wp,-MT,$@,-MMD,.$@.d $(CFLAGS) -c -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<
 %.i: %.c
-       $(CC) $(CFLAGS) -E -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $<
 %.s: %.c
-       $(CC) $(CFLAGS) -S -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $<
 
 -include .*.d *.tmp
index 00fa076..a469cef 100644 (file)
@@ -52,10 +52,10 @@ syslinux-nomtools: syslinux
        ln -f $< $@
 
 %.o: %.c
-       $(CC) -Wp,-MT,$@,-MMD,.$@.d $(CFLAGS) -c -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<
 %.i: %.c
-       $(CC) $(CFLAGS) -E -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $<
 %.s: %.c
-       $(CC) $(CFLAGS) -S -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $<
 
 -include .*.d *.tmp
index 6cd677c..e069584 100644 (file)
@@ -24,13 +24,13 @@ all:        mbr.bin   altmbr.bin   gptmbr.bin   isohdpfx.bin   \
 
 .PRECIOUS: %.o
 %.o: %.S adjust.h
-       $(CC) $(SFLAGS) -Wa,-a=$*.lst -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*.lst -c -o $@ $<
 
 %_c.o: %.S adjust.h
-       $(CC) $(SFLAGS) -Wa,-a=$*_c.lst -DCTRL_80 -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*_c.lst -DCTRL_80 -c -o $@ $<
 
 %_f.o: %.S adjust.h
-       $(CC) $(SFLAGS) -Wa,-a=$*_f.lst -DFORCE_80 -c -o $@ $<
+       $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*_f.lst -DFORCE_80 -c -o $@ $<
 
 .PRECIOUS: %.elf
 %.elf: %.o mbr.ld
@@ -44,7 +44,7 @@ all:  mbr.bin   altmbr.bin   gptmbr.bin   isohdpfx.bin   \
 mbr_bin.c: mbr.bin
 
 tidy dist:
-       rm -f *.o *.elf *.lst
+       rm -f *.o *.elf *.lst .*.d
 
 clean: tidy
 
index b0f0a19..b551780 100644 (file)
@@ -34,10 +34,10 @@ syslinux: $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $^
 
 %.o: %.c
-       $(CC) -Wp,-MT,$@,-MMD,.$@.d $(CFLAGS) -c -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<
 %.i: %.c
-       $(CC) $(CFLAGS) -E -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $<
 %.s: %.c
-       $(CC) $(CFLAGS) -S -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $<
 
 -include .*.d *.tmp
index de8c999..179d5da 100644 (file)
@@ -26,7 +26,7 @@ ASIS     = keytab-lilo lss16toppm md5pass ppmtolss16 sha1pass syslinux2ansi
 all: $(TARGETS)
 
 %.o: %.c
-       $(CC) $(CFLAGS) -c -o $@ $<
+       $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $<
 
 mkdiskimage: mkdiskimage.in ../mbr/mbr.bin bin2hex.pl
        $(PERL) bin2hex.pl < ../mbr/mbr.bin | cat mkdiskimage.in - > $@
@@ -40,7 +40,7 @@ gethostip: gethostip.o
        $(CC) $(LDFLAGS) -o $@ $^
 
 tidy dist:
-       rm -f *.o
+       rm -f *.o .*.d
 
 clean: tidy
        rm -f $(TARGETS)
@@ -52,3 +52,5 @@ installer: all
 install: installer
        mkdir -m 755 -p $(INSTALLROOT)$(BINDIR)
        install -m 755 $(TARGETS) $(ASIS) $(INSTALLROOT)$(BINDIR)
+
+-include .*.d
index bb7cb34..964b74c 100644 (file)
@@ -78,10 +78,10 @@ syslinux.exe: $(OBJS)
 
 
 %.o: %.c
-       $(WINCC) -Wp,-MT,$@,-MMD,.$@.d $(WINCFLAGS) -c -o $@ $<
+       $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -c -o $@ $<
 %.i: %.c
-       $(WINCC) $(WINCFLAGS) -E -o $@ $<
+       $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -E -o $@ $<
 %.s: %.c
-       $(WINCC) $(WINCFLAGS) -S -o $@ $<
+       $(WINCC) $(UMAKEDEPS) $(WINCFLAGS) -S -o $@ $<
 
 -include .*.d *.tmp