]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add odbc m4 detection.
authorMichael Jerris <mike@jerris.com>
Mon, 11 Jun 2007 02:14:13 +0000 (02:14 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 11 Jun 2007 02:14:13 +0000 (02:14 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5305 d0543943-73ff-0310-b7d9-9358b9ac24b2

build/config/ODBC.m4 [new file with mode: 0644]

diff --git a/build/config/ODBC.m4 b/build/config/ODBC.m4
new file mode 100644 (file)
index 0000000..6bfb0d1
--- /dev/null
@@ -0,0 +1,323 @@
+dnl ODBC.m4 generated automatically by aclocal 1.4a
+
+dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+dnl PARTICULAR PURPOSE.
+
+# Copyright (c) 1999-2000 Ajuba Solutions
+# Copyright (c) 2004 ActiveState
+
+
+#------------------------------------------------------------------------
+# AX_PATH_ODBC --
+#
+#      Locate the ODBC files (includes and libraries).
+#
+# Arguments:
+#
+#      Requires:
+#
+# Results:
+#
+#      Adds ODBC include and libs to PKG info
+#------------------------------------------------------------------------
+
+dnl the alternative search directory is invoked by --with-odbcinclude
+dnl and --with-odbclibrary
+AC_DEFUN(AX_PATH_ODBC, [
+case "$host" in
+    *darwin*)
+        DYNAMIC_LIB_EXTEN="dylib"
+    ;;
+    *cygwin* | *mingw*)
+        DYNAMIC_LIB_EXTEN="dll"
+    ;;
+    *)
+        DYNAMIC_LIB_EXTEN="so"
+    ;;
+esac
+       AX_PATH_ODBCH
+       AX_PATH_ODBCLIB
+       AC_SUBST(ODBC_INCLUDE_DIR)
+       AC_SUBST(ODBC_LIB_DIR)
+       AC_SUBST(ODBC_LIB)
+])
+
+dnl Find the ODBC headers. This code may not work for certain
+dnl intallations.
+AC_DEFUN(AX_PATH_ODBCH, [
+    dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
+    no_odbc=true
+    ac_cv_c_odbch=""
+    ODBCTYPE=""
+
+    AC_ARG_WITH(odbcinclude, [  --with-odbcinclude      directory where odbc headers are], with_odbcinclude=${withval})
+
+    if test x"${with_odbcinclude}" != x ; then
+       # first check to see if --with-odbcinclude was specified
+       list="/odbc/sql.h /ODBC/sql.h /unixodbc/sql.h /unixODBC/sql.h \
+               /iodbc/isql.h"
+       for i in $list ; do
+           if test -f "${with_odbcinclude}$i" ; then
+               ac_cv_c_odbch=`dirname ${with_odbcinclude}$i`
+               ac_cv_c_odbch=`(cd ${ac_cv_c_odbch}; pwd)`
+               break
+           fi
+       done
+       if test x"${ac_cv_c_odbch}" = x; then
+           AC_MSG_ERROR([${with_odbcinclude} directory does not contain headers])
+       fi
+    fi
+
+    dnl ===============================
+    dnl IODBC... I have not tested this a whole lot
+    dnl ===============================
+    dn`l Check in the source tree
+    for i in $dirlist; do
+       if test -f "${srcdir}/$i/postodbc/isql.h" ; then
+           ac_cv_c_odbch=`(cd ${srcdir}/$i/postodbc/; pwd)`
+           ODBCTYPE=iodbc
+       fi
+    done
+
+    dnl Check a few common places in the file system
+    if test x"${ac_cv_c_odbch}" = x ; then
+       for i in \
+               /usr/local/mysql/include \
+               /usr/local/include/iodbc \
+               /usr/local/share/iodbc \
+               ${prefix}/include/iodbc \
+               /usr/local/include \
+               /usr/include \
+               ${prefix}/include ; do
+           if test -f $i/isql.h; then
+               ac_cv_c_odbch=`(cd $i; pwd)`
+               ODBCTYPE=iodbc
+           fi
+       done
+    fi
+
+    dnl check if its installed with the compiler
+    if test x"${ac_cv_c_odbch}" = x ; then
+       dnl Get the path to the compiler, strip off any args in ${CC}
+       ccprog=`echo ${CC} | sed -e 's: .*::'`
+       ccpath=`which ${ccprog} | sed -e 's:/bin/.*::'`/include/iodbc
+       if test -f $ccpath/isql.h; then
+           ac_cv_c_odbch=$ccpath
+           ODBCTYPE=iodbc
+       fi
+    fi
+
+    dnl see if one is installed
+    if test x"${ac_cv_c_odbch}" = x ; then
+       AC_CHECK_HEADER(isql.h, ac_cv_c_odbch=installed, ac_cv_c_odbch="")
+       if test x"${ac_cv_c_odbch}" != x ; then
+           ODBCTYPE=iodbc
+       fi
+    fi
+
+    dnl ===============================
+    dnl unixODBC or Intersolv... I have tested this
+    dnl ===============================
+    dnl Check for unixODBC headers
+    if test x"${ac_cv_c_odbch}" = x ; then
+       for i in \
+               /opt/odbc/include \
+               /opt/ODBC/include \
+               ${prefix}/include/odbc \
+               ${prefix}/include/ODBC \
+               /opt/unixodbc/include \
+               /opt/unixODBC/include \
+               ${prefix}/include/unixodbc \
+               ${prefix}/include/unixODBC \
+               /usr/local/mysql/include \
+               /usr/local/include \
+               /usr/include \
+               ${prefix}/include ; do
+           if test -f "$i/sql.h"; then
+               ac_cv_c_odbch=`(cd $i; pwd)`
+               ODBCTYPE=unixODBC
+           fi
+       done
+    fi
+
+    dnl see if one is installed
+    if test x"${ac_cv_c_odbch}" = x ; then
+       AC_CHECK_HEADER(sql.h, ac_cv_c_odbch=installed, ac_cv_c_odbch="")
+       if test x"${ac_cv_c_odbch}" != x ; then
+           ODBCTYPE=unixODBC
+       fi
+    fi
+
+    dnl Figure out whether this is unixODBC or Intersolv
+    if test x"${ODBCTYPE}" = xunixODBC ; then
+       if test -f "${ac_cv_c_odbch}/odbcver.h" ; then
+           ODBCTYPE=intersolv
+       fi
+    fi
+
+    ODBC_INCLUDE_DIR=""
+    if test x"${ac_cv_c_odbch}" = x ; then
+       AC_MSG_ERROR([Cannot find any ODBC headers])
+    else
+       if test x"${ODBCTYPE}" = x ; then
+           if test -f "${ac_cv_c_odbch}/odbcver.h" ; then
+               ODBCTYPE=intersolv
+           elif test -f "${ac_cv_c_odbch}/sql.h" ; then
+               ODBCTYPE=unixODBC
+           elif test -f "${ac_cv_c_odbch}/isql.h" ; then
+               ODBCTYPE=iodbc
+           fi
+       fi
+    fi
+
+    AC_MSG_CHECKING([for ODBC headers files])
+    if test x"${ac_cv_c_odbch}" != x ; then
+       no_odbc=""
+       if test x"${ac_cv_c_odbch}" != xinstalled ; then
+           AC_MSG_RESULT(${ac_cv_c_odbch})
+           ODBC_INCLUDE_DIR="-I${ac_cv_c_odbch}"
+       else
+           AC_MSG_RESULT(none)
+       fi
+    fi
+
+    AC_SUBST(ODBC_INCLUDE_DIR)
+    AC_SUBST(ODBCTYPE)
+])
+
+dnl Find the ODBC library. This code may not work for certain
+dnl intallations.
+AC_DEFUN(AX_PATH_ODBCLIB, [
+    dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
+    no_odbc=true
+    ac_cv_c_odbc_libdir=""
+    ac_cv_c_odbc_lib=""
+    ODBC_LIB_NAME=""
+
+    AC_ARG_WITH(odbclibrary, [  --with-odbclibrary       directory where odbc libraries are], with_odbclibrary=${withval})
+
+    dnl first check to see if --with-odbclibrary was specified
+    if test x"${with_odbclibrary}" != x ; then
+       if test -f ${with_odbclibrary} ; then
+           ac_cv_c_odbc_libdir=`echo ${with_odbclibrary} | sed -e 's:/libpsqlodbc.*::'`
+           ac_cv_c_odbc_libdir=`(cd ${ac_cv_c_odbc_libdir}; pwd)`
+           ac_cv_c_odbc_lib=`echo ${with_odbclibrary} | sed -e 's:.*/::'`
+       elif test -f ${with_odbclibrary}/libodbc.${DYNAMIC_LIB_EXTEN} ; then
+           ac_cv_c_odbc_libdir=`(cd ${with_odbclibrary}; pwd)`
+           ac_cv_c_odbc_lib='-lodbc'
+       elif test -f ${with_odbclibrary}/libpsqlodbc.${DYNAMIC_LIB_EXTEN} ; then
+           ac_cv_c_odbc_libdir=`(cd ${with_odbclibrary}; pwd)`
+       elif test -f ${with_odbclibrary}/iodbc/libpsqlodbc.${DYNAMIC_LIB_EXTEN} ; then
+           ac_cv_c_odbc_libdir=`(cd ${with_odbclibrary}/iodbc; pwd)`
+           ac_cv_c_odbc_lib='-llibpsqlodbc'
+       else
+           AC_MSG_ERROR([${with_odbclibrary} directory does not contain library])
+       fi
+    fi
+
+    dnl Check for multiple library names depending on the ODBC type
+    if test x"${ODBCTYPE}" = xiodbc ; then
+       liblist="libpsqlodbc libmysqlodbc librbodbc libiodbc iodbc"
+       libpathlist="/usr/local/lib/iodbc ${prefix}/iodbc/lib \
+           ${prefix}/lib/iodbc /usr/local/mysql/lib /usr/local/lib /usr/lib ${prefix}/lib"
+    elif test x"${ODBCTYPE}" = xunixODBC ; then 
+       liblist="libodbc"
+       libpathlist="/opt/unixodbc/lib /opt/unixODBC/lib /usr/include/odbc \
+           /usr/include/ODBC /usr/local/mysql/lib /usr/local/lib \
+           ${prefix}/lib"
+    elif test x"${ODBCTYPE}" = xintersolv ; then 
+       liblist="libodbc"
+       libpathlist="/opt/odbc/lib /opt/ODBC/lib /usr/include/unixodbc \
+           /usr/include/unixODBC /usr/local/mysql/lib /usr/local/lib \
+           ${prefix}/lib"
+    else
+       AC_MSG_ERROR([ODBC support could not be identified.])
+    fi
+
+    for libname in $liblist; do
+       dnl Check in the build tree
+       for i in $dirlist; do
+           if test -f "$i/postodbc/${libname}.${DYNAMIC_LIB_EXTEN}" ; then
+               ac_cv_c_odbc_libdir=`(cd $i/postodbc/; pwd)`
+               break
+           fi
+       done
+
+       dnl Check a few common places in the file system
+       if test x"${ac_cv_c_odbc_libdir}" = x ; then
+           for i in $libpathlist; do
+               if test -f $i/${libname}.${DYNAMIC_LIB_EXTEN}; then
+                   ac_cv_c_odbc_libdir=`(cd $i; pwd)`
+                   break
+               fi
+           done
+       fi
+
+       dnl check if its installed with the compiler
+       if test x"${ac_cv_c_odbc_libdir}" = x ; then
+           dnl Get the path to the compiler, strip off any args in ${CC}
+           ccprog=`echo ${CC} | sed -e 's: .*::'`
+           ccpath=`which ${ccprog} | sed -e 's:/bin/.*::'`/lib
+           if test -f $ccpath/${libname}.${DYNAMIC_LIB_EXTEN}; then
+               ac_cv_c_odbc_libdir=$ccpath
+           fi
+       fi
+
+       dnl see if one is installed
+       if test x"${ac_cv_c_odbc_libdir}" = x ; then
+           AC_CHECK_LIB(${libname}, main)
+       fi
+
+       dnl do not keep searching for the other libraries, cause we found one
+       if test x"${ac_cv_c_odbc_libdir}" != x ; then
+           ac_cv_c_odbc_lib=${libname}
+           break
+       fi
+    done
+
+    ODBC_LIB_DIR=""
+    AC_MSG_CHECKING(for ODBC library files)
+    if test x"${ac_cv_c_odbc_libdir}" = x ; then
+       AC_MSG_ERROR([Cannot find an ODBC library path])
+    fi
+    if test x"${ac_cv_c_odbc_lib}" = x ; then
+       AC_MSG_ERROR([Cannot find an ODBC library])
+    fi
+    if test x"${ac_cv_c_odbc_libdir}" != x ; then
+       AC_MSG_RESULT(${ac_cv_c_odbc_libdir})
+       ODBC_LIB_DIR="-L${ac_cv_c_odbc_libdir}"
+    fi
+
+    AC_MSG_CHECKING(for ODBC library name)
+    ODBC_LIB=-l`echo $ac_cv_c_odbc_lib | sed -e 's:^lib::'`
+    AC_MSG_RESULT($ODBC_LIB)
+
+    if test x"${ODBCTYPE}" = xiodbc ; then
+       AC_MSG_RESULT(Using IODBC driver)
+       AC_DEFINE(HAVE_IODBC)
+       ODBC_LIB="$ODBC_LIB -liodbcinst"
+    fi
+
+    if test x"${ODBCTYPE}" = xunixODBC ; then
+       AC_MSG_RESULT(Using UnixODBC driver)
+       AC_DEFINE(HAVE_UNIXODBC)
+       AC_DEFINE(DONT_TD_VOID)
+    fi
+
+    if test x"${ODBCTYPE}" = xintersolv ; then
+       AC_MSG_RESULT(Using Intersolv driver)
+       AC_DEFINE(HAVE_INTERSOLV)
+    fi
+
+    AC_SUBST(ODBC_LIB)
+    AC_SUBST(ODBC_LIB_DIR)
+])
+
+