diff options
author | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2015-01-27 20:59:48 (GMT) |
---|---|---|
committer | Mohamad Chaarawi <chaarawi@hdfgroup.org> | 2015-01-27 20:59:48 (GMT) |
commit | 4a10dbe01136ec99ff776a3ba677db959a465924 (patch) | |
tree | 730c81a04f3e2d8e129aeba5ae9240a98d90a62e /configure.ac | |
parent | b2516b909a2b3c425ce1f602bfe841ac0b8efccd (diff) | |
download | hdf5-4a10dbe01136ec99ff776a3ba677db959a465924.zip hdf5-4a10dbe01136ec99ff776a3ba677db959a465924.tar.gz hdf5-4a10dbe01136ec99ff776a3ba677db959a465924.tar.bz2 |
[svn-r26055] Updates for:
Discuss and Remove Infering parallel compilers (C and Fortran) from configure.ac
https://jira.hdfgroup.uiuc.edu/browse/HDFFV-9068
Remove restriction to build shared with parallel
https://jira.hdfgroup.uiuc.edu/browse/HDFFV-9069
Cleanup parallel sections in configure.ac
https://jira.hdfgroup.uiuc.edu/browse/HDFFV-9096
tested h5committest
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 216 |
1 files changed, 19 insertions, 197 deletions
diff --git a/configure.ac b/configure.ac index d2d2b71..0bdeafd 100644 --- a/configure.ac +++ b/configure.ac @@ -608,16 +608,14 @@ fi ## a parallel library even if configure wasn't ## able to find some header file or library that ## might be required. This is defined if the -## compiler looks like a parallel compiler (e.g., -## mpicc or mpcc) or if the user explicitly states +## user explicitly states ## that a parallel library is being built by supplying ## the `--enable-parallel' configure switch. ## ## PARALLEL -- This variable is set to a non-null value if -## configure thinks we're compiling a parallel -## version of the library. +## we're building a parallel version of the library. ## -## RUNSERIAL -- This is a command which will be prepended to +## RUNSERIAL -- This is a command which will be prepended to ## the executable name to run the executable using ## a single process. For serial versions of the ## library this will normally be empty. For parallel @@ -643,131 +641,6 @@ AC_SUBST([RUNPARALLEL]) AC_SUBST([TESTPARALLEL]) ## ---------------------------------------------------------------------- -## If the compiler is obviously a parallel compiler then we're building -## a parallel version of hdf5 and should define HAVE_PARALLEL. Furthermore, -## the name of the compiler might tell us how to run the resulting -## executable. For `mpicc' the executable should be run with `mpiexec' from -## the same directory as mpicc if it exists. -## -case "$CC_BASENAME" in - mpicc) - ## The mpich compiler. Use mpiexec from the same directory if it - ## exists. - PARALLEL=mpicc - AC_MSG_CHECKING([for mpiexec]) - - ## Find the path where mpicc is located. - cmd="`echo $CC | cut -f1 -d' '`" - if (echo $cmd | grep / >/dev/null); then - path="`echo $cmd | sed 's/\(.*\)\/.*$/\1/'`" - else - for path in `echo $PATH | ${TR} ":" " "`; do - if test -x $path/$cmd; then - break - fi - done - fi - - ## Is there an mpiexec at that path? - if test -x $path/mpiexec; then - AC_MSG_RESULT([$path/mpiexec]) - RUNSERIAL="${RUNSERIAL:-none}" - - if test -z "$RUNPARALLEL"; then - RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}" - fi - else - AC_MSG_RESULT([none]) - fi - ;; - - mpcc|mpcc_r) - ## The IBM compiler - PARALLEL="$CC_BASENAME" - ;; - - *) - ## Probably not a parallel compiler, but if `--enable-parallel' - ## is defined below then we're still building a parallel hdf5. - ;; -esac - -## ---------------------------------------------------------------------- -## If the Fortran compiler is obviously a parallel compiler then we're -## building a parallel version of hdf5 and should define HAVE_PARALLEL. -## Furthermore, the name of the compiler might tell us how to run the -## resulting executable. For `mpif90' the executable should be run with -## `mpiexec' from the same directory as mpif90 if it exists. -## - -if test "X$HDF_FORTRAN" = "Xyes" ; then - ## Change to the Fortran 90 language - AC_LANG_PUSH(Fortran) - - case "$FC" in - *mpif90*) - ## The Fortran mpich compiler. Use mpiexec from the same directory - ## if it exists. - PARALLEL=mpif90 - AC_MSG_CHECKING([for mpiexec]) - - ## Find the path where mpif90 is located. - cmd=`echo $FC |cut -f1 -d' '` - if (echo $cmd |grep / >/dev/null); then - path="`echo $cmd |sed 's/\(.*\)\/.*$/\1/'`" - else - for path in `echo $PATH | ${TR} ":" " "`; do - if test -x $path/$cmd; then - break; - fi - done - fi - - ## Is there an mpiexec at that path? - if test -x $path/mpiexec; then - AC_MSG_RESULT([$path/mpiexec]) - RUNSERIAL="${RUNSERIAL:-none}" - - if test -z "$RUNPARALLEL"; then - RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}" - fi - else - AC_MSG_RESULT([none]) - fi - ;; - - *mpxlf* | *mpxlf_r* | *mpxlf90* | *mpxlf90_r* | *mpxlf95* | *mpxlf95_r*) - ## The IBM compiler - PARALLEL="$FC" - ;; - - *) - ## Probably not a parallel compiler, but if `--enable-parallel' - ## is defined below then we're still building a parallel hdf5. - ;; - esac - - ## Change to the C language - AC_LANG_POP(Fortran) -fi - -## ----------------------------------------------------------------------------- -## If shared libraries are being used with parallel, disable them, unless the -## user explicity enables them via the '--enable-shared' option. - -if test "X${enable_shared}" = "X" -a "X${enable_parallel}" = "Xyes"; then - echo ' shared libraries disabled in parallel' - enable_shared="no" -elif test "X${enable_shared}" = "Xyes" -a "X${enable_parallel}" = "Xyes"; then - echo ' shared libraries explicitly enabled by user' -elif test "X${enable_shared}" = "X" -a "X${PARALLEL}" != "X"; then - echo ' shared libraries disabled when a parallel compiler is being used' - enable_shared="no" -elif test "X${enable_shared}" = "Xyes" -a "X${PARALLEL}" != "X"; then - echo ' shared libraries explicitly enabled by user' -fi - -## ---------------------------------------------------------------------- ## Fortran libraries are not currently supported on Mac. Disable them. ## (this is overridable with --enable-unsupported). ## @@ -2471,10 +2344,7 @@ AC_CACHE_SAVE ## What header files and libraries do we have to look for for parallel ## support? For the most part, search paths are already specified with -## CPPFLAGS and LDFLAGS or are known to the compiler. If the user says -## `--disable-parallel' but specifies a known parallel compiler (like mpicc -## or mpcc) then parallel support is enabled but configure doesn't search -## for any parallel header files or libraries. +## CPPFLAGS and LDFLAGS or are known to the compiler. ## AC_ARG_ENABLE([parallel], [AS_HELP_STRING([--enable-parallel], @@ -2497,25 +2367,10 @@ if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then fi fi -## It's possible to build in parallel by specifying a parallel compiler -## without using the --enable-parallel flag. This isn't allowed with -## C++ or threadsafe, either, unless the --enable-unsupported flag -## has also been specified. -if test "X${ALLOW_UNSUPPORTED}" != "Xyes"; then - if test "X${PARALLEL}" != "X" -a "X${enable_cxx}" = "Xyes" ; then - AC_MSG_ERROR([An MPI compiler is being used; --enable-cxx is not allowed. Use --enable-unsupported to override this error.]) - fi - if test "X${PARALLEL}" != "X" -a "X${THREADSAFE}" = "Xyes"; then - AC_MSG_ERROR([An MPI compiler is being used; --enable-threadsafe is not allowed. Use --enable-unsupported to override this error.]) - fi -fi - AC_MSG_CHECKING([for parallel support files]) case "X-$enable_parallel" in X-|X-no|X-none) - ## Either we are not compiling for parallel or the header and - ## library files and locations are known to the compiler (this is - ## the case for a correct installation of mpicc for instance). + ## We are not compiling for parallel. AC_MSG_RESULT([skipped]) ;; @@ -2525,62 +2380,36 @@ case "X-$enable_parallel" in AC_MSG_RESULT([provided by compiler]) PARALLEL=yes - ## Try link a simple MPI program. If fail, try again with -lmpi and - ## -lmpich. - AC_TRY_LINK(, [MPI_Init()],, - [AC_CHECK_LIB([mpi], [MPI_Init],, - [AC_CHECK_LIB([mpich], [MPI_Init],, [PARALLEL=no])])]) - - ## Then try link a simple MPI-IO program. If fail, try again with - ## -lmpio. - if test "X$PARALLEL" = "Xyes"; then - AC_TRY_LINK(, [MPI_File_open()],, - [AC_CHECK_LIB([mpio], [MPI_File_open],, [PARALLEL=no])]) - fi + ## Try link a simple MPI program. + AC_MSG_CHECKING([whether a simple MPI-IO C program can be linked]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mpi.h>]], + [[ MPI_Init(0, (void *)0); + MPI_File_open(0, (void *)0, 0, 0, (void *)0);]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([unable to link a simple MPI-IO C program])]) if test "X$HDF_FORTRAN" = "Xyes"; then ## Change to the Fortran 90 language AC_LANG_PUSH(Fortran) - ## Try link a simple MPI program. If fail, try again with -lmpi. + ## Try link a simple MPI program. + AC_MSG_CHECKING([whether a simple MPI-IO Fortran program can be linked]) AC_LINK_IFELSE([ program main include 'mpif.h' integer:: ierr call mpi_file_open( ierr ) - end],, - [AC_CHECK_LIB([mpi], [mpi_file_open],, [PARALLEL=no])]) - - ## Then try link a simple MPI-IO program. If fail, try again with - ## -lmpio. - if test "X$PARALLEL" = "Xyes"; then - AC_LINK_IFELSE([ - program main - include 'mpif.h' - integer:: ierr - call mpi_file_open( ierr ) - end],, - [AC_CHECK_LIB([mpio], [mpi_file_open],, [PARALLEL=no])]) - fi + end], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([unable to link a simple MPI-IO Fortran program])]) ## Change to the C language AC_LANG_POP(Fortran) fi ## Set RUNPARALLEL to mpiexec if not set yet. - ## Check for building on Cray if RUNPARALLEL is not yet set by checking - ## for 'aprun' command (which is the parallel job launcher, like mpiexec). - if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then - ## Find the path where aprun is located. - for path in `echo $PATH | ${TR} ":" " "`; do - if test -x $path/aprun; then - RUNPARALLEL="aprun -q -n \$\${NPROCS:=6}" - break; - fi - done - fi - - ## Set RUNPARALLEL to mpiexec if not set yet. if test "X$PARALLEL" = "Xyes" -a -z "$RUNPARALLEL"; then RUNPARALLEL="mpiexec -n \$\${NPROCS:=6}" fi @@ -2610,13 +2439,6 @@ if test -n "$PARALLEL"; then AC_MSG_CHECKING([prefix for running in parallel]) AC_MSG_RESULT([$RUNPARALLEL]) - ## Check that we can link a simple MPI and MPI-IO application - AC_MSG_CHECKING([whether a simple MPI-IO program can be linked]) - AC_TRY_LINK(, [MPI_Init(); MPI_File_open();], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([unable to link a simple MPI-IO application])]) - ## There *must* be some way to run in parallel even if it's just the ## word `none'. if test -z "$RUNPARALLEL"; then |