# -*- mode: autoconf -*- # Configure macros for Libdap # # Code for version detection and comparison comes from freetype2.m4 # Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor # # Copyright 2001, 2003 by # David Turner, Robert Wilhelm, and Werner Lemberg. # # This file is part of the FreeType project, and may only be used, modified, # and distributed under the terms of the FreeType project license, # LICENSE.TXT. By continuing to use, modify, or distribute this file you # indicate that you have read the license and understand and accept it # fully. # # As a special exception to the FreeType project license, this file may be # distributed as part of a program that contains a configuration script # generated by Autoconf, under the same distribution terms as the rest of # that program. # # modified by Patrice Dumas 2005 for libdap # # AC_CHECK_DODS is based on code from gdal configure.in # AC_CHECK_LIBDAP([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) # Test for Libdap and define DAP_CFLAGS and DAP_LIBS. # Check that the version is above MINIMUM-VERSION # use when linking with a c++ aware linker, with a c linker you may also # need -lstdc++ AC_DEFUN([AC_CHECK_LIBDAP], [ dap_min_version=m4_if([$1], [], [3.5.0], [$1]) dap_no= dap_pkgconfig_libdap=yes PKG_CHECK_MODULES([DAP],[libdap >= $dap_min_version],, [dap_pkgconfig_libdap=no]) PKG_CHECK_MODULES([DAP_CLIENT],[libdapclient >= $dap_min_version],, [dap_pkgconfig_libdap=no]) PKG_CHECK_MODULES([DAP_SERVER],[libdapserver >= $dap_min_version],, [dap_pkgconfig_libdap=no]) if test $dap_pkgconfig_libdap = no; then AC_PATH_PROG([DAP_CONFIG], [dap-config], [no]) if test "$DAP_CONFIG" = "no" ; then dap_no=yes else dap_config_major_version=`$DAP_CONFIG --version | sed 's/^libdap \([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)[[ab]]*$/\1/'` dap_config_minor_version=`$DAP_CONFIG --version | sed 's/^libdap \([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)[[ab]]*$/\2/'` dap_config_micro_version=`$DAP_CONFIG --version | sed 's/^libdap \([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)\.\([[0-9]][[0-9]]*\)[[ab]]*$/\3/'` dap_min_major_version=`echo $dap_min_version | sed 's/\([[0-9]][[0-9]]*\).\([[0-9]][[0-9]]*\).\([[0-9]][[0-9]]*\)$/\1/'` dap_min_minor_version=`echo $dap_min_version | sed 's/\([[0-9]][[0-9]]*\).\([[0-9]][[0-9]]*\).\([[0-9]][[0-9]]*\)$/\2/'` dap_min_micro_version=`echo $dap_min_version | sed 's/\([[0-9]][[0-9]]*\).\([[0-9]][[0-9]]*\).\([[0-9]][[0-9]]*\)$/\3/'` dap_config_is_lt="" if test $dap_config_major_version -lt $dap_min_major_version ; then dap_config_is_lt=yes else if test $dap_config_major_version -eq $dap_min_major_version ; then if test $dap_config_minor_version -lt $dap_min_minor_version ; then dap_config_is_lt=yes else if test $dap_config_minor_version -eq $dap_min_minor_version ; then if test $dap_config_micro_version -lt $dap_min_micro_version ; then dap_config_is_lt=yes fi fi fi fi fi if test x$dap_config_is_lt = xyes ; then dap_no=yes else DAP_LIBS="`$DAP_CONFIG --libs`" if ($DAP_CONFIG --client-libs 2>&1 | grep unknown) >/dev/null 2>&1; then DAP_CLIENT_LIBS=$DAP_LIBS DAP_SERVER_LIBS=$DAP_LIBS else DAP_CLIENT_LIBS="`$DAP_CONFIG --client-libs`" DAP_SERVER_LIBS="`$DAP_CONFIG --server-libs`" fi DAP_CFLAGS="`$DAP_CONFIG --cflags`" fi fi else DAP_STATIC_LIBS="`$PKG_CONFIG --static --libs libdap`" DAP_CLIENT_STATIC_LIBS="`$PKG_CONFIG --static --libs libdapclient`" DAP_SERVER_STATIC_LIBS="`$PKG_CONFIG --static --libs libdapserver`" fi AC_MSG_CHECKING([for libdap version >= $dap_min_version]) if test x$dap_no = x ; then AC_MSG_RESULT([yes]) m4_if([$2], [], [:], [$2]) else AC_MSG_RESULT([no]) if test "$DAP_CONFIG" = "no" ; then AC_MSG_NOTICE([The dap-config script could not be found.]) else if test x$dap_config_is_lt = xyes ; then AC_MSG_NOTICE([the installed libdap library is too old.]) fi fi DAP_LIBS="" DAP_CFLAGS="" m4_if([$3], [], [:], [$3]) fi if test x"$DAP_CFLAGS" != x -a x"$DAP_CLIENT_CFLAGS" = x ; then DAP_CLIENT_CFLAGS=$DAP_CFLAGS fi if test x"$DAP_CFLAGS" != x -a x"$DAP_SERVER_CFLAGS" = x ; then DAP_SERVER_CFLAGS=$DAP_CFLAGS fi if test x"$DAP_STATIC_LIBS" = x ; then DAP_STATIC_LIBS=$DAP_LIBS DAP_CLIENT_STATIC_LIBS=$DAP_CLIENT_LIBS DAP_SERVER_STATIC_LIBS=$DAP_SERVER_LIBS fi AC_SUBST([DAP_CFLAGS]) AC_SUBST([DAP_CLIENT_CFLAGS]) AC_SUBST([DAP_SERVER_CFLAGS]) AC_SUBST([DAP_LIBS]) AC_SUBST([DAP_CLIENT_LIBS]) AC_SUBST([DAP_SERVER_LIBS]) AC_SUBST([DAP_STATIC_LIBS]) AC_SUBST([DAP_CLIENT_STATIC_LIBS]) AC_SUBST([DAP_SERVER_STATIC_LIBS]) ]) # AC_CHECK_DODS([ ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) # Test for Libdap or older versions. Define DAP_CFLAGS and DAP_LIBS and # optionnaly DAP_ROOT AC_DEFUN([AC_CHECK_DODS], [ AC_ARG_WITH([dods_root], [AS_HELP_STRING([--with-dods-root=ARG],[DODS root fallback])], ,,) ac_dods_ok='no' DAP_ROOT= AC_MSG_CHECKING([DODS specific root]) if test -z "$with_dods_root" -o "$with_dods_root" = "no"; then AC_MSG_RESULT([disabled]) else AC_MSG_RESULT([$with_dods_root]) DODS_ROOT=$with_dods_root DODS_LIB=$with_dods_root/lib DODS_INC=$with_dods_root/include DODS_BIN=$with_dods_root/bin dnl Add the DODS libraries to LIBS if test -x "$DODS_BIN/opendap-config" ; then dnl OPeNDAP 3.4 and earlier lack opendap-config, but use it if avail. DAP_LIBS="`$DODS_BIN/opendap-config --libs`" DAP_CFLAGS="`$DODS_BIN/opendap-config --cflags`" ac_dods_ok='yes' elif test -x "$DODS_BIN/dap-config" ; then dnl for OPeNDAP 3.5 DAP_LIBS="`$DODS_BIN/dap-config --libs`" DAP_CFLAGS="`$DODS_BIN/dap-config --cflags`" ac_dods_ok='yes' else dnl Otherwise try to put things together in a more primitive way. DAP_LIBS="-L$DODS_LIB -ldap++ -lpthread" DAP_CFLAGS="-I$DODS_INC" ac_dods_curl='yes' dnl Add curl to LIBS; it might be local to DODS or generally installed AC_MSG_CHECKING([For curl]) if test -x "$DODS_BIN/curl-config"; then DAP_LIBS="$DAP_LIBS `$DODS_BIN/curl-config --libs`" elif which curl-config > /dev/null 2>&1; then DAP_LIBS="$DAP_LIBS `curl-config --libs`" else ac_dods_curl='no' fi if test $ac_dods_curl = 'no' ; then AC_MSG_RESULT([no]) dnl AC_MSG_WARN([You gave a dods root, but I can't find curl!]) else AC_MSG_RESULT([yes]) fi AC_MSG_CHECKING([For libxml2]) ac_dods_xml2='yes' if test -x "$DODS_BIN/xml2-config"; then DAP_LIBS="$DAP_LIBS `$DODS_BIN/xml2-config --libs`" elif which xml2-config > /dev/null 2>&1; then DAP_LIBS="$DAP_LIBS `xml2-config --libs`" else ac_dods_xml2='no' fi if test $ac_dods_xml2 = 'no' ; then AC_MSG_RESULT([no]) dnl AC_MSG_WARN([You gave a dods root, but I can't find xml2!]) else AC_MSG_RESULT([yes]) fi AC_LANG_PUSH([C++]) if test $ac_dods_xml2 = 'yes' -a $ac_dods_curl = 'yes'; then dnl We check that linking is succesfull ac_save_LIBS=$LIBS ac_save_CFLAGS=$CFLAGS LIBS="$LIBS $DAP_LIBS" CFLAGS="$CFLAGS $DAP_CFLAGS" dnl AC_CHECK_LIB is not used because it caches results dnl AC_CHECK_LIB([dap++],[main],[ac_dods_ok='yes'],[ac_dods_ok='no']) AC_MSG_CHECKING([for DODS with curl and libxml2]) AC_LINK_IFELSE([AC_LANG_CALL([],[main])],[ ac_dods_ok='yes' AC_MSG_RESULT([yes]) ],[ ac_dods_ok='no' AC_MSG_RESULT([no]) ]) LIBS=$ac_save_LIBS CFLAGS=$ac_save_CFLAGS if test "z$ac_dods_ok" = "zno"; then ac_save_LIBS=$LIBS ac_save_CFLAGS=$CFLAGS LIBS="$LIBS $DAP_LIBS -lrx" CFLAGS="$CFLAGS $DAP_CFLAGS" AC_MSG_CHECKING([for DODS with curl, libxml2 and librx]) AC_LINK_IFELSE([AC_LANG_CALL([],[main])],[ AC_MSG_RESULT([yes]) ac_dods_ok='yes' DAP_LIBS="$DAP_LIBS -lrx" ],[ ac_dods_ok='no' AC_MSG_RESULT([no]) ]) LIBS=$ac_save_LIBS CFLAGS=$ac_save_CFLAGS fi fi if test $ac_dods_ok = 'no'; then dnl assume it is an old version of DODS AC_MSG_NOTICE([Checking for DODS with libwww and librx]) DAP_LIBS="-L$DODS_LIB -ldap++ -lwww -lpthread -lrx" DAP_CFLAGS="-I$DODS_INC" ac_save_LIBS=$LIBS ac_save_CFLAGS=$CFLAGS LIBS="$LIBS $DAP_LIBS" CFLAGS="$CFLAGS $DAP_CFLAGS" AC_CHECK_LIB([dap++],[main],[ac_dods_ok='yes'],[ac_dods_ok='no']) LIBS=$ac_save_LIBS CFLAGS=$ac_save_CFLAGS fi AC_LANG_POP fi AC_MSG_CHECKING([for DODS in a specific root]) if test "z$ac_dods_ok" = "zyes"; then AC_MSG_RESULT([yes]) AC_MSG_NOTICE([setting DAP_ROOT directory to $DODS_ROOT]) DAP_ROOT=$DODS_ROOT else AC_MSG_RESULT([no]) fi fi if test "z$ac_dods_ok" = "zno" ; then AC_CHECK_LIBDAP([],[ac_dods_ok='yes'],[ac_dods_ok='no']) if test "z$ac_dods_ok" = "zno" ; then AC_PATH_PROG([OPENDAP_CONFIG], [opendap-config], [no]) AC_MSG_CHECKING([for libdap with opendap-config]) if test "$OPENDAP_CONFIG" = "no" ; then ac_dods_ok='no' AC_MSG_RESULT([no]) else DAP_LIBS="`$OPENDAP_CONFIG --libs`" DAP_CFLAGS="`$OPENDAP_CONFIG --cflags`" ac_dods_ok='yes' AC_MSG_RESULT([yes]) fi fi fi if test "x$ac_dods_ok" = "xyes" ; then if test "z$DAP_CLIENT_LIBS" = 'z' ; then DAP_CLIENT_LIBS=$DAP_LIBS DAP_SERVER_LIBS=$DAP_LIBS fi if test x"$DAP_CFLAGS" != x -a x"$DAP_CLIENT_CFLAGS" = x ; then DAP_CLIENT_CFLAGS=$DAP_CFLAGS fi if test x"$DAP_CFLAGS" != x -a x"$DAP_SERVER_CFLAGS" = x ; then DAP_SERVER_CFLAGS=$DAP_CFLAGS fi if test x"$DAP_STATIC_LIBS" = x ; then DAP_STATIC_LIBS=$DAP_LIBS DAP_CLIENT_STATIC_LIBS=$DAP_CLIENT_LIBS DAP_SERVER_STATIC_LIBS=$DAP_SERVER_LIBS fi m4_if([$1], [], [:], [$1]) else DAP_LIBS="" DAP_CFLAGS="" DAP_CLIENT_LIBS="" DAP_SERVER_LIBS="" m4_if([$2], [], [:], [$2]) fi dnl done above dnl AC_SUBST([DAP_CFLAGS]) dnl AC_SUBST([DAP_CLIENT_CFLAGS]) dnl AC_SUBST([DAP_SERVER_CFLAGS]) dnl AC_SUBST([DAP_LIBS]) dnl AC_SUBST([DAP_CLIENT_LIBS]) dnl AC_SUBST([DAP_SERVER_LIBS]) dnl AC_SUBST([DAP_STATIC_LIBS]) dnl AC_SUBST([DAP_CLIENT_STATIC_LIBS]) dnl AC_SUBST([DAP_SERVER_STATIC_LIBS]) dnl AC_SUBST([DAP_ROOT]) ])