mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-30 15:32:37 +08:00
ea3624e133
---------------------- ./INSTALL ./configure.in ./configure [REGENERATED] ./src/H5config.h.in [REGENERATED] Improvements for parallel library. If you have a properly working mpicc you should be able to just say: $ CC=mpicc ./configure and you will see checking for mpirun... /usr/local/mpi/bin/mpirun checking for parallel support files... skipped checking how to run on one processor... /usr/local/mpi/bin/mpirun -np 1 checking how to run in parallel... /usr/local/mpi/bin/mpirun -np $$NPROCS To quote from the INSTALL file.... *** Parallel vs. serial library The HDF5 library can be configured to use MPI and MPI-IO for parallelizm on a distributed multi-processor system. The easy way to do this is to have a properly installed parallel compiler (e.g., MPICH's mpicc or IBM's mpcc) and supply that executable as the value of the CC environment variable: [NOTE: mpcc is not tested yet] $ CC=mpcc ./configure $ CC=/usr/local/mpi/bin/mpicc ./configure If no such wrapper script is available then you must specify your normal C compiler along with the distribution of MPI/MPI-IO which is to be used (values other than `mpich' will be added at a later date): $ ./configure --enable-parallel=mpich If the MPI/MPI-IO include files and/or libraries cannot be found by the compiler then their directories must be given as arguments to CPPFLAGS and/or LDFLAGS: $ CPPFLAGS=-I/usr/local/mpi/include \ LDFLAGS=-L/usr/local/mpi/lib/LINUX/ch_p4 \ ./configure --enable-parallel=mpich If a parallel library is being built then configure attempts to determine how to run a parallel application on one processor and on many processors. If the compiler is mpicc and the user hasn't specified values for RUNSERIAL and RUNPARALLEL then configure chooses `mpirun' from the same directory as `mpicc': RUNSERIAL: /usr/local/mpi/bin/mpirun -np 1 RUNPARALLEL: /usr/local/mpi/bin/mpirun -np $${NPROCS:=2} The `$${NPROCS:=2}' will be substituted with the value of the NPROCS environment variable at the time `make check' is run (or the value 2). ./testpar/Makefile.in Saying `make check' (or `make test') will run the tests on two processors by default. If you define NPROCS then that many processors are used instead: $ NPROCS=4 make check ./configure.in Fixed (hopefully) bugs with detecting whether __attribute__ and __FUNCTION__ are special keywords for the compiler. ./Makefile.in Saying `make install' from the top level directory shows instructions for using shared libraries. ./config/commence.in ./src/Makefile.in ./test/Makefile.in ./testpar/Makefile.in ./tools/Makefile.in Moved the @top_srcdir@ into the makefiles because it was expanded too early and had the wrong value. ./INSTALL Added a warning that if the wrong version of hdf4 tools are installed then `make check' will fail in the tools directory.
118 lines
3.8 KiB
Makefile
118 lines
3.8 KiB
Makefile
#------------------------------------------------------------- -*- 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 .o .lo
|
|
@SET_MAKE@
|
|
|
|
# Programs
|
|
SHELL=/bin/sh
|
|
CC=@CC@
|
|
CFLAGS=@CFLAGS@
|
|
CPPFLAGS=@CPPFLAGS@
|
|
LDFLAGS=@LDFLAGS@
|
|
LIBS=@LIBS@
|
|
AR=@AR@
|
|
RANLIB=@RANLIB@
|
|
RM=rm -f
|
|
CP=cp
|
|
INSTALL=@INSTALL@
|
|
INSTALL_PROGRAM=@INSTALL_PROGRAM@
|
|
INSTALL_DATA=@INSTALL_DATA@
|
|
RUNSERIAL=@RUNSERIAL@
|
|
RUNPARALLEL=@RUNPARALLEL@
|
|
RUNTEST=$(RUNSERIAL)
|
|
TRACE=:
|
|
|
|
# Installation points
|
|
ROOT=@ROOT@
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
bindir=@bindir@
|
|
libdir=@libdir@
|
|
includedir=@includedir@
|
|
|
|
# Shared libraries
|
|
LT=$(top_srcdir)/libtool
|
|
LT_COMPILE=$(LT) --mode=compile $(CC)
|
|
LT_LINK_LIB=$(LT) --mode=link $(CC) -rpath $(libdir)
|
|
LT_LINK_EXE=$(LT) --mode=link $(CC)
|
|
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)
|
|
|
|
|
|
# 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.
|
|
#
|
|
# Graphically, the dependencies are:
|
|
#
|
|
# configure.in
|
|
# | |
|
|
# +--------------------+ +-------------------+
|
|
# | |
|
|
# stamp1 configure
|
|
# | |
|
|
# | config.status
|
|
# | | |
|
|
# | +-------------------------------------+ |
|
|
# | | |
|
|
# stamp2 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.
|
|
#
|
|
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'.
|
|
#------------------------------------------------------------------------------
|