# -*- 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])
])