mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +08:00
3dfc80a28a
should always be built and installed whether tools are enabled or disabled. Also added Makefile.am to bin to build h5redeploy and to install and uninstall them. h5cc is created from h5cc.in by configure.
220 lines
8.0 KiB
Makefile
220 lines
8.0 KiB
Makefile
#
|
|
# Copyright by The HDF Group.
|
|
# 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 COPYING file, which can be found at the root of the source code
|
|
# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.
|
|
# If you do not have access to either file, you may request a copy from
|
|
# help@hdfgroup.org.
|
|
##
|
|
## Makefile.am
|
|
## Run automake to generate a Makefile.in from this file.
|
|
##
|
|
#
|
|
# This makefile mostly just reinvokes make in the various subdirectories
|
|
# but does so in the correct order. You can alternatively invoke make from
|
|
# each subdirectory manually.
|
|
#
|
|
# Top-level HDF5 Makefile(.in)
|
|
|
|
# pmake has issues if variables are undefined. Solve this problem in
|
|
# top-level Makefile by defining .MAKEFLAGS target to -V before pmake can
|
|
# encounter any undefined variables.
|
|
# Automake resists putting anything but variable definitions first in
|
|
# a Makefile.in, so we'll put a placebo comment here and use sed in
|
|
# bin/reconfigure to turn it into the .MAKEFLAGS target. Sigh. -JL 2005
|
|
# Configure should set AM_MAKEFLAGS to -V to solve this problem in
|
|
# subdirectories.
|
|
# NOTE: This means that invoking pmake in a subdirectory will not work.
|
|
#xxx.MAKEFLAGS:@AM_MAKEFLAGS@
|
|
#xxx $(MAKE) all
|
|
#xxx
|
|
|
|
include $(top_srcdir)/config/commence.am
|
|
|
|
# Define subdirectories to build.
|
|
## Automake understands that `make distclean' should recurse into
|
|
## conditional subdirectories even if `make all' does not.
|
|
## We need to list the examples directory in the DIST_SUBDIRS variable
|
|
## so that it will be visited by `make distclean'
|
|
# Add this directory to SUBDIRS so that examples get built after tools
|
|
# but before examples in extra interfaces (c++ and fortran).
|
|
# Since we're explicitly listing DIST_SUBDIRS, we also need to list
|
|
# directories that are only conditionally built (so that their Makefiles
|
|
# are cleaned as well).
|
|
# Note that `make clean' will not affect the examples or doc directories.
|
|
|
|
# Conditionals. These conditionals are defined during configure
|
|
# Define each variable to empty if it is not used to placate pmake
|
|
if BUILD_CXX_CONDITIONAL
|
|
CXX_DIR =c++
|
|
else
|
|
CXX_DIR=
|
|
endif
|
|
if BUILD_FORTRAN_CONDITIONAL
|
|
FORTRAN_DIR =fortran
|
|
else
|
|
FORTRAN_DIR=
|
|
endif
|
|
if BUILD_JAVA_CONDITIONAL
|
|
JAVA_DIR=java
|
|
else
|
|
JAVA_DIR=
|
|
endif
|
|
if BUILD_HDF5_HL_CONDITIONAL
|
|
HDF5_HL_DIR =hl
|
|
else
|
|
HDF5_HL_DIR=
|
|
endif
|
|
if BUILD_TESTS_CONDITIONAL
|
|
TESTSERIAL_DIR =test
|
|
else
|
|
TESTSERIAL_DIR=
|
|
endif
|
|
if BUILD_TESTS_PARALLEL_CONDITIONAL
|
|
TESTPARALLEL_DIR =testpar
|
|
else
|
|
TESTPARALLEL_DIR=
|
|
endif
|
|
if BUILD_TOOLS_CONDITIONAL
|
|
TOOLS_DIR =tools
|
|
else
|
|
TOOLS_DIR=
|
|
endif
|
|
|
|
SUBDIRS = src $(TESTSERIAL_DIR) $(TESTPARALLEL_DIR) bin $(TOOLS_DIR) . \
|
|
$(CXX_DIR) $(FORTRAN_DIR) $(JAVA_DIR) $(HDF5_HL_DIR)
|
|
DIST_SUBDIRS = src test testpar tools . c++ fortran hl examples java
|
|
|
|
# Some files generated during configure that should be cleaned
|
|
DISTCLEANFILES=config/stamp1 config/stamp2
|
|
|
|
# Some files/directories generated during check that should be cleaned
|
|
CHECK_CLEANFILES+=*-tmp
|
|
|
|
# Define rules for lib, progs, check, and tests.
|
|
# These simply involve recursing into subdirectories.
|
|
test _test: check
|
|
|
|
lib progs check-p check-s:
|
|
for d in $(SUBDIRS); do \
|
|
if test $$d != .; then \
|
|
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
|
fi; \
|
|
done
|
|
|
|
# Make all, tests, and (un)install
|
|
tests:
|
|
for d in $(SUBDIRS); do \
|
|
if test $$d != .; then \
|
|
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
|
fi; \
|
|
done
|
|
|
|
# Check-clean also recurses into examples directory
|
|
check-clean:
|
|
for d in $(SUBDIRS) examples; do \
|
|
if test $$d != .; then \
|
|
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
|
fi; \
|
|
done
|
|
$(RM) -rf prefix-tmp destdir-tmp
|
|
|
|
# Some C++ compilers/linkers will create a directory named ii_files in
|
|
# the root directory, which should be cleaned.
|
|
mostlyclean-local:
|
|
if test -d ii_files; then \
|
|
$(RM) -rf ii_files; \
|
|
fi
|
|
|
|
# 'make install' will now install examples, the same as 'make install-all'.
|
|
# 'make-install-all' will be redundant but will still work.
|
|
install: install-recursive install-examples
|
|
uninstall: uninstall-recursive uninstall-examples
|
|
|
|
# 'make install-all' also installs examples
|
|
install-all:
|
|
@$(MAKE) $(AM_MAKEFLAGS) install
|
|
uninstall-all:
|
|
@$(MAKE) $(AM_MAKEFLAGS) uninstall
|
|
|
|
# Install examples in this directory and recursively
|
|
install-examples uninstall-examples:
|
|
for d in examples $(HDF5_INTERFACES) $(HL); do \
|
|
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
|
done
|
|
|
|
# Placeholder to remind users that docs are now in a separate repository.
|
|
install-doc:
|
|
@echo "docs no longer live in this tree. Use install-examples to install examples."
|
|
|
|
uninstall-doc:
|
|
@echo "docs no longer live in this tree. Use install-examples to install examples."
|
|
|
|
# `make check-install' or `make installcheck' checks that examples can
|
|
# be successfully built
|
|
installcheck-local:
|
|
if test -n "${DESTDIR}"; then \
|
|
(cd ${DESTDIR}$(bindir) && pwd && ./h5redeploy -force); \
|
|
fi
|
|
@(cd examples && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1;
|
|
|
|
# check-install is just a synonym for installcheck
|
|
check-install: installcheck
|
|
|
|
# check-all-install tests all installation methods.
|
|
# Install via different mechanism and then compare against the default.
|
|
# Fine if only libXXX.a files are different since they may have been ranlib'ed.
|
|
check-all-install:
|
|
@echo Installing to default location
|
|
$(MAKE) install
|
|
@echo Installing to different prefix location
|
|
$(MAKE) prefix=${ROOT}/prefix-tmp install
|
|
@echo Compare against the default installation.
|
|
@echo Fine if only libXXX.a files are different.
|
|
-diff -r prefix-tmp ${prefix}
|
|
@echo Installing to different $$\DESTDIR location
|
|
env DESTDIR=${ROOT}/destdir-tmp $(MAKE) install
|
|
@echo Compare against the default installation.
|
|
@echo Fine if only libXXX.a files are different.
|
|
-diff -r destdir-tmp${prefix} ${prefix}
|
|
|
|
# Only source files in the src directory include tracing information,
|
|
# so 'make trace' only needs to recurse into that directory.
|
|
trace:
|
|
@(cd src && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1;
|
|
|
|
# Run tests with different Virtual File Drivers.
|
|
# Currently, only invoke check-vfd in the test directory.
|
|
check-vfd:
|
|
for d in src test; do \
|
|
if test $$d != .; then \
|
|
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
|
fi; \
|
|
done
|
|
|
|
# Run tests with different passthrough Virtual Object Layer Connectors.
|
|
# NOTE: Will only succeed with passthrough VOL connectors that use
|
|
# the native VOL connector as the terminal connector.
|
|
check-passthrough-vol:
|
|
for d in $(SUBDIRS); do \
|
|
if test $$d != .; then \
|
|
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
|
fi; \
|
|
done
|
|
|
|
# Automake wants to make config.status depend on configure. This
|
|
# makes sense, but config.status can't always be regenerated
|
|
# properly, which can cause builds to fail.
|
|
# This is a problem for our Daily Tests, which need to be able to
|
|
# 'make distclean' reliably before running configure.
|
|
# The simple solution is to override the dependency Automake supplies
|
|
# for config.status so that it will never be regenerated.
|
|
$(top_builddir)/config.status:
|
|
|
|
# Don't include conclude.am in root Makefile; tests target needs to
|
|
# recurse into reguar subdirs.
|