On Fri, Feb 03, 2006 at 01:55:25PM -0700, Orion Poplawski wrote: > I maintain hdf 4.2r1 in FE. I'm running into an issue with > compatibility with netcdf. By default, hdf provides the netcdf api as > well, unless compiled with -DHAVE_NETCDF. > I also maintain gdl, which can be linked against both hdf and netcdf, > but I get complaints. I don't know if gdl can use the netcdf API in the > hdf library or not - looking into it (if you know, tell me!). What I know is that hdf4 implements the netcdf 2 API. The netcdf 3 is backward compatible, so it also contains the netcdf 2 API. > Those of you who use both, what would you like to see? I believe it is right to have the netcdf includes that come with hdf in the hdf include dir, not directly in /usr/include. This is like that allready. In case it could be of use to you, I attach to my mail the autoconf files I use when I want to detect hdf4 or netcdf, in case it is of use for you. -- Pat
dnl example of use dnl AC_CHECK_NETCDF( dnl [ dnl LIBS="$LIBS $NC_LIBS" dnl LDFLAGS="$LDFLAGS $NC_LDFLAGS" dnl CPPFLAGS="$CPPFLAGS $NC_CPPFLAGS" dnl ], dnl [ dnl echo "*** Use --with-netcdf for the root netcdf directory." dnl echo "*** Otherwise use --with-netcdf-include switch for includes directory" dnl echo "*** and --with-netcdf-libdir switch for libraries directory." dnl AC_MSG_ERROR([netcdf library and netcdf headers are required.]) dnl ] dnl ) # Check for the netcdf library. # AC_CHECK_NETCDF([ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],[INTERFACE-NR]) # if interface number is given, check for a specific interface # sets NC_LDFLAGS, NC_LIBS, and, by calling other macros # NC_CPPFLAGS and maybe NC_NETCDF_3_CPPFLAG AC_DEFUN([AC_CHECK_NETCDF], [ AC_ARG_WITH([netcdf], [AS_HELP_STRING([--with-netcdf=ARG],[netcdf directory])], [NC_PATH=$withval], [NC_PATH=""]) AC_ARG_WITH([netcdf_include], [AS_HELP_STRING([--with-netcdf-include=ARG],[netcdf include directory])], [NC_PATH_INC=$withval], [NC_PATH_INC=""]) AC_ARG_WITH([netcdf_libdir], [AS_HELP_STRING([--with-netcdf-libdir=ARG],[netcdf library directory])], [NC_PATH_LIBDIR=$withval], [NC_PATH_LIBDIR=""]) AS_IF([test "z$NC_PATH" != "z"], [ AS_IF([test "z$NC_PATH_LIBDIR" = "z"],[NC_PATH_LIBDIR="$NC_PATH/lib"]) AS_IF([test "z$NC_PATH_INC" = "z"],[NC_PATH_INC="$NC_PATH/include"]) ]) ac_netcdf_ok='no' NC_LIBS= NC_LDFLAGS= ac_nc_save_LDFLAGS=$LDFLAGS ac_nc_save_LIBS=$LIBS ac_check_nc_func_checked='ncopen' ac_check_nc_interface= dnl the interface number isn't quoted with "" otherwise a newline dnl following the number isn't stripped. m4_if([$3],[],[ac_check_nc_interface=2],[ac_check_nc_interface=$3]) AS_IF([test "z$ac_check_nc_interface" = 'z3'], [ac_check_nc_func_checked='nc_open']) AS_IF([test "z$NC_PATH_LIBDIR" != "z"], [ NC_LDFLAGS="-L$NC_PATH_LIBDIR" LDFLAGS="$LDFLAGS $NC_LDFLAGS" dnl the autoconf internal cache isn't avoided because we really check for dnl libnetcdf, other libraries that implement the same api have other names dnl AC_LINK_IFELSE([AC_LANG_CALL([],[$ac_check_func_checked])], AC_CHECK_LIB([netcdf],[$ac_check_nc_func_checked], [ NC_LIBS='-lnetcdf' ac_netcdf_ok='yes' ]) ], [ for ac_netcdf_libdir in "" \ /usr/local/netcdf-${ac_check_nc_interface}/lib \ /opt/netcdf-${ac_check_nc_interface}/lib \ /usr/netcdf-${ac_check_nc_interface}/lib \ /usr/local/lib/netcdf-${ac_check_nc_interface} \ /opt/lib/netcdf-${ac_check_nc_interface} \ /usr/lib/netcdf-${ac_check_nc_interface} \ /usr/local/netcdf/lib /opt/netcdf/lib \ /usr/netcdf/lib /usr/local/lib/netcdf /opt/lib/netcdf \ /usr/lib/netcdf ; do AS_IF([test "z$ac_netcdf_libdir" = 'z'], [NC_LDFLAGS=], [ AC_MSG_CHECKING([for netcdf libraries in $ac_netcdf_libdir]) NC_LDFLAGS="-L$ac_netcdf_libdir" ]) LDFLAGS="$LDFLAGS $NC_LDFLAGS" LIBS="$LIBS -lnetcdf" dnl we have to avoid the autoconf internal cache in that case AC_LINK_IFELSE([AC_LANG_CALL([],[$ac_check_nc_func_checked])], [ NC_LIBS='-lnetcdf' ac_netcdf_ok='yes' AS_IF([test "z$ac_netcdf_libdir" != 'z'],[AC_MSG_RESULT([yes])]) ], [ AS_IF([test "z$ac_netcdf_libdir" != 'z'],[AC_MSG_RESULT([no])]) ]) AS_IF([test $ac_netcdf_ok = 'yes'],[break]) LDFLAGS=$ac_nc_save_LDFLAGS LIBS=$ac_nc_save_LIBS done ]) LDFLAGS=$ac_nc_save_LDFLAGS LIBS=$ac_nc_save_LIBS AC_SUBST([NC_LDFLAGS]) AC_SUBST([NC_LIBS]) ac_netcdf_header='no' AS_IF([test "z$NC_PATH_INC" != "z"], [ AC_CHECK_NETCDF_HEADER([$NC_PATH_INC], [ac_netcdf_header='yes'], [ac_netcdf_header='no'], [$ac_check_nc_interface]) ], [ for ac_netcdf_incdir in "" \ /usr/local/netcdf-${ac_check_nc_interface}/include \ /opt/netcdf-${ac_check_nc_interface}/include \ /usr/netcdf-${ac_check_nc_interface}/include \ /usr/local/include/netcdf-${ac_check_nc_interface} \ /opt/include/netcdf-${ac_check_nc_interface} \ /usr/include/netcdf-${ac_check_nc_interface} \ /usr/local/netcdf/include \ /opt/netcdf/include /usr/netcdf/include /usr/local/include/netcdf \ /opt/include/netcdf /usr/include/netcdf ; do AC_MSG_NOTICE([searching netcdf includes in $ac_netcdf_incdir]) AC_CHECK_NETCDF_HEADER([$ac_netcdf_incdir],[ac_netcdf_header='yes'], [ac_netcdf_header='no'],[$ac_check_nc_interface]) AS_IF([test $ac_netcdf_header = 'yes'],[break]) done ]) AS_IF([test "$ac_netcdf_ok" = 'no' -o "$ac_netcdf_header" = 'no'], [m4_if([$2], [], [:], [$2])], [m4_if([$1], [], [:], [$1])]) ])
# Check for the netcdf header. # AC_CHECK_NETCDF_HEADER([INCLUDE-DIR],[ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND],[INTERFACE-NR]) # if interface number is given, check for a specific interface # sets NC_CPPFLAGS and maybe NC_NETCDF_3_CPPFLAG AC_DEFUN([AC_CHECK_NETCDF_HEADER], [ NC_CPPFLAGS= ac_netcdf_h='no' ac_netcdf_h_compile='no' ac_netcdf_h_preproc='no' ac_nc_include_dir= ac_nc_header_interface= ac_nc_save_CPPFLAGS=$CPPFLAGS m4_if([$1],[],[:],[ ac_nc_include_dir="$1" AS_IF([test "z$ac_nc_include_dir" != "z"], [CPPFLAGS="$CPPFLAGS -I$ac_nc_include_dir"]) ]) m4_if([$4],[],[:],[ac_nc_header_interface=$4]) dnl dont use AC_CHECK_HEADERS to avoid autoconf internal caching AC_MSG_CHECKING([for netcdf.h with compiler]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <netcdf.h>]])], [ AC_MSG_RESULT([yes]) ac_netcdf_h_compile='yes' ], [ AC_MSG_RESULT([no]) ac_netcdf_h_compile='no' ]) AC_MSG_CHECKING([for netcdf.h with preprocessor]) AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <netcdf.h>]])], [ AC_MSG_RESULT([yes]) ac_netcdf_h_preproc='yes' ], [ AC_MSG_RESULT([no]) ac_netcdf_h_preproc='no' ]) CPPFLAGS="$ac_nc_save_CPPFLAGS" AS_IF([test $ac_netcdf_h_compile = 'yes'], [ac_netcdf_h='yes' AS_IF([test "z$ac_nc_header_interface" = 'z3'], [AC_CHECK_NETCDF_3_HEADER([$1], [ac_netcdf_h='yes'],[ac_netcdf_h='no'])]) ]) AS_IF([test "$ac_netcdf_h" = 'yes'], [ AS_IF([test "z$ac_nc_include_dir" != "z"], [NC_CPPFLAGS="-I$ac_nc_include_dir"]) m4_if([$2], [], [:], [$2]) ], [m4_if([$3], [], [:], [$3])]) AC_SUBST([NC_CPPFLAGS]) ]) AC_DEFUN([AC_CHECK_NETCDF_3_HEADER], [ NC_NETCDF_3_CPPFLAG= ac_check_netcdf_3_include= ac_check_netcdf_3_header='no' ac_nc_save_CPPFLAGS=$CPPFLAGS AC_MSG_CHECKING([for netcdf 3 interface]) m4_if([$1],[],[:],[ ac_check_netcdf_3_include="$1" ]) AS_IF([test "z$ac_check_netcdf_3_include" != "z"], [CPPFLAGS="$CPPFLAGS -I$ac_check_netcdf_3_include"]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netcdf.h>]], [[int status; int ncid; status = nc_open("foo.nc", 0, &ncid); char vernum; vernum = *nc_inq_libvers();]])], [ AS_IF([test "z$ac_check_netcdf_3_include" != "z"], [NC_NETCDF_3_CPPFLAG="-I$ac_check_netcdf_3_include"]) ac_check_netcdf_3_header='yes' ],[ac_check_netcdf_3_header='no']) CPPFLAGS=$ac_nc_save_CPPFLAGS AS_IF([test "$ac_check_netcdf_3_header" = 'yes'], [ AC_MSG_RESULT([yes]) m4_if([$2], [], [:], [$2]) ], [ AC_MSG_RESULT([no]) m4_if([$3], [], [:], [$3]) ]) AC_SUBST([NC_NETCDF_3_CPPFLAG]) ])
dnl AC_CHECK_HDF : Check for hdf4 dnl args : action-if-yes, action-if-no AC_DEFUN([AC_CHECK_HDF4], [ AC_ARG_WITH([hdf4], [AS_HELP_STRING([--with-hdf4=ARG],[hdf4 directory])], [HDF4_PATH=$withval], [HDF4_PATH=""]) AC_ARG_WITH([hdf4_include], [AS_HELP_STRING([--with-hdf4-include=ARG],[hdf 4 include directory])], [HDF4_PATH_INC=$withval], [HDF4_PATH_INC=""]) AC_ARG_WITH([hdf4_libdir], [AS_HELP_STRING([--with-hdf4-libdir=ARG],[hdf 4 library directory])], [HDF4_PATH_LIBDIR=$withval], [HDF4_PATH_LIBDIR=""]) dnl This is a very common location for the hdf4 code. jhrg 10/11/05 AS_IF([test -d /usr/local/hdf], [HDF4_PATH="/usr/local/hdf"]) AS_IF([test "z$HDF4_PATH" != "z"], [ AS_IF([test "z$HDF4_PATH_LIBDIR" = "z"], [HDF4_PATH_LIBDIR="$HDF4_PATH/lib"]) AS_IF([test "z$HDF4_PATH_INC" = "z"], [HDF4_PATH_INC="$HDF4_PATH/include"]) ]) ac_hdf4_lib_ok='no' ac_hdf4_save_LDFLAGS=$LDFLAGS HDF4_LIBS= AS_IF([test "z$HDF4_PATH_LIBDIR" != "z"], [ HDF4_LDFLAGS="-L$HDF4_PATH_LIBDIR" LDFLAGS="$LDFLAGS $HDF4_LDFLAGS" AC_CHECK_HDF4_LIB([ac_hdf4_lib_ok='yes']) ], [ for ac_hdf4_libdir in "" /usr/local/hdf4.2r1/lib /opt/hdf4.2r1/lib \ /usr/hdf4.2r1/lib /usr/local/lib/hdf4.2r1 /opt/lib/hdf4.2r1 \ /usr/lib/hdf4.2r1 /usr/local/hdf/lib/ /opt/hdf/lib /usr/hdf/lib \ /usr/local/lib/hdf /opt/lib/hdf /usr/lib/hdf ; do AS_IF([test "z$ac_hdf4_libdir" = 'z'], [HDF4_LDFLAGS=], [ AC_MSG_NOTICE([searching hdf libraries in $ac_hdf4_libdir]) HDF4_LDFLAGS="-L$ac_hdf4_libdir" ]) LDFLAGS="$LDFLAGS $HDF4_LDFLAGS" AC_CHECK_HDF4_LIB([ac_hdf4_lib_ok='yes']) AS_IF([test $ac_hdf4_lib_ok = 'yes'],[break]) LDFLAGS=$ac_hdf4_save_LDFLAGS done ]) LDFLAGS=$ac_hdf4_save_LDFLAGS ac_hdf4_h='no' HDF4_CPPFLAGS= ac_hdf4_save_CPPFLAGS=$CPPFLAGS AS_IF([test "z$HDF4_PATH_INC" != "z"], [ HDF4_CPPFLAGS="-I$HDF4_PATH_INC" CPPFLAGS="$CPPFLAGS $HDF4_CPPFLAGS" AC_CHECK_HEADER_NOCACHE_HDF4([mfhdf.h],[ac_hdf4_h='yes']) ], [ for ac_hdf4_incdir in "" /usr/local/hdf4.2r1/include /opt/hdf4.2r1/include \ /usr/hdf4.2r1/include /usr/local/include/hdf4.2r1 \ /opt/include/hdf4.2r1 /usr/include/hdf4.2r1 /usr/local/hdf/include \ /opt/hdf/include /usr/hdf/include /usr/local/include/hdf \ /opt/include/hdf /usr/include/hdf ; do AS_IF([test "z$ac_hdf4_incdir" = 'z'], [HDF4_CPPFLAGS=], [ AC_MSG_NOTICE([searching hdf includes in $ac_hdf4_incdir]) HDF4_CPPFLAGS="-I$ac_hdf4_incdir" ]) CPPFLAGS="$CPPFLAGS $HDF4_CPPFLAGS" AC_CHECK_HEADER_NOCACHE_HDF4([mfhdf.h],[ac_hdf4_h='yes']) AS_IF([test $ac_hdf4_h = 'yes'],[break]) CPPFLAGS=$ac_hdf4_save_CPPFLAGS done ]) CPPFLAGS=$ac_hdf4_save_CPPFLAGS AS_IF([test "$ac_hdf4_h" = 'yes' -a "$ac_hdf4_lib_ok" = 'yes'], [m4_if([$1], [], [:], [$1])], [m4_if([$2], [], [:], [$2])]) AC_SUBST([HDF4_LIBS]) AC_SUBST([HDF4_CPPFLAGS]) AC_SUBST([HDF4_LDFLAGS]) ]) dnl check for the netcdf 2 interface provided by hdf AC_DEFUN([AC_CHECK_HDF4_NETCDF], [ ac_hdf4_netcdf_lib='no' ac_hdf4_netcdf_h='no' AC_CHECK_HDF4([ ac_hdf4_netcdf_save_LDFLAGS=$LDFLAGS ac_hdf4_netcdf_save_LIBS=$LIBS LIBS="$LIBS $HDF4_LIBS" LDFLAGS="$LDFLAGS $HDF4_LDFLAGS" AC_MSG_CHECKING([for ncopen with hdf link flags]) AC_LINK_IFELSE([AC_LANG_CALL([],[ncopen])], [ AC_MSG_RESULT([yes]) ac_hdf4_netcdf_lib='yes' ], [ AC_MSG_RESULT([no]) ac_hdf4_netcdf_lib='no' ]) LDFLAGS=$ac_hdf4_netcdf_save_LDFLAGS LIBS=$ac_hdf4_netcdf_save_LIBS ac_hdf4_netcdf_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $HDF4_CPPFLAGS" AC_CHECK_NETCDF_HEADER([],[ac_hdf4_netcdf_h='yes']) CPPFLAGS=$ac_hdf4_netcdf_save_CPPFLAGS ]) AS_IF([test $ac_hdf4_netcdf_lib = 'yes' -a $ac_hdf4_netcdf_h = 'yes'], [m4_if([$1], [], [:], [$1])], [m4_if([$2], [], [:], [$2])]) ]) AC_DEFUN([AC_CHECK_HDF4_LIB], [ HDF4_LIBS= ac_hdf4_save_LIBS=$LIBS AC_CHECK_LIB_NOCACHE_HDF4([sz], [SZ_BufftoBuffCompress], [ LIBS="$LIBS -lsz" HDF4_LIBS='-lsz' ]) dnl -lsz is not required because due to licencing it may not be present dnl nor required everywhere ac_hdf4_lib='no' AC_CHECK_LIB_NOCACHE_HDF4([z],[deflate], [ AC_CHECK_LIB_NOCACHE_HDF4([jpeg],[jpeg_start_compress], [ AC_CHECK_LIB_NOCACHE_HDF4([df],[Hopen], [ AC_CHECK_LIB_NOCACHE_HDF4([mfhdf],[SDstart], [ ac_hdf4_lib="yes" HDF4_LIBS="-lmfhdf -ldf -ljpeg -lz $HDF4_LIBS" ],[],[-ldf -ljpeg -lz]) ],[],[-ljpeg -lz]) ]) ]) LIBS=$ac_hdf4_save_LIBS AS_IF([test "$ac_hdf4_lib" = 'yes'], [m4_if([$1], [], [:], [$1])], [m4_if([$2], [], [:], [$2])]) ]) AC_DEFUN([AC_CHECK_LIB_NOCACHE_HDF4], [ AS_TR_SH([ac_check_lib_nocache_ok_$1_$2])='no' AS_TR_SH([ac_check_lib_nocache_$1_$2_LIBS])=$LIBS LIBS="-l$1 $5 $LIBS" AC_MSG_CHECKING([for $2 in -l$1]) AC_LINK_IFELSE([AC_LANG_CALL([], [$2])], [ AS_TR_SH([ac_check_lib_nocache_ok_$1_$2])='yes' AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) ]) LIBS=$AS_TR_SH([ac_check_lib_nocache_$1_$2_LIBS]) AS_IF([test $AS_TR_SH([ac_check_lib_nocache_ok_$1_$2]) = 'yes'], [m4_if([$3], [], [:], [$3])], [m4_if([$4], [], [:], [$4])]) ]) AC_DEFUN([AC_CHECK_HEADER_NOCACHE_HDF4], [ AS_TR_SH([ac_check_header_nocache_compile_$1])='no' AS_TR_SH([ac_check_header_nocache_preproc_$1])='no' AC_MSG_CHECKING([for $1 with compiler]) AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <$1>]])], [ AC_MSG_RESULT([yes]) AS_TR_SH([ac_check_header_nocache_compile_$1])='yes' ], [ AC_MSG_RESULT([no]) ]) AC_MSG_CHECKING([for $1 with preprocessor]) AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <$1>]])], [ AC_MSG_RESULT([yes]) AS_TR_SH([ac_check_header_nocache_preproc_$1])='yes' ], [ AC_MSG_RESULT([no]) AS_IF([test "$AS_TR_SH([ac_check_header_nocache_compile_$1])" = 'yes'], [AC_MSG_WARN([trusting compiler result, ignoring preprocessor error])]) ]) AS_IF([test "$AS_TR_SH([ac_check_header_nocache_compile_$1])" = 'yes'], [m4_if([$2], [], [:], [$2])], [m4_if([$3], [], [:], [$3])]) ])
-- fedora-extras-list mailing list fedora-extras-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/fedora-extras-list