summaryrefslogtreecommitdiffstats
path: root/c++/config/depend1.in
diff options
context:
space:
mode:
Diffstat (limited to 'c++/config/depend1.in')
-rw-r--r--c++/config/depend1.in50
1 files changed, 50 insertions, 0 deletions
diff --git a/c++/config/depend1.in b/c++/config/depend1.in
new file mode 100644
index 0000000..e07f4bf
--- /dev/null
+++ b/c++/config/depend1.in
@@ -0,0 +1,50 @@
+## -*- 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.
+##
+$(srcdir)/Dependencies: .depend
+ @if test "$(srcdir)" != "."; then \
+ echo '## This file is machine generated on GNU systems.' >$@; \
+ echo '## Only temporary changes may be made here.' >>$@; \
+ echo >>$@; \
+ perl -p $(top_srcdir)/bin/distdep .depend >>$@; \
+ else \
+ echo 'Dependencies cannot be built when $$srcdir == $$builddir'; \
+ fi
+
+.depend: $(LIB_SRC) $(TEST_SRC) $(PROG_SRC)
+ @touch .depend
+ @for dep in $? dummy; do \
+ if [ $$dep != "dummy" ]; then \
+ echo Building dependencies for $$dep; \
+ obj=`basename $$dep .c`.lo; \
+ sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \
+ $(TRACE) $$dep; \
+ $(CC) -M -MG $(CPPFLAGS) $$dep 2>/dev/null | \
+ sed 's% $(srcdir)/% $$(srcdir)/%g' | \
+ sed 's% $(top_srcdir)/% $$(top_srcdir)/%g' | \
+ sed 's% $(top_builddir)/% $$(top_builddir)/%g' | \
+ sed 's/\.o/.lo/' >>$@; \
+ fi; \
+ done;
+
+-include .depend
+