Skip to content
Snippets Groups Projects
Commit 3d6760d4 authored by Matthieu Schaller's avatar Matthieu Schaller Committed by Peter W. Draper
Browse files

Updates to hdf5 automake macro

parent 03bdc91f
No related branches found
No related tags found
No related merge requests found
# ===========================================================================
# 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
])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment