mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-04-18 17:40:55 +08:00
[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
This commit is contained in:
parent
b2516b909a
commit
4a10dbe011
525
configure
vendored
525
configure
vendored
@ -1577,7 +1577,7 @@ Optional Features:
|
||||
--disable-dependency-tracking
|
||||
speeds up one-time build
|
||||
--enable-unsupported Allow unsupported combinations of configure options
|
||||
--enable-fortran Compile the Fortran 77/90/95 interface [default=no]
|
||||
--enable-fortran Compile the Fortran 90/95 interface [default=no]
|
||||
--enable-fortran2003 Compile the Fortran 2003 interface, must also
|
||||
specify --enable-fortran [default=no]
|
||||
--enable-cxx Compile the C++ interface [default=no]
|
||||
@ -7744,16 +7744,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
|
||||
@ -7778,146 +7776,6 @@ fi
|
||||
|
||||
|
||||
|
||||
## ----------------------------------------------------------------------
|
||||
## 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
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpiexec" >&5
|
||||
$as_echo_n "checking for mpiexec... " >&6; }
|
||||
|
||||
## 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
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $path/mpiexec" >&5
|
||||
$as_echo "$path/mpiexec" >&6; }
|
||||
RUNSERIAL="${RUNSERIAL:-none}"
|
||||
|
||||
if test -z "$RUNPARALLEL"; then
|
||||
RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}"
|
||||
fi
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
|
||||
$as_echo "none" >&6; }
|
||||
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_ext=${ac_fc_srcext-f}
|
||||
ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
|
||||
ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_fc_compiler_gnu
|
||||
|
||||
|
||||
case "$FC" in
|
||||
*mpif90*)
|
||||
## The Fortran mpich compiler. Use mpiexec from the same directory
|
||||
## if it exists.
|
||||
PARALLEL=mpif90
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpiexec" >&5
|
||||
$as_echo_n "checking for mpiexec... " >&6; }
|
||||
|
||||
## 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
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $path/mpiexec" >&5
|
||||
$as_echo "$path/mpiexec" >&6; }
|
||||
RUNSERIAL="${RUNSERIAL:-none}"
|
||||
|
||||
if test -z "$RUNPARALLEL"; then
|
||||
RUNPARALLEL="$path/mpiexec -n \$\${NPROCS:=6}"
|
||||
fi
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
|
||||
$as_echo "none" >&6; }
|
||||
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_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
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).
|
||||
@ -28022,10 +27880,7 @@ rm -f confcache
|
||||
|
||||
## 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.
|
||||
##
|
||||
# Check whether --enable-parallel was given.
|
||||
if test "${enable_parallel+set}" = set; then :
|
||||
@ -28050,26 +27905,11 @@ 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
|
||||
as_fn_error $? "An MPI compiler is being used; --enable-cxx is not allowed. Use --enable-unsupported to override this error." "$LINENO" 5
|
||||
fi
|
||||
if test "X${PARALLEL}" != "X" -a "X${THREADSAFE}" = "Xyes"; then
|
||||
as_fn_error $? "An MPI compiler is being used; --enable-threadsafe is not allowed. Use --enable-unsupported to override this error." "$LINENO" 5
|
||||
fi
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for parallel support files" >&5
|
||||
$as_echo_n "checking for parallel support files... " >&6; }
|
||||
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.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: skipped" >&5
|
||||
$as_echo "skipped" >&6; }
|
||||
;;
|
||||
@ -28081,11 +27921,12 @@ $as_echo "skipped" >&6; }
|
||||
$as_echo "provided by compiler" >&6; }
|
||||
PARALLEL=yes
|
||||
|
||||
## Try link a simple MPI program. If fail, try again with -lmpi and
|
||||
## -lmpich.
|
||||
## Try link a simple MPI program.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a simple MPI-IO C program can be linked" >&5
|
||||
$as_echo_n "checking whether a simple MPI-IO C program can be linked... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <mpi.h>
|
||||
#ifdef FC_DUMMY_MAIN
|
||||
#ifndef FC_DUMMY_MAIN_EQ_F77
|
||||
# ifdef __cplusplus
|
||||
@ -28097,211 +27938,22 @@ $as_echo "provided by compiler" >&6; }
|
||||
int
|
||||
main ()
|
||||
{
|
||||
MPI_Init()
|
||||
MPI_Init(0, (void *)0);
|
||||
MPI_File_open(0, (void *)0, 0, 0, (void *)0);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpi" >&5
|
||||
$as_echo_n "checking for MPI_Init in -lmpi... " >&6; }
|
||||
if ${ac_cv_lib_mpi_MPI_Init+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lmpi $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char MPI_Init ();
|
||||
#ifdef FC_DUMMY_MAIN
|
||||
#ifndef FC_DUMMY_MAIN_EQ_F77
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int FC_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return MPI_Init ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_mpi_MPI_Init=yes
|
||||
else
|
||||
ac_cv_lib_mpi_MPI_Init=no
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
as_fn_error $? "unable to link a simple MPI-IO C program" "$LINENO" 5
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_MPI_Init" >&5
|
||||
$as_echo "$ac_cv_lib_mpi_MPI_Init" >&6; }
|
||||
if test "x$ac_cv_lib_mpi_MPI_Init" = xyes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LIBMPI 1
|
||||
_ACEOF
|
||||
|
||||
LIBS="-lmpi $LIBS"
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_Init in -lmpich" >&5
|
||||
$as_echo_n "checking for MPI_Init in -lmpich... " >&6; }
|
||||
if ${ac_cv_lib_mpich_MPI_Init+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lmpich $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char MPI_Init ();
|
||||
#ifdef FC_DUMMY_MAIN
|
||||
#ifndef FC_DUMMY_MAIN_EQ_F77
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int FC_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return MPI_Init ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_mpich_MPI_Init=yes
|
||||
else
|
||||
ac_cv_lib_mpich_MPI_Init=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpich_MPI_Init" >&5
|
||||
$as_echo "$ac_cv_lib_mpich_MPI_Init" >&6; }
|
||||
if test "x$ac_cv_lib_mpich_MPI_Init" = xyes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LIBMPICH 1
|
||||
_ACEOF
|
||||
|
||||
LIBS="-lmpich $LIBS"
|
||||
|
||||
else
|
||||
PARALLEL=no
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
|
||||
## Then try link a simple MPI-IO program. If fail, try again with
|
||||
## -lmpio.
|
||||
if test "X$PARALLEL" = "Xyes"; then
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#ifdef FC_DUMMY_MAIN
|
||||
#ifndef FC_DUMMY_MAIN_EQ_F77
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int FC_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
MPI_File_open()
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPI_File_open in -lmpio" >&5
|
||||
$as_echo_n "checking for MPI_File_open in -lmpio... " >&6; }
|
||||
if ${ac_cv_lib_mpio_MPI_File_open+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lmpio $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char MPI_File_open ();
|
||||
#ifdef FC_DUMMY_MAIN
|
||||
#ifndef FC_DUMMY_MAIN_EQ_F77
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int FC_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return MPI_File_open ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_mpio_MPI_File_open=yes
|
||||
else
|
||||
ac_cv_lib_mpio_MPI_File_open=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpio_MPI_File_open" >&5
|
||||
$as_echo "$ac_cv_lib_mpio_MPI_File_open" >&6; }
|
||||
if test "x$ac_cv_lib_mpio_MPI_File_open" = xyes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LIBMPIO 1
|
||||
_ACEOF
|
||||
|
||||
LIBS="-lmpio $LIBS"
|
||||
|
||||
else
|
||||
PARALLEL=no
|
||||
fi
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
if test "X$HDF_FORTRAN" = "Xyes"; then
|
||||
## Change to the Fortran 90 language
|
||||
@ -28311,7 +27963,9 @@ ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest
|
||||
ac_compiler_gnu=$ac_cv_fc_compiler_gnu
|
||||
|
||||
|
||||
## Try link a simple MPI program. If fail, try again with -lmpi.
|
||||
## Try link a simple MPI program.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a simple MPI-IO Fortran program can be linked" >&5
|
||||
$as_echo_n "checking whether a simple MPI-IO Fortran program can be linked... " >&6; }
|
||||
cat > conftest.$ac_ext <<_ACEOF
|
||||
|
||||
program main
|
||||
@ -28321,98 +27975,15 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu
|
||||
end
|
||||
_ACEOF
|
||||
if ac_fn_fc_try_link "$LINENO"; then :
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpi_file_open in -lmpi" >&5
|
||||
$as_echo_n "checking for mpi_file_open in -lmpi... " >&6; }
|
||||
if ${ac_cv_lib_mpi_mpi_file_open+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lmpi $LIBS"
|
||||
cat > conftest.$ac_ext <<_ACEOF
|
||||
program main
|
||||
call mpi_file_open
|
||||
end
|
||||
_ACEOF
|
||||
if ac_fn_fc_try_link "$LINENO"; then :
|
||||
ac_cv_lib_mpi_mpi_file_open=yes
|
||||
else
|
||||
ac_cv_lib_mpi_mpi_file_open=no
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
as_fn_error $? "unable to link a simple MPI-IO Fortran program" "$LINENO" 5
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpi_mpi_file_open" >&5
|
||||
$as_echo "$ac_cv_lib_mpi_mpi_file_open" >&6; }
|
||||
if test "x$ac_cv_lib_mpi_mpi_file_open" = xyes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LIBMPI 1
|
||||
_ACEOF
|
||||
|
||||
LIBS="-lmpi $LIBS"
|
||||
|
||||
else
|
||||
PARALLEL=no
|
||||
fi
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
|
||||
## Then try link a simple MPI-IO program. If fail, try again with
|
||||
## -lmpio.
|
||||
if test "X$PARALLEL" = "Xyes"; then
|
||||
cat > conftest.$ac_ext <<_ACEOF
|
||||
|
||||
program main
|
||||
include 'mpif.h'
|
||||
integer:: ierr
|
||||
call mpi_file_open( ierr )
|
||||
end
|
||||
_ACEOF
|
||||
if ac_fn_fc_try_link "$LINENO"; then :
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpi_file_open in -lmpio" >&5
|
||||
$as_echo_n "checking for mpi_file_open in -lmpio... " >&6; }
|
||||
if ${ac_cv_lib_mpio_mpi_file_open+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lmpio $LIBS"
|
||||
cat > conftest.$ac_ext <<_ACEOF
|
||||
program main
|
||||
call mpi_file_open
|
||||
end
|
||||
_ACEOF
|
||||
if ac_fn_fc_try_link "$LINENO"; then :
|
||||
ac_cv_lib_mpio_mpi_file_open=yes
|
||||
else
|
||||
ac_cv_lib_mpio_mpi_file_open=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpio_mpi_file_open" >&5
|
||||
$as_echo "$ac_cv_lib_mpio_mpi_file_open" >&6; }
|
||||
if test "x$ac_cv_lib_mpio_mpi_file_open" = xyes; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_LIBMPIO 1
|
||||
_ACEOF
|
||||
|
||||
LIBS="-lmpio $LIBS"
|
||||
|
||||
else
|
||||
PARALLEL=no
|
||||
fi
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
## Change to the C language
|
||||
ac_ext=c
|
||||
@ -28423,19 +27994,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
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}"
|
||||
@ -28473,39 +28031,6 @@ $as_echo_n "checking prefix for running in parallel... " >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUNPARALLEL" >&5
|
||||
$as_echo "$RUNPARALLEL" >&6; }
|
||||
|
||||
## Check that we can link a simple MPI and MPI-IO application
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a simple MPI-IO program can be linked" >&5
|
||||
$as_echo_n "checking whether a simple MPI-IO program can be linked... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#ifdef FC_DUMMY_MAIN
|
||||
#ifndef FC_DUMMY_MAIN_EQ_F77
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int FC_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
MPI_Init(); MPI_File_open();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
as_fn_error $? "unable to link a simple MPI-IO application" "$LINENO" 5
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
|
||||
## There *must* be some way to run in parallel even if it's just the
|
||||
## word `none'.
|
||||
if test -z "$RUNPARALLEL"; then
|
||||
|
216
configure.ac
216
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
|
||||
@ -642,131 +640,6 @@ AC_SUBST([RUNSERIAL])
|
||||
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,61 +2380,35 @@ 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}"
|
||||
@ -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
|
||||
|
@ -205,15 +205,6 @@
|
||||
/* Define to 1 if you have the `mpe' library (-lmpe). */
|
||||
#undef HAVE_LIBMPE
|
||||
|
||||
/* Define to 1 if you have the `mpi' library (-lmpi). */
|
||||
#undef HAVE_LIBMPI
|
||||
|
||||
/* Define to 1 if you have the `mpich' library (-lmpich). */
|
||||
#undef HAVE_LIBMPICH
|
||||
|
||||
/* Define to 1 if you have the `mpio' library (-lmpio). */
|
||||
#undef HAVE_LIBMPIO
|
||||
|
||||
/* Define to 1 if you have the `nsl' library (-lnsl). */
|
||||
#undef HAVE_LIBNSL
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user