mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
bfbfda0cae
Improvement Description: If the library is built in parallel mode, then name the "h5cc" and "h5fc" programs "h5pcc" and "h5pfc" resp. This saves the user from worrying about mixing serial and parallel builds of the library and having to specify the pathnames and so-forth. Platforms tested: Linux (w/ parallel & Fortran) Modi4 (w/ parallel & Fortran) Sol (Serial & Fortran & C++) Misc. update: Updated release/docs/RELEASE
387 lines
16 KiB
Makefile
387 lines
16 KiB
Makefile
##------------------------------------------------------------ -*- 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 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 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@
|