From ce7cea4cbfce6e9d7ee7dcc4a3dc5735bccd7763 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Mon, 11 Jun 2007 02:14:13 +0000 Subject: [PATCH] add odbc m4 detection. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5305 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- build/config/ODBC.m4 | 323 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 build/config/ODBC.m4 diff --git a/build/config/ODBC.m4 b/build/config/ODBC.m4 new file mode 100644 index 0000000000..6bfb0d1b3b --- /dev/null +++ b/build/config/ODBC.m4 @@ -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) +]) + +