X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=Makefile.dep;h=e56e57c62d7556886b071d93f759f6764f0fb04b;hb=c44190193e9d18429cbe754e92f70aebd03a073f;hp=d8178879c9bd58536f066030ab986fc981cb6d1d;hpb=551607d315126846db5538560f52fb2e084a5d6f;p=vlc diff --git a/Makefile.dep b/Makefile.dep index d8178879c9..e56e57c62d 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,34 @@ ################################################################################ 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 "regenerating 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 "regenerating dependencies for $*.c" + @$(SHELL) -ec '$(CC) -M $(CFLAGS) 2>/dev/null $< \ + | sed '\''s/$(subst .,\.,$(notdir $*))\.o[ :]*/$(subst /,\/,$*).o \ + .dep\/$(subst /,\/,$*).dpp : /g'\'' > $@; \ + [ -s $@ ] || rm -f $@' +