summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>1997-08-29 19:26:45 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>1997-08-29 19:26:45 (GMT)
commit3ea316ff54d76b866325794d84e4a9c060a4b2b8 (patch)
treefa6ef1ade99fdee40d38df3df9561a140c42e2e4
parent39a94b2f538e6b4d1b13362e022141ba8cb599c0 (diff)
downloadhdf5-3ea316ff54d76b866325794d84e4a9c060a4b2b8.zip
hdf5-3ea316ff54d76b866325794d84e4a9c060a4b2b8.tar.gz
hdf5-3ea316ff54d76b866325794d84e4a9c060a4b2b8.tar.bz2
[svn-r54] *** empty log message ***
-rw-r--r--Makefile70
-rw-r--r--test/Makefile77
2 files changed, 141 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 7a77357..d876ca2 100644
--- a/Makefile
+++ b/Makefile
@@ -35,12 +35,73 @@ INSTALL_PROGRAM=${INSTALL}
INSTALL_DATA=${INSTALL} -m 644
# Installation points
+ROOT=/usr/home/koziol/hdf_dev/hdf5
prefix=/usr/local
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
+# 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'.
@@ -55,6 +116,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
@@ -91,7 +154,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:
@set -x; for d in $(SUBDIRS); do \
(cd $$d && $(MAKE) $@) || exit 1; \
done
@@ -120,4 +184,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.
+
diff --git a/test/Makefile b/test/Makefile
index 21c5bc8..c1a15bf 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -31,12 +31,73 @@ INSTALL_PROGRAM=${INSTALL}
INSTALL_DATA=${INSTALL} -m 644
# Installation points
+ROOT=/usr/home/koziol/hdf_dev/hdf5
prefix=/usr/local
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
+# 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'.
@@ -66,22 +127,30 @@ testhdf5: $(PROG_OBJ) ../src/libhdf5.a
# 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 \