# -*- makefile -*- # We keep a list of dependencies in `.depend' for each of the source # files on which it depends. When one of the source files is modified # we remove its record from .depend and regenerate its dependencies, # tacking them onto the end of .depend. By including the .depend file # into the makefile, we're telling make that the makefile depends on # the dependency list in the .depend file. # # This is as fast as the `.d' method described in the GNU make manual # for automatic dependencies, but has the added advantage that all # dependencies are stored in one place. The advantage over the # `makedepend' program is that only those files that are out of date # have dependency information rebuilt, and the Makefile is not # modified. # # This is also where tracing information is updated. The $(TRACE) # program is run on each source file to make sure that the H5TRACE() # macros are up to date. If they are then the file is not modified, # otherwise the file is changed and a backup is saved by appending a # tilde to the file name. # .PRECIOUS: .depend .distdep dep depend: .distdep .distdep: .depend touch .distdep -srcdir=$(srcdir) perl -p $(top_srcdir)/bin/distdep .depend >.distdep .depend: $(LIB_SRC) $(TEST_SRC) $(PROG_SRC) @touch .depend @for dep in $? dummy; do \ if [ $$dep != "dummy" ]; then \ echo Building dependencies for $$dep; \ obj=`echo $$dep | sed 's/\.c/\\\\.lo/'`; \ sed '\%$$obj%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ $(TRACE) $$dep; \ $(CC) -M -MG $(CPPFLAGS) $$dep |sed 's/\.o/.lo/' >>$@; \ fi; \ done; -perl -p $(top_srcdir)/bin/distdep .depend >$(srcdir)/.distdep -include .depend