summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/commence.in61
-rw-r--r--config/conclude.in16
-rw-r--r--config/depend.in1
3 files changed, 74 insertions, 4 deletions
diff --git a/config/commence.in b/config/commence.in
index 503fa0d..26cbfbc 100644
--- a/config/commence.in
+++ b/config/commence.in
@@ -23,12 +23,73 @@ INSTALL_PROGRAM=@INSTALL_PROGRAM@
INSTALL_DATA=@INSTALL_DATA@
# Installation points
+ROOT=@ROOT@
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
libdir=@libdir@
includedir=@includedir@
+# The default is to build the library and programs.
+all: lib progs
+
+# The following rules insure that the Makefile is up-to-date by rerunning
+# various autoconf components (although not all versions of make assume
+# that the makefile is implicitly a target). We use time stamp files to
+# keep track of the most recent update of H5config.h.in and H5config.h
+# because autoheader and config.status don't update the modification time
+# if the contents don't change.
+#
+# Graphically, the dependencies are:
+#
+# configure.in
+# | |
+# +--------------------+ +-------------------+
+# | |
+# stamp1 configure
+# | |
+# | config.status
+# | | |
+# | +-------------------------------------+ |
+# | | |
+# stamp2 Makefile.in |
+# | | |
+# | +-----------+ +------+
+# +-----------------------------+ | |
+# | | |
+# Makefile
+#
+# A side effect of updating stamp1 is to generate H5config.h.in and a
+# side effect of updating stamp2 is to generate H5config.h. When using
+# a version of make that doesn't treat the makefile as the initial target
+# the user may want to occassionally type `make Makefile' in any source
+# directory.
+#
+STAMP1=$(ROOT)/config/stamp1
+STAMP2=$(ROOT)/config/stamp2
+
+MAKEFILE_PARTS=$(ROOT)/config/commence.in Makefile.in \
+ $(ROOT)/config/conclude.in $(ROOT)/config/depend.in
+
+$(STAMP1): $(ROOT)/configure.in
+ -(cd $(ROOT); \
+ touch $(STAMP1); \
+ autoheader)
+
+$(STAMP2): $(STAMP1) $(ROOT)/config.status
+ -(cd $(ROOT); \
+ touch $(STAMP2); \
+ CONFIG_FILES= CONFIG_HEADERS=src/H5config.h ./config.status)
+
+$(ROOT)/configure: $(ROOT)/configure.in
+ -(cd $(ROOT); autoconf)
+
+$(ROOT)/config.status: $(ROOT)/configure
+ -(cd $(ROOT); ./config.status --recheck)
+
+Makefile: $(MAKEFILE_PARTS) $(ROOT)/config.status $(STAMP2)
+ -(cd $(ROOT); CONFIG_HEADERS= ./config.status)
+
#------------------------------------------------------------------------------
# The following section of this makefile comes from the middle of `Makefile.in'
# from this directory. It was generated by running `config.status'.
diff --git a/config/conclude.in b/config/conclude.in
index 4ff8b0b..cfa77ec 100644
--- a/config/conclude.in
+++ b/config/conclude.in
@@ -4,22 +4,30 @@
# from `./config/conclude.in'.
#------------------------------------------------------------------------------
-# The default is to build the library and programs.
-all: $(LIB) $(PROGS)
-lib: $(LIB)
-
# This is the target for the library described in the main body of the
# makefile.
#
+lib: $(LIB)
$(LIB) __no_library__: $(LIB_OBJ)
$(AR) -rc $@ $(LIB_OBJ)
$(RANLIB) $@
+progs: $(PROGS)
+
# Build a tags file in this directory.
TAGS: $(LIB_SRC)
$(RM) $@
-etags $(LIB_SRC)
+# Runs each test in order, passing $(TEST_FLAGS) to the program.
+test: $(PROGS)
+ @for test in $(TESTS) dummy; do \
+ if test $$test != dummy; then \
+ echo "$$test $(TEST_FLAGS)"; \
+ $$test $(TEST_FLAGS) || exit 1; \
+ fi; \
+ done;
+
# Install the library, the public header files, and programs.
install: $(LIB) $(PUB_HDR) $(PROGS)
@if test -n "$(LIB)"; then \
diff --git a/config/depend.in b/config/depend.in
index d8cec80..b18660d 100644
--- a/config/depend.in
+++ b/config/depend.in
@@ -33,3 +33,4 @@ dep depend: .depend
done
-include .depend
+