hdf5/config/mpich
MuQun Yang 5f0decf371 [svn-r12045] Purpose:
Setting appropriate macro during configuration.
Description:
We found special collective IO doesn't work in mpich 1.2.5 and 1.2.6.
Solution:
Use this script to detect this during configuration and set the correct macro.

Platforms tested:
heping,mir and copper

Misc. update:
2006-03-09 09:54:35 -05:00

83 lines
2.9 KiB
Bash

# -*- 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.
# mpich2 do not support it correctly. But mpich2 reports small version number
# indistiguishable from mpich. Some mpich2 reports blank, some reports 1.0.2.
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'
;;
1.0.2)
# mpich2 is recycling the version number, some report
# 1.0.2, some report blank.
hdf5_mpi_complex_derived_datatype_works='no'
;;
"")
# got blank ccversion. Assume it is bad a mpich2.
hdf5_mpi_complex_derived_datatype_works='no'
;;
*)
# assume okay
;;
esac
fi
fi
if [ -z "$hdf5_mpi_special_collective_io_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-6]*)
hdf5_mpi_special_collective_io_works='no'
;;
1.0.2)
# mpich2 is recycling the version number, some report
# 1.0.2, some report blank.
hdf5_mpi_special_collective_io_works='no'
;;
"")
# got blank ccversion. Assume it is bad a mpich2.
hdf5_mpi_special_collective_io_works='no'
;;
*)
# assume okay
;;
esac
fi
fi