diff options
author | James Laird <jlaird@hdfgroup.org> | 2005-02-01 03:17:02 (GMT) |
---|---|---|
committer | James Laird <jlaird@hdfgroup.org> | 2005-02-01 03:17:02 (GMT) |
commit | 26303241febadd20aea77fc8a1d48f05823170af (patch) | |
tree | 4ba1d92050fa6cc33feab6a38bc9778f71bbb146 /config | |
parent | 9f17319144fca94a852fd500487b0e4ae48e0997 (diff) | |
download | hdf5-26303241febadd20aea77fc8a1d48f05823170af.zip hdf5-26303241febadd20aea77fc8a1d48f05823170af.tar.gz hdf5-26303241febadd20aea77fc8a1d48f05823170af.tar.bz2 |
[svn-r9902] Purpose:
Configuration feature
Description:
HDF5 now uses automake to generate Makefiles
Solution:
Makefile.in files are now generated from Makefile.am files.
To reconfigure (after chaning a Makefile.am or configure.in):
/bin/sh bin/reconfigure.sh
Platforms tested:
Many
Diffstat (limited to 'config')
-rwxr-xr-x | config/Makefile.am.blank | 66 | ||||
-rw-r--r-- | config/commence-doc.am | 21 | ||||
-rw-r--r-- | config/commence.am | 116 | ||||
-rw-r--r-- | config/commence.in | 196 | ||||
-rw-r--r-- | config/conclude.am | 138 | ||||
-rw-r--r-- | config/conclude.in | 386 | ||||
-rw-r--r-- | config/depend1.in | 58 | ||||
-rw-r--r-- | config/depend2.in | 11 | ||||
-rw-r--r-- | config/depend3.in | 7 | ||||
-rw-r--r-- | config/depend4.in | 7 | ||||
-rw-r--r-- | config/dependN.in | 4 |
11 files changed, 341 insertions, 669 deletions
diff --git a/config/Makefile.am.blank b/config/Makefile.am.blank new file mode 100755 index 0000000..64d8cb0 --- /dev/null +++ b/config/Makefile.am.blank @@ -0,0 +1,66 @@ +# +# Copyright by the Board of Trustees of the University of Illinois. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. +## +## Makefile.am +## Run automake to generate a Makefile.in from this file. +# +# HDF5 Library Makefile(.in) +# + +## Makefile.am template +## When automake is run, it scans configure.in to find all Makefiles used by +## the build that come from Makefile.in files. If there are Makefile.am's +## in any of those locations, it parses the Makefile.am's to produce Makefile.in's, +## which configure uses to create Makefiles. +## +## Comments in the Makefile.am with two pound signs will be stripped by automake, +## comments with one pound sign will be passed through to the Makefile.in. +## +## Almost all Makefile.am's in hdf5 include commence.am and conclude.am; these +## files are treated as if they were included textually in the Makefile.am when +## automake processes it. Commence.am also includes a (mostly) comprehensive +## list of make targets. +## + +include $(top_srcdir)/config/commence.am + +# Add include directories to the C preprocessor flags +#AM_CFLAGS=-I$(top_srcdir)/src + +# Our main targets, the library foo.la and the programs bar and baz +#lib_LTLIBRARIES=foo.la +#bin_PROGRAMS=bar baz + +# Helper programs and test programs +noinst_PROGRAMS=helper +check_PROGRAMS=test1 test2 +check_SCRIPTS=runtest + +# Remove files generated by tests during 'make mostlyclean' +MOSTLYCLEAN=test1.h5 test2.h5 + +# library sources +foo_la_SOURCES= source1.c source2.c anothersource.c \ + sourceonanotherline.c + +# program sources +bar_SOURCES= bar.c barsource.c +test2_SOURCES= asdf.c jkl.c + +# Link with the main HDF5 library when building foo.la +foo_la_LIBADD=$(LIBHDF5) + +# Link with the main HDF5 library and foo.la when building other targets +LDADD=$(LIBHDF5) foo.la + +include $(top_srcdir)/config/conclude.am diff --git a/config/commence-doc.am b/config/commence-doc.am new file mode 100644 index 0000000..9f8592f --- /dev/null +++ b/config/commence-doc.am @@ -0,0 +1,21 @@ +## This file supplies Makefile.am files in the doc directory (and subdirectories) +## with the rules they need. + +include $(top_srcdir)/config/commence.am + +# Ignore most rules +lib progs check test _test: + @echo "Nothing to be done" + +tests TAGS tags dep depend: + @@SETX@; for d in X $(SUBDIRS); do \ + if test $$d != X; then \ + (cd $$d && $(MAKE) $@) || exit 1; \ + fi; + done + +# In docs directory, install-doc is the same as install +install-doc install-all: + $(MAKE) install +uninstall-doc uninstall-all: + $(MAKE) uninstall diff --git a/config/commence.am b/config/commence.am new file mode 100644 index 0000000..fd55b97 --- /dev/null +++ b/config/commence.am @@ -0,0 +1,116 @@ +#------------------------------------------------------------ -*- makefile -*- +# The following section of this makefile comes from the +# `./config/commence' file which was generated with config.status +# from `./config/commence.in'. +#----------------------------------------------------------------------------- + +# Shell commands used in Makefiles +RM=rm -f +CP=cp + +# Libraries to link to while building +LIBHDF5=$(top_builddir)/src/libhdf5.la +LIBH5TEST=$(top_builddir)/test/libh5test.la +LIBH5F=$(top_builddir)/fortran/src/libhdf5_fortran.la +LIBH5FTEST=$(top_builddir)/fortran/test/libh5test_fortran.la +LIBH5CPP=$(top_builddir)/c++/src/libhdf5_cpp.la +LIBH5TOOLS=$(top_builddir)/tools/lib/libh5tools.la +LIBH5_HL=$(top_builddir)/hl/src/libhdf5_hl.la +LIBH5F_HL=$(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la + +# Install directories that automake doesn't know about +includedir = $(exec_prefix)/include +docdir = $(exec_prefix)/doc + +# Scripts used to build examples +H5CC=$(bindir)/h5cc +H5CC_PP=$(bindir)/h5pcc +H5FC=$(bindir)/h5fc +H5FC_PP=$(bindir)/h5pfc + +# Make sure that these variables are exported to the Makefiles +F9XMODEXT=@F9XMODEXT@ + +# Let automake worry about Makefiles and configure components being up-to- +# date. +# +# +# 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. +# Invoke it by "gmake reconfigure". +# +# Graphically, the dependencies are: +# +# configure.in +# | | +# +-----------------+ +------------+ +# | | +# stamp1 configure +# (H5config.h.in) | +# | | | +# | +---------------+ +-----------+ +# | | | +# | config.status +# | | +# | +------------------+ +# | | +# stamp2 +# (H5config.h) Makefile.in et al +# | | +# +------------------+ +-----------+ +# | | +# 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. +# The `Makefile' target has been renamed to `reconfigure' so that the +# autoconf and make depend processes do not start up automatically. +# One must do `make reconfigure' explicitedly to start the process. +# (When srcdir is used and if more than one machines are running, +# this automatic Makefile/autoconf can get things unstable.) +# +#STAMP1=$(top_builddir)/config/stamp1 +#STAMP2=$(top_builddir)/config/stamp2 + +#MAKEFILE_PARTS=$(srcdir)/Makefile.in \ +# $(top_srcdir)/config/commence.am \ +# $(top_srcdir)/config/conclude.am + +#$(STAMP1): $(top_srcdir)/configure.in +# touch $(STAMP1) +# -cd $(top_srcdir); autoheader + +#$(STAMP2): $(STAMP1) $(top_builddir)/config.status +# touch $(STAMP2) +# -cd $(top_builddir); \ +# CONFIG_FILES= CONFIG_HEADERS=src/H5config.h ./config.status + +# Automake supplies a rule to generate configure +##$(top_srcdir)/configure: $(top_srcdir)/configure.in +## -cd $(top_srcdir); autoconf + +#$(top_builddir)/config.status: $(top_srcdir)/configure $(STAMP1) +# -cd $(top_builddir); ./config.status --recheck + +# rerun the autoconf process if any configure components have changed. +#reconfigure: $(MAKEFILE_PARTS) $(STAMP2) +# -cd $(top_builddir); CONFIG_HEADERS= ./config.status +# @for sub in @subdirs@ dummy; do \ +# if test $$sub != dummy; then \ +# -cd $$sub; $(MAKE) reconfigure; \ +# fi; \ +# done; + +#----------------------------------------------------------------------------- +# The following section of this makefile comes from the middle of +# `Makefile.am' from this directory. +# It was generated by running automake on `Makefile.am' to create +# `Makefile.in', then running `config.status' to create this Makefile. +#----------------------------------------------------------------------------- diff --git a/config/commence.in b/config/commence.in deleted file mode 100644 index f4c71d7..0000000 --- a/config/commence.in +++ /dev/null @@ -1,196 +0,0 @@ -##------------------------------------------------------------ -*- makefile -*- -## The following section of this makefile comes from the -## `./config/commence' file which was generated with config.status -## from `./config/commence.in'. -##----------------------------------------------------------------------------- - -## Things that Make needs -.SUFFIXES: -.SUFFIXES: .c .f90 .cpp .o .lo -@SET_MAKE@ - -## Directories to search -@SEARCH@ - -## Programs -SHELL=/bin/sh -CC=@CC@ -CXX=@CXX@ -F9X=@F9X@ -F9XMODEXT=@F9XMODEXT@ -F9XMODFLAG=@F9XMODFLAG@ -FSEARCH_DIRS=@FSEARCH_DIRS@ -CFLAGS=@CFLAGS@ -CXXFLAGS=@CXXFLAGS@ -FFLAGS=@FFLAGS@ -CPPFLAGS=@CPPFLAGS@ -LDFLAGS=@LDFLAGS@ -ROOT=@ROOT@ -LIBS=@LIBS@ -AR=@AR@ -RANLIB=@RANLIB@ -PERL=@PERL@ -RM=rm -f -CP=cp -INSTALL=@INSTALL@ -INSTALL_PROGRAM=@INSTALL_PROGRAM@ -INSTALL_DATA=@INSTALL_DATA@ -PARALLEL=@PARALLEL@ -RUNSERIAL=@RUNSERIAL@ -RUNPARALLEL=@RUNPARALLEL@ -RUNTEST=$(RUNSERIAL) -TRACE=: - -## Languages -HDF_FORTRAN="no" -HDF_CXX="no" - -## Installation points -prefix=@prefix@ -exec_prefix=@exec_prefix@ -bindir=@bindir@ -libdir=@libdir@ -includedir=@includedir@ -docdir=@exec_prefix@/doc -PUB_LIB=$(LIB) - -## Obtain default library; the current version of libtool does not fully -## support C++ yet, and it does not know which default library to find. -## With libtool 1.5, this support can be removed. - BMR - Jan, 2002 -DEFAULT_LIBS=@DEFAULT_LIBS@ - -## Shared libraries -LT_STATIC_EXEC=@LT_STATIC_EXEC@ -DYNAMIC_DIRS=@DYNAMIC_DIRS@ -LT=$(top_builddir)/libtool -LT_COMPILE=$(LT) --mode=compile $(CC) -LT_LINK_LIB=$(LT) --mode=link $(CC) -rpath $(libdir) $(DYNAMIC_DIRS) -LT_LINK_EXE=$(LT) --mode=link $(CC) $(LT_STATIC_EXEC) -dlopen self -rpath $(libdir) $(DYNAMIC_DIRS) -LT_RUN=$(LT) --mode=execute -LT_INSTALL_PROG=$(LT) --mode=install $(INSTALL_PROGRAM) -LT_INSTALL_LIB=$(LT) --mode=install $(INSTALL_DATA) -LT_UNINSTALL=$(LT) --mode=uninstall $(RM) - -# Fortran compilation/linking stuff -LT_FCOMPILE=$(LT) --mode=compile $(F9X) -LT_LINK_FLIB=$(LT) --mode=link $(F9X) -static -rpath $(libdir) $(DYNAMIC_DIRS) -LT_LINK_FEXE=$(LT) --mode=link $(F9X) -static $(LT_STATIC_EXEC) $(DYNAMIC_DIRS) - -# C++ compilation/linking stuff -LT_CXX_COMPILE=$(LT) --mode=compile $(CXX) -LT_LINK_CXX_LIB=$(LT) --mode=link $(CXX) -static -rpath $(libdir) $(DYNAMIC_DIRS) -LT_LINK_CXX_EXE=$(LT) --mode=link $(CXX) -static $(LT_STATIC_EXEC) -dlopen self -rpath $(bindir) $(DYNAMIC_DIRS) - -## Optional variables. We must declare them here because Irix pmake -## complains if it sees a reference to a variable which has never been -## defined. The main makefile is free to redefine these to something else. -DOCDIR=$(docdir) -SUBDOCDIR= -EXAMPLEDIR=$(docdir)/hdf5/examples/c -LIB= -LIB_SRC= -LIB_OBJ= -PUB_HDR= -PUB_PROGS= -PUB_DOCS= -PUB_SUBDOCS= -PROGS= -TEST_PROGS= -PRIV_PROGS= -TEST_PROGS_PARA= -TEST_FLAGS= -TEST_SCRIPTS= -AUX_LIB= -EXAMPLE_PROGS= -SUBDIRS= -LIBHDF5= - -## The default is to build the library and/or programs. We must build -## them sequentially. -all: - $(MAKE) lib - $(MAKE) progs - $(MAKE) tests - -## 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. -## Invoke it by "gmake reconfigure". -## -## Graphically, the dependencies are: -## -## configure.in -## | | -## +-----------------+ +------------+ -## | | -## stamp1 configure -## (H5config.h.in) | -## | | | -## | +---------------+ +-----------+ -## | | | -## | config.status -## | | -## | +------------------+ -## | | -## stamp2 -## (H5config.h) Makefile.in et al -## | | -## +------------------+ +-----------+ -## | | -## 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. -## The `Makefile' target has been renamed to `reconfigure' so that the -## autoconf and make depend processes do not start up automatically. -## One must do `make reconfigure' explicitedly to start the process. -## (When srcdir is used and if more than one machines are running, -## this automatic Makefile/autoconf can get things unstable.) -## -STAMP1=$(top_builddir)/config/stamp1 -STAMP2=$(top_builddir)/config/stamp2 - -MAKEFILE_PARTS=$(srcdir)/Makefile.in \ - $(top_srcdir)/config/commence.in \ - $(top_srcdir)/config/conclude.in \ - $(top_srcdir)/config/depend1.in \ - $(top_srcdir)/config/depend2.in \ - $(top_srcdir)/config/depend3.in \ - $(top_srcdir)/config/depend4.in \ - $(top_srcdir)/config/dependN.in - -$(STAMP1): $(top_srcdir)/configure.in - touch $(STAMP1) - -cd $(top_srcdir); autoheader - -$(STAMP2): $(STAMP1) $(top_builddir)/config.status - touch $(STAMP2) - -cd $(top_builddir); \ - CONFIG_FILES= CONFIG_HEADERS=src/H5config.h ./config.status - -$(top_srcdir)/configure: $(top_srcdir)/configure.in - -cd $(top_srcdir); autoconf - -$(top_builddir)/config.status: $(top_srcdir)/configure $(STAMP1) - -cd $(top_builddir); ./config.status --recheck - -# rerun the autoconf process if any configure components have changed. -reconfigure: $(MAKEFILE_PARTS) $(STAMP2) - -cd $(top_builddir); CONFIG_HEADERS= ./config.status - @for sub in @subdirs@ dummy; do \ - if test $$sub != dummy; then \ - -cd $$sub; $(MAKE) reconfigure; \ - fi; \ - done; - -##----------------------------------------------------------------------------- -## 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.am b/config/conclude.am new file mode 100644 index 0000000..f712294 --- /dev/null +++ b/config/conclude.am @@ -0,0 +1,138 @@ +#------------------------------------------------------------ -*- makefile -*- +# The following section of this makefile comes from the +# `./config/conclude' file which was generated with config.status +# from `./config/conclude.in'. +#----------------------------------------------------------------------------- + +# Automake needs to be taught how to build lib, progs, and tests targets. +# These will be filled in automatically for the most part (e.g., +# lib_LIBRARIES are built for lib target), but EXTRA_LIB, EXTRA_PROG, and +# EXTRA_TEST variables are supplied to allow the user to force targets to +# be built at certain times. +LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES) \ + $(noinst_LTLIBRARIES) $(check_LIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LIB) +PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS) \ + $(EXTRA_PROG) +TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) + + +# lib/progs/tests targets recurse into subdirectories. build-* targets +# build files in this directory. +build-lib: $(LIB) +build-progs: $(LIB) $(PROGS) +build-tests: $(LIB) $(PROGS) $(TESTS) + +lib progs tests :: + @$(MAKE) build-$@ || exit 1; \ + for d in X $(SUBDIRS); do \ + if test $$d != X -a $$d != .; then \ + (set -x; cd $$d && $(MAKE) $@) || exit 1; \ + fi; \ + done + +# Tell Automake to build tests when the user types `make all' (this is +# not its default behavior). Also build EXTRA_LIB and EXTRA_PROG since +# Automake won't build them automatically, either. +all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(TESTS) + +# make install-doc doesn't do anything outside of doc directory, but +# Makefiles should recognize it. +install-doc uninstall-doc: + @echo "Nothing to be done." + +# Run each test in order, passing $(TEST_FLAGS) to the program. +# Since tests are done in a shell loop, "make -i" does apply inside it. +# Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop. +# The timestamps give a rough idea how much time the tests use. +# +# Note that targets in TESTS (defined above) will be built when the user +# types 'make tests' or 'make check', but only programs in TEST_PROG, +# TEST_PROG_PARA, or TEST_SCRIPT will actually be executed. +check-TESTS: test + +test _test: $(PROGS) $(TESTS) + @if test -n "$(TEST_PROG)$(TEST_PROG_PARA)$(TEST_SCRIPT)"; then \ + echo "===Tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \ + fi + @for test in $(TEST_PROG) dummy; do \ + if test $$test != dummy; then \ + echo "============================"; \ + if test "X$(HDF_FORTRAN)" = "Xyes"; then \ + echo "Fortran API: Testing $$test $(TEST_FLAGS)"; \ + elif test "X$(HDF_CXX)" = "Xyes"; then \ + echo "C++ API: Testing $$test $(TEST_FLAGS)"; \ + else \ + echo "Testing $$test $(TEST_FLAGS)"; \ + fi; \ + echo "============================"; \ + srcdir="$(srcdir)" \ + $(RUNTEST) ./$$test $(TEST_FLAGS) || \ + (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + break; \ + echo ""; \ + fi; \ + done; \ + test $$test = dummy || false + @if test -n "$(TEST_PROG_PARA)"; then \ + echo "**** Hint ****"; \ + echo "Parallel test files reside in the current directory" \ + "by default."; \ + echo "Set HDF5_PARAPREFIX to use another directory. E.g.,"; \ + echo " HDF5_PARAPREFIX=/PFS/user/me"; \ + echo " export HDF5_PARAPREFIX"; \ + echo " make check"; \ + echo "**** end of Hint ****"; \ + fi + @for test in $(TEST_PROG_PARA) dummy; do \ + if test $$test != dummy; then \ + echo "============================"; \ + if test "X$(HDF_FORTRAN)" = "Xyes"; then \ + echo "Fortran API: Testing $$test $(TEST_FLAGS)"; \ + elif test "X$(HDF_CXX)" = "Xyes"; then \ + echo "C++ API: Testing $$test $(TEST_FLAGS)"; \ + else \ + echo "Testing $$test $(TEST_FLAGS)"; \ + fi; \ + echo "============================"; \ + srcdir="$(srcdir)" \ + $(RUNPARALLEL) ./$$test $(TEST_FLAGS) || \ + (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + break; \ + echo ""; \ + fi; \ + done; \ + test $$test = dummy || false + @for test in $(TEST_SCRIPT) dummy; do \ + if test $$test != dummy; then \ + echo "============================"; \ + if test "X$(HDF_FORTRAN)" = "Xyes"; then \ + echo "Fortran API: Testing $$test $(TEST_FLAGS)"; \ + elif test "X$(HDF_CXX)" = "Xyes"; then \ + echo "C++ API: Testing $$test $(TEST_FLAGS)"; \ + else \ + echo "Testing $$test $(TEST_FLAGS)"; \ + fi; \ + echo "============================"; \ + RUNSERIAL="$(RUNSERIAL)" RUNPARALLEL="$(RUNPARALLEL)" \ + srcdir="$(srcdir)" \ + /bin/sh $$test $(TEST_FLAGS) || \ + (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + break; \ + echo ""; \ + fi; \ + done; \ + test $$test = dummy || false + @if test -n "$(TEST_PROG)$(TEST_PROG_PARA)$(TEST_SCRIPT)"; then \ + echo "===Tests in `echo ${PWD} | sed -e s:.*/::` ended `date`===";\ + fi + +# Run test with different Virtual File Driver +check-vfd: + @for vfd in $(VFD_LIST) dummy; do \ + if test $$vfd != dummy; then \ + echo "============================"; \ + echo "Testing Virtual File Driver $$vfd"; \ + echo "============================"; \ + HDF5_DRIVER=$$vfd $(MAKE) check; \ + fi; \ + done diff --git a/config/conclude.in b/config/conclude.in deleted file mode 100644 index 43723fb..0000000 --- a/config/conclude.in +++ /dev/null @@ -1,386 +0,0 @@ -##------------------------------------------------------------ -*- makefile -*- -## The following section of this makefile comes from the -## `./config/conclude' file which was generated with config.status -## from `./config/conclude.in'. -##----------------------------------------------------------------------------- - -## This is the target for the library described in the main body of the -## makefile. -## -lib: $(LIB) -$(LIB) __no_library__: $(LIB_OBJ) - @if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - $(LT_LINK_FLIB) -o $@ $(FFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS); \ - elif test "X$(HDF_CXX)" = "Xyes"; then \ - $(LT_LINK_CXX_LIB) -o $@ $(CXXFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS); \ - else \ - $(LT_LINK_LIB) -o $@ $(CFLAGS) $(LIB_OBJ) $(LDFLAGS) $(LIBS); \ - fi - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d && $(MAKE) lib) || exit 1; \ - fi; \ - done - -progs: $(LIB) $(PROGS) - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d && $(MAKE) progs) || exit 1; \ - fi; \ - done - -## 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. -## Since tests are done in a shell loop, "make -i" does apply inside it. -## Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop. -## The timestamps give a rough idea how much time the tests use. -## -tests: $(TEST_PROGS) $(TEST_PROGS_PARA) $(TEST_SCRIPTS) $(LIB) -check test _test: tests - @echo "===Tests in `echo ${PWD} | sed -e s:.*/::` begin `date`===" - @for test in $(TEST_PROGS) dummy; do \ - if test $$test != dummy; then \ - echo "============================"; \ - if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - echo "Fortran API: Testing $$test $(TEST_FLAGS)"; \ - elif test "X$(HDF_CXX)" = "Xyes"; then \ - echo "C++ API: Testing $$test $(TEST_FLAGS)"; \ - else \ - echo "Testing $$test $(TEST_FLAGS)"; \ - fi; \ - echo "============================"; \ - srcdir="$(srcdir)" \ - $(RUNTEST) ./$$test $(TEST_FLAGS) || \ - (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ - break; \ - echo ""; \ - fi; \ - done; \ - test $$test = dummy || false - @if test -n "$(TEST_PROGS_PARA)"; then \ - echo "**** Hint ****"; \ - echo "Parallel test files reside in the current directory" \ - "by default."; \ - echo "Set HDF5_PARAPREFIX to use another directory. E.g.,"; \ - echo " HDF5_PARAPREFIX=/PFS/user/me"; \ - echo " export HDF5_PARAPREFIX"; \ - echo " make check"; \ - echo "**** end of Hint ****"; \ - fi - @for test in $(TEST_PROGS_PARA) dummy; do \ - if test $$test != dummy; then \ - echo "============================"; \ - if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - echo "Fortran API: Testing $$test $(TEST_FLAGS)"; \ - elif test "X$(HDF_CXX)" = "Xyes"; then \ - echo "C++ API: Testing $$test $(TEST_FLAGS)"; \ - else \ - echo "Testing $$test $(TEST_FLAGS)"; \ - fi; \ - echo "============================"; \ - srcdir="$(srcdir)" \ - $(RUNPARALLEL) ./$$test $(TEST_FLAGS) || \ - (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ - break; \ - echo ""; \ - fi; \ - done; \ - test $$test = dummy || false - @for test in $(TEST_SCRIPTS) dummy; do \ - if test $$test != dummy; then \ - echo "============================"; \ - if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - echo "Fortran API: Testing $$test $(TEST_FLAGS)"; \ - elif test "X$(HDF_CXX)" = "Xyes"; then \ - echo "C++ API: Testing $$test $(TEST_FLAGS)"; \ - else \ - echo "Testing $$test $(TEST_FLAGS)"; \ - fi; \ - echo "============================"; \ - RUNSERIAL="$(RUNSERIAL)" RUNPARALLEL="$(RUNPARALLEL)" \ - srcdir="$(srcdir)" \ - /bin/sh $$test $(TEST_FLAGS) || \ - (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ - break; \ - echo ""; \ - fi; \ - done; \ - test $$test = dummy || false - @echo "===Tests in `echo ${PWD} | sed -e s:.*/::` ended `date`===" - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d && $(MAKE) tests) || exit 1; \ - fi; \ - done - -## Run test with different Virtual File Driver -check-vfd: - @for vfd in $(VFD_LIST) dummy; do \ - if test $$vfd != dummy; then \ - echo "============================"; \ - echo "Testing Virtual File Driver $$vfd"; \ - echo "============================"; \ - HDF5_DRIVER=$$vfd $(MAKE) check; \ - fi; \ - done - -## Make installation directories directories if they don't exist. -## -$(libdir): - -$(top_srcdir)/bin/mkdirs $@ - -$(includedir): - -$(top_srcdir)/bin/mkdirs $@ - -$(bindir): - -$(top_srcdir)/bin/mkdirs $@ - -$(DOCDIR): - -$(top_srcdir)/bin/mkdirs $@ - -$(EXAMPLEDIR): - -$(top_srcdir)/bin/mkdirs $@ - -## Install the library, the public header files, and public programs. -## -install: $(AUX_LIB) $(PUB_LIB) $(PUB_HDR) $(PUB_PROGS) $(libdir) $(includedir) $(bindir) - @for f in X $(PUB_LIB); do \ - if test $$f != X; then \ - if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - (cd .libs && rm -f $(PUB_LIB)i && ln -s ../$(PUB_LIB) $(PUB_LIB)i); \ - fi; \ - ($(LT_INSTALL_LIB) $$f $(libdir)/. || exit 1); \ - fi; \ - done - @if test "X$(HDF_FORTRAN)" = "Xyes" -a -n "$(F9XMODEXT)" && test "X$(F9XMODEXT)" != "Xo"; then \ - if test -f "hdf5.$(F9XMODEXT)" || test -f "HDF5.$(F9XMODEXT)"; then \ - ((cp *.$(F9XMODEXT) $(libdir)/. && chmod 644 $(libdir)/*.$(F9XMODEXT)) || exit 1); \ - fi; \ - fi - @if test -f libhdf5.settings; then \ - (set -x; $(INSTALL_DATA) libhdf5.settings $(libdir)/. || exit 1); \ - fi - @if test "X$(HDF_FORTRAN)" = "Xyes" -a -f libhdf5_fortran.settings; then \ - (set -x; $(INSTALL_DATA) libhdf5_fortran.settings $(libdir)/. || exit 1); \ - fi - @for f in X $(PUB_HDR); do \ - if test $$f != X; then \ - if test -f $$f; then \ - (set -x; $(INSTALL_DATA) $$f $(includedir)/. || exit 1); \ - else \ - (set -x; $(INSTALL_DATA) $(srcdir)/$$f $(includedir)/. || \ - exit 1); \ - fi; \ - fi; \ - done - @for f in X $(PUB_PROGS); do \ - if test $$f != X; then \ - if test "X$(PARALLEL)" != "Xno"; then \ - if test $$f = "h5cc"; then \ - ($(LT_INSTALL_PROG) $$f $(bindir)/h5pcc || exit 1); \ - elif test $$f = "h5fc"; then \ - ($(LT_INSTALL_PROG) $$f $(bindir)/h5pfc || exit 1); \ - else \ - ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1); \ - fi; \ - else \ - ($(LT_INSTALL_PROG) $$f $(bindir)/. || exit 1); \ - fi; \ - fi; \ - done - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d && $(MAKE) $@) || exit 1; \ - fi; \ - done - -install-examples: $(EXAMPLE_PROGS) $(EXAMPLEDIR) - @for f in X $(EXAMPLE_PROGS); do \ - if test $$f != X; then \ - (set -x; $(INSTALL_DATA) $(srcdir)/$$f $(EXAMPLEDIR)/. || exit 1);\ - fi; \ - done - -uninstall-examples: - @if test -n "$(EXAMPLE_PROGS)"; then \ - set -x; cd $(EXAMPLEDIR) && $(RM) $(EXAMPLE_PROGS); \ - fi - -## Install the documents. -## -install-doc: $(PUB_DOCS) $(DOCDIR) - @if test -n "$(DOCDIR)"; then \ - if test -d "$(DOCDIR)"; then \ - :; \ - else \ - mkdir $(DOCDIR) && chmod 755 $(DOCDIR); \ - fi; \ - fi - @if test -n "$(SUBDOCDIR)"; then \ - if test -d "$(SUBDOCDIR)" ; then \ - :; \ - else \ - mkdir $(SUBDOCDIR) && chmod 755 $(SUBDOCDIR); \ - fi; \ - fi - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d && $(MAKE) $@) || exit 1; \ - fi; \ - done - @for f in X $(PUB_DOCS); do \ - if test $$f != X; then \ - if test -f $$f; then \ - (set -x; $(INSTALL_DATA) $$f $(DOCDIR)/. || exit 1); \ - else \ - (set -x; $(INSTALL_DATA) $(srcdir)/$$f $(DOCDIR)/. || \ - exit 1); \ - fi; \ - fi; \ - done - @for f in X $(PUB_SUBDOCS); do \ - if test $$f != X; then \ - if test -f $$f; then \ - (set -x; $(INSTALL_DATA) $$f $(SUBDOCDIR)/. || exit 1); \ - else \ - (set -x; $(INSTALL_DATA) $(srcdir)/$$f $(SUBDOCDIR)/. || \ - exit 1); \ - fi; \ - fi; \ - done - -## Removes those things that `make install' (would have) installed. -## -uninstall: - @for f in libhdf5.settings $(LIB); do \ - $(LT_UNINSTALL) $(libdir)/$$f; \ - done - @if test -n "$(PUB_HDR)"; then \ - set -x; cd $(includedir) && $(RM) $(PUB_HDR); \ - fi - @for f in dummy $(PUB_PROGS); do \ - if test $$f != dummy; then \ - $(LT_UNINSTALL) $(bindir)/$$f; \ - fi; \ - done - @if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - $(LT_UNINSTALL) $(libdir)/libhdf5_fortran.settings; \ - if test -n "$(F9XMODEXT)" -a "X$(F9XMODEXT)" != "Xo"; then \ - if test -f "$(libdir)/hdf5.$(F9XMODEXT)" -o -f "$(libdir)/HDF5.$(F9XMODEXT)"; then \ - set -x; $(RM) $(libdir)/*.$(F9XMODEXT); \ - fi; \ - fi; \ - fi - -## Removes those things that `make install-doc' (would have) installed. -## -uninstall-doc: - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d && $(MAKE) $@) || exit 1; \ - fi; \ - done - @if test -n "$(PUB_DOCS)"; then \ - set -x; cd $(DOCDIR) && $(RM) $(PUB_DOCS); \ - fi - @if test -n "$(PUB_SUBDOCS)"; then \ - set -x; cd $(DOCDIR) && $(RM) $(PUB_SUBDOCS); \ - fi - -## Removes temporary files without removing the final target files. That is, -## remove things like object files but not libraries or executables. -## -mostlyclean: - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d; $(MAKE) $@) || exit 1; \ - fi; \ - done - @if test -n "$(LIB_OBJ)"; then \ - $(RM) $(LIB_OBJ) $(LIB_OBJ:.lo=.o); \ - fi - @if test -n "$(TEST_OBJ)"; then \ - $(RM) $(TEST_OBJ) $(TEST_OBJ:.lo=.o); \ - fi - @if test -n "$(PROG_OBJ)" || test -n "$(MOSTLYCLEAN)"; then \ - $(RM) $(PROG_OBJ) $(PROG_OBJ:.lo=.o) $(MOSTLYCLEAN); \ - fi - -## Like `mostlyclean' except it also removes the final targets: things like -## libraries and executables. This target doesn't remove any file that -## is part of the HDF5 distribution. -## -clean: mostlyclean - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d; $(MAKE) $@) || exit 1; \ - fi; \ - done - @if test -n "$(LIB)" -o -n "$(TEST_PROGS)" -o -n "$(TEST_PROGS_PARA)" -o -n "$(PROGS)" -o -n "$(CLEAN)"; then \ - $(RM) $(LIB) $(TEST_PROGS) $(TEST_PROGS_PARA) $(PROGS) $(CLEAN); \ - fi - @if test "X$(HDF_FORTRAN)" = "Xyes"; then \ - $(RM) -f *.M *.a *.mod; \ - fi - -$(RM) -r .libs - -## Like `clean' except it also removes files that were created by running -## configure. If you've unpacked the source and built HDF5 without creating -## any other files, then `make distclean' will leave only the files that were -## in the distribution. -## -distclean: clean - -$(RM) .depend TAGS *~ core *.core *.bak *.old *.new $(DISTCLEAN) - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d; $(MAKE) $@) || exit 1; \ - fi; \ - done - @if test -f $(srcdir)/Makefile.in; then \ - (set -x; $(RM) Makefile); \ - fi - -## Like `distclean' except it deletes all files that can be regenerated from -## the makefile, including those generated from autoheader and autoconf. -## -maintainer-clean: distclean - @for d in X $(SUBDIRS); do \ - if test $$d != X; then \ - (set -x; cd $$d; $(MAKE) $@) || exit 1; \ - fi; \ - done - -$(RM) *~ core core.* *.core *.bak *.contrib gmon.out - -## Implicit rules -## -.c.o: - $(CC) $(CFLAGS) $(CPPFLAGS) -c $< - -.c.lo: - @$(LT_COMPILE) $(CFLAGS) $(CPPFLAGS) -c $< - -.f90.o: - $(F9X) $(FFLAGS) $(FSEARCH_DIRS) -c $< - -.f90.lo: - @$(LT_FCOMPILE) $(FFLAGS) $(FSEARCH_DIRS) -c $< - -.cpp.o: - $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< - -.cpp.lo: - @$(LT_CXX_COMPILE) $(CXXFLAGS) $(CPPFLAGS) -c $< - -##----------------------------------------------------------------------------- -## The following section of this makefile contains dependencies between the -## source files and the header files. -##----------------------------------------------------------------------------- -.PHONY: dep depend -dep depend: $(srcdir)/Dependencies - -@DEPEND@ diff --git a/config/depend1.in b/config/depend1.in deleted file mode 100644 index 12beeca..0000000 --- a/config/depend1.in +++ /dev/null @@ -1,58 +0,0 @@ -## -*- 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 test $$dep != "dummy" -a -n "$(PERL)"; then \ - case "$$dep" in \ - *.c) \ - echo Building dependencies for $$dep; \ - obj=`basename $$dep .c`.lo; \ - sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ - $(TRACE) $$dep; \ - $(CC) -MM -MG $(CPPFLAGS) $$dep 2>/dev/null >>$@; \ - ;; \ - *.cpp) \ - echo Building dependencies for $$dep; \ - obj=`basename $$dep .cpp`.lo; \ - sed '\%^'"$$obj"':%,\%[^\\]$$%d' <$@ >$@- && mv $@- $@; \ - $(TRACE) $$dep; \ - $(CXX) -MM -MG $(CPPFLAGS) $$dep 2>/dev/null >>$@; \ - ;; \ - esac; \ - fi; \ - done; \ - $(PERL) -w $(top_srcdir)/bin/dependencies --top_srcdir=$(top_srcdir) --top_builddir=$(top_builddir) $@; - --include .depend - diff --git a/config/depend2.in b/config/depend2.in deleted file mode 100644 index f67914f..0000000 --- a/config/depend2.in +++ /dev/null @@ -1,11 +0,0 @@ -## -*- makefile -*- - -## This platform doesn't support automatic dependencies because we're -## not using GNU gcc. GNU gcc is needed in order to generate the list -## of header files included by a source file. - -## Since automatic dependencies are not being used, we attempt to include the -## `.distdep' file from the source tree. This file was automatically generated -## on some system that satisfies the above requirements. - --include $(srcdir)/Dependencies diff --git a/config/depend3.in b/config/depend3.in deleted file mode 100644 index e856bc5..0000000 --- a/config/depend3.in +++ /dev/null @@ -1,7 +0,0 @@ -## -*- makefile -*- - -## Since automatic dependencies are not being used, we attempt to include the -## `.distdep' file from the source tree. This file was automatically generated -## on some system that satisfies the above requirements. - -.include <$(srcdir)/Dependencies> diff --git a/config/depend4.in b/config/depend4.in deleted file mode 100644 index b0324d9..0000000 --- a/config/depend4.in +++ /dev/null @@ -1,7 +0,0 @@ -## -*- makefile -*- - -## Since automatic dependencies are not being used, we attempt to include the -## `.distdep' file from the source tree. This file was automatically generated -## on some system that satisfies the above requirements. - -include $(srcdir)/Dependencies diff --git a/config/dependN.in b/config/dependN.in deleted file mode 100644 index 7ece270..0000000 --- a/config/dependN.in +++ /dev/null @@ -1,4 +0,0 @@ -## -*- makefile -*- - -## Automatic dependencies are not being used and we cannot include other -## files. |