summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MANIFEST1
-rw-r--r--config/ia64-linux-gnu17
-rw-r--r--config/linux-gnulibc118
-rw-r--r--config/mpich42
4 files changed, 47 insertions, 31 deletions
diff --git a/MANIFEST b/MANIFEST
index dcc5972..918dcb1 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -86,6 +86,7 @@
./config/linux-gnuaout
./config/linux-gnulibc1
./config/linux-gnulibc2
+./config/mpich
./config/nv1-cray
./config/pgi-flags
./config/powerpc-apple
diff --git a/config/ia64-linux-gnu b/config/ia64-linux-gnu
index 77535d5..307377e 100644
--- a/config/ia64-linux-gnu
+++ b/config/ia64-linux-gnu
@@ -48,18 +48,5 @@ case $CC_BASENAME in
;;
esac
-# We know that for mpich 1.2.5 and previous version, complicated derived datatype is
-# supported, we need to set the macro to hdf5_mpi_complex_derived_datatype_works to no.
-# Notice that this fix will only work if the compiler name is mpicc and mpi package is
-# mpich 1.x.x.
-if [ -z "$hdf5_mpi_complex_derived_datatype_works" -a $CC_BASENAME = mpicc ]; then
- ccversion=`$CC -v 2>&1 | sed -e 's/.*for //p'`
- ccversion1=`echo $ccversion | cut -f1 -d.`
- ccversion2=`echo $ccversion | cut -f2 -d.`
- ccversiontemp=`echo $ccversion | cut -f3 -d.`
- ccversion3=`echo $ccversiontemp | cut -c1`
- ccversionval=`expr $ccversion1 \* 100 + $ccversion2 \* 10 + $ccversion3`
- if [ $ccversionval -lt 126 ]; then
- hdf5_mpi_complex_derived_datatype_works='no'
- fi
-fi
+# Check MPICH settings
+. $srcdir/config/mpich
diff --git a/config/linux-gnulibc1 b/config/linux-gnulibc1
index ebc9ed7..ea9db6b 100644
--- a/config/linux-gnulibc1
+++ b/config/linux-gnulibc1
@@ -34,19 +34,5 @@ fi
# Figure out Intel C compiler flags
. $srcdir/config/intel-flags
-# We know that for mpich 1.2.5 and previous version, complicated derived datatype is
-# supported, we need to set the macro to hdf5_mpi_complex_derived_datatype_works to no.
-# Notice that this fix will only work if the compiler name is mpicc and mpi package is
-# mpich 1.x.x.
-
-if [ -z "$hdf5_mpi_complex_derived_datatype_works" -a \( $CC_BASENAME = mpicc -o $CC_BASENAME = mpiicc \) ]; then
- ccversion=`$CC -v 2>&1 | sed -e 's/.*for //p'`
- ccversion1=`echo $ccversion | cut -f1 -d.`
- ccversion2=`echo $ccversion | cut -f2 -d.`
- ccversiontemp=`echo $ccversion | cut -f3 -d.`
- ccversion3=`echo $ccversiontemp | cut -c1`
- ccversionval=`expr $ccversion1 \* 100 + $ccversion2 \* 10 + $ccversion3`
- if [ $ccversionval -lt 126 ]; then
- hdf5_mpi_complex_derived_datatype_works='no'
- fi
-fi
+# Check MPICH settings
+. $srcdir/config/mpich
diff --git a/config/mpich b/config/mpich
new file mode 100644
index 0000000..3e63e56
--- /dev/null
+++ b/config/mpich
@@ -0,0 +1,42 @@
+# -*- shell-script -*-
+#
+# Copyright by the Board of Trustees of the University of Illinois.
+# 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 files COPYING and Copyright.html. COPYING can be found at the root
+# of the source code distribution tree; Copyright.html can be found at the
+# root level of an installed copy of the electronic HDF5 document set and
+# is linked from the top-level documents page. It can also be found at
+# http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
+# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
+
+# This file should be sourced into configure if the compiler is the
+# MPICH compiler script. It is careful not to do anything if the compiler
+# is not MPICH.
+
+# Check if mpicc can support complicated derived datatype correctly.
+# We know that mpich 1.2.4 and 1.2.5 do not support it correctly. We assume
+# older versions do not work either. We don't know of a way of testing its
+# correctness without the risk of hanging the configure process. So, we
+# set the configure variable hdf5_mpi_complex_derived_datatype_works to no.
+# Notice that this code works only if the mpicc compiler shows its $MPIVERSION
+# properly. It is confirmed mpicc does that as far back as v1.2.3.
+
+if [ -z "$hdf5_mpi_complex_derived_datatype_works" ]; then
+ ccversion=`$CC -v 2>/dev/null`
+ # mpich compiler will give "mpicc for 1.2.x ..."
+ if echo "$ccversion" | grep '^mpicc for' > /dev/null ; then
+ # $CC is an MPICH compiler. Grab the version numbers.
+ ccversion=`echo $ccversion | cut -f3 -d' '`
+ case "$ccversion" in
+ 1.2.[0-5]*)
+ hdf5_mpi_complex_derived_datatype_works='no'
+ ;;
+ *)
+ # assume okay
+ ;;
+ esac
+ fi
+fi