mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-12-09 07:32:32 +08:00
ad8c26e9f7
This allows h5cc to be cleaned up
227 lines
8.1 KiB
Makefile
227 lines
8.1 KiB
Makefile
#
|
|
# Copyright by The HDF Group.
|
|
# 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://www.hdfgroup.org/licenses.
|
|
# 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
|
|
|
|
# include Doxygen rules (requires autoconf-archive >2016-03-20)
|
|
@DX_RULES@
|
|
|
|
# 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) utils . \
|
|
$(CXX_DIR) $(FORTRAN_DIR) $(JAVA_DIR) $(HDF5_HL_DIR)
|
|
DIST_SUBDIRS = src test testpar bin tools utils . 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;
|
|
|
|
# doxygen support
|
|
if BUILD_DOXYGEN_CONDITIONAL
|
|
doxygen: doxygen-doc
|
|
endif
|
|
|
|
# Run tests with different Virtual File Drivers.
|
|
# Currently, only invoke check-vfd in the test directory.
|
|
check-vfd:
|
|
for d in src utils 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.
|