vlc/Makefile.dep

74 lines
3.1 KiB
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.
################################################################################
###############################################################################
# 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 $@'