summaryrefslogtreecommitdiffstats
path: root/config/depend1.in
blob: 298824953cb9e3efd4f2b45bdc4cf2121cb0da12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
##                                                             -*- 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: $(srcdir)/Dependencies
$(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 >>$(srcdir)/Dependencies;				      \
	    perl -p $(top_srcdir)/bin/distdep .depend >>$@;		      \
	fi

.PRECIOUS: .depend
.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 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;
	@if test "$(srcdir)" != "."; then				      \
	    echo '## This file is machine generated on GNU systems.'          \
		>$(srcdir)/Dependencies;				      \
	    echo '## Only temporary changes may be made here.' 		      \
		>>$(srcdir)/Dependencies;				      \
	    echo >>$(srcdir)/Dependencies;				      \
	    perl -p $(top_srcdir)/bin/distdep .depend>>$(srcdir)/Dependencies;\
	fi

-include .depend