summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in9
-rw-r--r--config/commence.in61
-rw-r--r--config/conclude.in16
-rw-r--r--config/depend.in1
-rwxr-xr-xconfigure18
-rw-r--r--configure.in18
6 files changed, 113 insertions, 10 deletions
diff --git a/Makefile.in b/Makefile.in
index ae08a42..a4ca408 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -19,6 +19,8 @@ SUBDIRS=src test
# all: Build libraries, header files, and programs in the various
# subdirectories but do not install them.
#
+# test: Test the uninstalled library to make sure it works.
+#
# install: Installs libraries, header files, programs, and documentation
# in the various directories under the prefix directory (lib,
# include, bin, man, info). Use the `--prefix=PATH' option
@@ -55,7 +57,8 @@ SUBDIRS=src test
# make used in combination with gcc will maintain dependency
# information automatically.
#
-all install uninstall TAGS dep depend:
+.PHONY: test
+all lib progs test install uninstall TAGS dep depend:
@@SETX@; for d in $(SUBDIRS); do \
(cd $$d && $(MAKE) $@) || exit 1; \
done
@@ -84,4 +87,6 @@ maintainer-clean:
# This file does not end with the `CONCLUDE' statement since it has
-# redefined all the standard targets anyway.
+# redefined all the standard targets anyway. However, we do need the
+# `DEPEND' so we can automatically rerun configure if we have GNU make.
+@DEPEND@
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
+
diff --git a/configure b/configure
index e235ab3..ba332be 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
-# From configure.in Id
+# From configure.in Id: configure.in
# Guess values for system-dependent variables and create Makefiles.
# Generated automatically using autoconf version 2.7
# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
@@ -1354,6 +1354,15 @@ else
SETX="set -x"
fi
+if test -x /bin/pwd; then
+ pwd=/bin/pwd
+else
+ pwd=pwd
+fi
+ ROOT=`$pwd`
+
+touch ./config/stamp1 ./config/stamp2
+
trap '' 1 2 15
cat > confcache <<\EOF
# This file is a shell script that caches the results of configure
@@ -1441,7 +1450,8 @@ done
ac_given_srcdir=$srcdir
ac_given_INSTALL="$INSTALL"
-trap 'rm -fr `echo "config/depend config/commence config/conclude Makefile src/Makefile test/Makefile src/H5config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+trap 'rm -fr `echo "config/depend config/commence config/conclude \
+ Makefile src/Makefile test/Makefile src/H5config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
EOF
cat >> $CONFIG_STATUS <<EOF
@@ -1489,12 +1499,14 @@ s%@CONCLUDE@%%g
/@DEPEND@/r $DEPEND
s%@DEPEND@%%g
s%@SETX@%$SETX%g
+s%@ROOT@%$ROOT%g
CEOF
EOF
cat >> $CONFIG_STATUS <<EOF
-CONFIG_FILES=\${CONFIG_FILES-"config/depend config/commence config/conclude Makefile src/Makefile test/Makefile"}
+CONFIG_FILES=\${CONFIG_FILES-"config/depend config/commence config/conclude \
+ Makefile src/Makefile test/Makefile"}
EOF
cat >> $CONFIG_STATUS <<\EOF
for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
diff --git a/configure.in b/configure.in
index 8aea350..1d7ee2f 100644
--- a/configure.in
+++ b/configure.in
@@ -133,4 +133,20 @@ else
AC_SUBST(SETX) SETX="set -x"
fi
-AC_OUTPUT(config/depend config/commence config/conclude Makefile src/Makefile test/Makefile)
+dnl Where is the root of the source tree. Give an absolute address so
+dnl we can find it no matter which directory of the distribution is our
+dnl current directory. The built-in pwd fails on some systems, but the
+dnl /bin/pwd version works OK.
+if test -x /bin/pwd; then
+ pwd=/bin/pwd
+else
+ pwd=pwd
+fi
+AC_SUBST(ROOT) ROOT=`$pwd`
+
+dnl Touch the time-stamp files for src/H5config.h.in and src/H5config.h
+dnl before we generate them or the Makefiles.
+touch ./config/stamp1 ./config/stamp2
+
+AC_OUTPUT(config/depend config/commence config/conclude \
+ Makefile src/Makefile test/Makefile)