X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=Makefile.dep;h=de071516deec0ca057c454b62d16f641c15b1689;hb=9542cc88a8e24d615d9461ab33c89470f508a14a;hp=dbe2c3184e1128ead55cbc516d0e3e3d0244efed;hpb=0eba28c2c9f2b84a54d42103226ab74e69434020;p=vlc diff --git a/Makefile.dep b/Makefile.dep index dbe2c3184e..de071516de 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -1,12 +1,30 @@ ################################################################################ -# vlc (VideoLAN Client) dependancies makefile +# vlc (VideoLAN Client) dependencies makefile # (c)1998 VideoLAN ################################################################################ # This Makefile is dedicated to build of .d files. It should not be called # directly by user, but only through main Makefile. -# See notes at the end of the main makefile for explanations. ################################################################################ +############################################################################### +# Note on generic rules and dependencies +############################################################################### + +# Note on dependencies: each .c file is associated with a .d file, which +# depends of it. The .o file associated with a .c file depends of the .d, of the +# .c itself, and of Makefile. The .d files are stored in a separate .dep/ +# directory. +# The dep directory should be ignored by CVS. + +# Note on inclusions: depending of the target, the dependencies files must +# or must not be included. The problem is that if we ask make to include a file, +# and this file does not exist, it is made before it can be included. In a +# general way, a .d file should be included if and only if the corresponding .o +# needs to be re-made. + +# The object Makefile knows how to make a .o from a .c, and includes +# dependencies for the target, but only those required. + # All settings and options are passed through main Makefile ################################################################################ @@ -14,22 +32,42 @@ ################################################################################ default: - @echo "This Makefile should not be called directly - see notes at end of" - @echo "main Makefile." + @echo "This Makefile should not be called directly," + @echo "see notes at end of main Makefile." ################################################################################ -# Dependancies creation +# Dependencies creation ################################################################################ -# A dependancies file needs to be rebuilt if the .c changed or if one of the -# dependancies files have been changed. In other words, it depends from the +# A dependencies file needs to be rebuilt if the .c changed or if one of the +# dependencies files have been changed. In other words, it depends from the # .c and from itself. -include $(MAKECMDGOALS) -$(dependancies): .dep/%.d: %.c - @test -d .dep/$(dir $*) || mkdir -p .dep/$(dir $*) - #@echo "generating dependancies for $*.c" - @$(SHELL) -ec '$(CC) $(DCFLAGS) $(CFLAGS) $(DEFINE) $< \ - | sed '\''s/$(subst .,\.,$(notdir $*))\.o[ :]*/$(subst /,\/,$*).o \ - .dep\/$(subst /,\/,$*).d : /g'\'' > $@; \ - [ -s $@ ] || rm -f $@' + +CFLAGS += -DMAKE_DEP + +$(C_DEP): .dep/%.d: %.c + @test -d .dep/$(dir $*) || mkdir -p $(shell dirname .dep/$*) + @echo "make[$(MAKELEVEL)]: Generating dependencies for \`$*.c'" + @$(SHELL) -ec '$(CC) -M $(CFLAGS) 2>/dev/null $< \ + | sed '\''s/$(subst .,\.,$(notdir $*))\.o[ :]*/$(subst /,\/,$*).o \ + .dep\/$(subst /,\/,$*).d : /g'\'' > $@; \ + [ -s $@ ] || rm -f $@' + +$(CPP_DEP): .dep/%.dpp: %.cpp + @test -d .dep/$(dir $*) || mkdir -p $(shell dirname .dep/$*) + @echo "make[$(MAKELEVEL)]: Generating dependencies for \`$*.cpp'" + @$(SHELL) -ec '$(CC) -M $(CFLAGS) 2>/dev/null $< \ + | sed '\''s/$(subst .,\.,$(notdir $*))\.o[ :]*/$(subst /,\/,$*).o \ + .dep\/$(subst /,\/,$*).dpp : /g'\'' > $@; \ + [ -s $@ ] || rm -f $@' + +$(M_DEP): .dep/%.dm: %.m + @test -d .dep/$(dir $*) || mkdir -p $(shell dirname .dep/$*) + @echo "make[$(MAKELEVEL)]: Generating dependencies for \`$*.m'" + @$(SHELL) -ec '$(CC) -M $(CFLAGS) 2>/dev/null $< \ + | sed '\''s/$(subst .,\.,$(notdir $*))\.o[ :]*/$(subst /,\/,$*).o \ + .dep\/$(subst /,\/,$*).dm : /g'\'' > $@; \ + [ -s $@ ] || rm -f $@' +