################################################################################
-# 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
################################################################################
################################################################################
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) $< \
- | 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) $(DCFLAGS) $(CFLAGS) $(DEFINE) 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) $(DCFLAGS) $(CFLAGS) $(DEFINE) 2>/dev/null $< \
+ | sed '\''s/$(subst .,\.,$(notdir $*))\.o[ :]*/$(subst /,\/,$*).o \
+ .dep\/$(subst /,\/,$*).dpp : /g'\'' > $@; \
+ [ -s $@ ] || rm -f $@'
+