diff --git a/m4/ax_lib_hdf5.m4 b/m4/ax_lib_hdf5.m4 index 68528b15c083592cf76d4deb9a246b75cb2bb1c6..918cc76d693dbccd18264c4661bc5ff13b773c72 100644 --- a/m4/ax_lib_hdf5.m4 +++ b/m4/ax_lib_hdf5.m4 @@ -1,5 +1,5 @@ # =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_lib_hdf5.html +# https://www.gnu.org/software/autoconf-archive/ax_lib_hdf5.html # =========================================================================== # # SYNOPSIS @@ -38,11 +38,12 @@ # AC_SUBST(HDF5_FC) # AC_SUBST(HDF5_FFLAGS) # AC_SUBST(HDF5_FLIBS) +# AC_SUBST(HDF5_TYPE) # AC_DEFINE(HAVE_HDF5) # # and sets with_hdf5="yes". Additionally, the macro sets # with_hdf5_fortran="yes" if a matching Fortran wrapper script is found. -# Note that Autconf's Fortran support is not used to perform this check. +# Note that Autoconf's Fortran support is not used to perform this check. # H5CC and H5FC will contain the appropriate serial or parallel HDF5 # wrapper script locations. # @@ -79,6 +80,9 @@ # AC_MSG_ERROR([Unable to find HDF5, we need parallel HDF5.]) # fi # +# The HDF5_TYPE environment variable returns "parallel" or "serial", +# depending on which type of library is found. +# # LICENSE # # Copyright (c) 2009 Timothy Brown <tbrown@freeshell.org> @@ -89,7 +93,7 @@ # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 11 +#serial 19 AC_DEFUN([AX_LIB_HDF5], [ @@ -142,6 +146,7 @@ HDF5_LIBS="" HDF5_FC="" HDF5_FFLAGS="" HDF5_FLIBS="" +HDF5_TYPE="" dnl Try and find hdf5 compiler tools and options. if test "$with_hdf5" = "yes"; then @@ -158,6 +163,13 @@ if test "$with_hdf5" = "yes"; then AC_MSG_CHECKING([Using provided HDF5 C wrapper]) AC_MSG_RESULT([$H5CC]) fi + AC_MSG_CHECKING([for HDF5 type]) + AS_CASE([$H5CC], + [*h5pcc], [HDF5_TYPE=parallel], + [*h5cc], [HDF5_TYPE=serial], + [HDF5_TYPE=neither]) + AC_MSG_RESULT([$HDF5_TYPE]) + AC_MSG_CHECKING([for HDF5 libraries]) if test ! -f "$H5CC" || test ! -x "$H5CC"; then dnl Check if we already have HDF5 for C. @@ -211,9 +223,9 @@ HDF5 support is being disabled. HDF5_SHOW=$(eval $H5CC -show) dnl Get the actual compiler used - HDF5_CC=$(eval $H5CC -show | $AWK '{print $[]1}') + HDF5_CC=$(eval $H5CC -show | head -n 1 | $AWK '{print $[]1}') if test "$HDF5_CC" = "ccache"; then - HDF5_CC=$(eval $H5CC -show | $AWK '{print $[]2}') + HDF5_CC=$(eval $H5CC -show | head -n 1 | $AWK '{print $[]2}') fi dnl h5cc provides both AM_ and non-AM_ options @@ -249,21 +261,22 @@ HDF5 support is being disabled. for arg in $HDF5_SHOW $HDF5_tmp_flags ; do case "$arg" in -I*) echo $HDF5_CPPFLAGS | $GREP -e "$arg" 2>&1 >/dev/null \ - || HDF5_CPPFLAGS="$arg $HDF5_CPPFLAGS" + || HDF5_CPPFLAGS="$HDF5_CPPFLAGS $arg" ;; -L*) echo $HDF5_LDFLAGS | $GREP -e "$arg" 2>&1 >/dev/null \ - || HDF5_LDFLAGS="$arg $HDF5_LDFLAGS" + || HDF5_LDFLAGS="$HDF5_LDFLAGS $arg" ;; -l*) echo $HDF5_LIBS | $GREP -e "$arg" 2>&1 >/dev/null \ - || HDF5_LIBS="$arg $HDF5_LIBS" + || HDF5_LIBS="$HDF5_LIBS $arg" ;; esac done - HDF5_LIBS="$HDF5_LIBS -lhdf5" + HDF5_LIBS="-lhdf5 $HDF5_LIBS" AC_MSG_RESULT([yes (version $[HDF5_VERSION])]) dnl See if we can compile + AC_LANG_PUSH([C]) ax_lib_hdf5_save_CC=$CC ax_lib_hdf5_save_CPPFLAGS=$CPPFLAGS ax_lib_hdf5_save_LIBS=$LIBS @@ -279,12 +292,13 @@ HDF5 support is being disabled. AC_MSG_WARN([Unable to compile HDF5 test program]) fi dnl Look for HDF5's high level library - AC_HAVE_LIBRARY([hdf5_hl], [HDF5_LIBS="$HDF5_LIBS -lhdf5_hl"], [], []) + AC_HAVE_LIBRARY([hdf5_hl], [HDF5_LIBS="-lhdf5_hl $HDF5_LIBS"], [], []) CC=$ax_lib_hdf5_save_CC CPPFLAGS=$ax_lib_hdf5_save_CPPFLAGS LIBS=$ax_lib_hdf5_save_LIBS LDFLAGS=$ax_lib_hdf5_save_LDFLAGS + AC_LANG_POP([C]) AC_MSG_CHECKING([for matching HDF5 Fortran wrapper]) dnl Presume HDF5 Fortran wrapper is just a name variant from H5CC @@ -299,14 +313,14 @@ HDF5 support is being disabled. do case "$arg" in #( -I*) echo $HDF5_FFLAGS | $GREP -e "$arg" >/dev/null \ - || HDF5_FFLAGS="$arg $HDF5_FFLAGS" + || HDF5_FFLAGS="$HDF5_FFLAGS $arg" ;;#( -L*) echo $HDF5_FFLAGS | $GREP -e "$arg" >/dev/null \ - || HDF5_FFLAGS="$arg $HDF5_FFLAGS" + || HDF5_FFLAGS="$HDF5_FFLAGS $arg" dnl HDF5 installs .mod files in with libraries, dnl but some compilers need to find them with -I echo $HDF5_FFLAGS | $GREP -e "-I${arg#-L}" >/dev/null \ - || HDF5_FFLAGS="-I${arg#-L} $HDF5_FFLAGS" + || HDF5_FFLAGS="$HDF5_FFLAGS -I${arg#-L}" ;; esac done @@ -337,7 +351,9 @@ HDF5 support is being disabled. AC_SUBST([HDF5_FC]) AC_SUBST([HDF5_FFLAGS]) AC_SUBST([HDF5_FLIBS]) + AC_SUBST([HDF5_TYPE]) AC_DEFINE([HAVE_HDF5], [1], [Defined if you have HDF5 support]) fi fi ]) +