################################################################################
# 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.
################################################################################

###############################################################################
# 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 target
################################################################################

default:
	@echo "This Makefile should not be called directly,"
	@echo "see notes at end of main Makefile."

################################################################################
# Dependencies creation
################################################################################

# 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)

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 $@'

