Too many -Ls
[freeradius.git] / src / modules / rlm_sql / drivers / rlm_sql_oracle / configure.in
index 866654c..1aaa1dc 100644 (file)
-AC_INIT(sql_oracle.c)
-AC_REVISION($Revision$)
+AC_INIT(rlm_sql_oracle.c)
+AC_REVISION($Revision: 1.10 $)
 AC_DEFUN(modname,[rlm_sql_oracle])
 
-
+fail=
+sql_oracle_ldflags=
+sql_oracle_cflags=
 if test x$with_[]modname != xno; then
 
-       AC_PROG_CC
-       AC_PROG_CPP
-
-       targetname=modname   # we might change this later.
-
-       AC_SUBST(ORACLE_LIBS)
-       AC_SUBST(ORACLE_INCLUDE)
-
-       AC_MSG_CHECKING([for oci.h])
-
-       dnl #
-       dnl # See if the user passed in the oracle_home_dir option and
-       dnl # use that first.  If not, use $ORACLE_HOME.  If that's
-       dnl # not defined, give up.  There's no point in blindly
-       dnl # hunting around for Oracle - there's no standard place
-       dnl # for it.  Any sane Oracle user/developer should have $ORACLE_HOME
-       dnl # defined anyways.
-       dnl #
-
-       AC_TRY_COMPILE([#include <oci.h>],
-               [ int a = 1;],
-               ORACLE_INCLUDE=" ",
-               ORACLE_INCLUDE=
-       )
-
-       # Look for Oracle8i.
-       if test "x$ORACLE_INCLUDE" = "x"; then
-               old_CFLAGS="$CFLAGS"
-
-               AC_LOCATE_DIR(oracle_home_dir,oci.h)
-
-               for try in $oracle_home_dir $oracle_include_dir; do
-                       CFLAGS="$old_CFLAGS -I${try}/rdbms/demo -I${try}/rdbms/public -I${try}/plsql/public -I${try}/network/public -I${try}/oci/include"
-                       AC_TRY_COMPILE([#include <oci.h>],
-                               [ int a = 1; ],
-                               OHOME=$try,
-                               OHOME=
-                       )
-                       if test "x$OHOME" != "x"; then
-                               break;
-                       fi
-               done
-
-               if test "x$OHOME" = "x" -a "x$ORACLE_HOME" != "x"; then
-                       CFLAGS="$old_CFLAGS -I${ORACLE_HOME}/rdbms/demo -I${ORACLE_HOME}/rdbms/public -I${ORACLE_HOME}/plsql/public -I${ORACLE_HOME}/network/public -I${ORACLE_HOME}/oci/include"
-                       AC_TRY_COMPILE([#include <oci.h>],
-                               [ int a = 1; ],
-                               OHOME=$ORACLE_HOME,
-                               OHOME=
-                       )
-               fi
-
-               CFLAGS="$old_CFLAGS"
-
-               if test "x$OHOME" != "x"; then
-                       ORACLE_HOME=$OHOME
-                       ORACLE_INCLUDE="-I${ORACLE_HOME}/rdbms/demo -I${ORACLE_HOME}/rdbms/public -I${ORACLE_HOME}/plsql/public -I${ORACLE_HOME}/network/public -I${ORACLE_HOME}/oci/include"
-               fi
-       fi     ##  this section sets $ORACLE_HOME, if found.
-
-       # not Oracle8i, try older.
-       if test "x$ORACLE_INCLUDE" = "x"; then
-               old_CFLAGS="$CFLAGS"
-
-               AC_LOCATE_DIR(oracle_include_dir,oci.h)
-
-               for try in /usr/local/include/oracle /usr/local/oracle/include $oracle_include_dir; do
-                       CFLAGS="$old_CFLAGS -I$try"
-                       AC_TRY_COMPILE([#include <oci.h>],
-                               [ int a = 1; ],
-                               ORACLE_INCLUDE="-I$try",
-                               ORACLE_INCLUDE=
-                       )
-                       if test "x$ORACLE_INCLUDE" != "x"; then
-                               break;
-                       fi
-               done
-               CFLAGS="$old_CFLAGS"
-       fi
+    dnl ############################################################
+    dnl # Check for command line options
+    dnl ############################################################
+
+    dnl extra argument: --with-oracle-include-dir=DIR
+    oracle_include_dir=
+    AC_ARG_WITH(oracle-include-dir,
+       [AS_HELP_STRING([--with-oracle-include-dir=DIR],
+               [Directory where the oracle includes may be found])],
+        [case "$withval" in
+            no)
+            AC_MSG_ERROR(Need oracle-include-dir)
+            ;;
+            yes)
+            ;;
+            *)
+            oracle_include_dir="$withval"
+            ;;
+        esac])
+
+    dnl extra argument: --with-oracle-lib-dir=DIR
+    oracle_lib_dir=
+    AC_ARG_WITH(oracle-lib-dir,
+       [AS_HELP_STRING([--with-oracle-lib-dir=DIR],
+               [Directory where the oracle libraries may be found])],
+        [case "$withval" in
+            no)
+            AC_MSG_ERROR(Need oracle-lib-dir)
+            ;;
+            yes)
+            ;;
+            *)
+            oracle_lib_dir="$withval"
+            ;;
+        esac])
+
+    dnl extra argument: --with-oracle-dir=DIR
+    AC_ARG_WITH(oracle-dir,
+       [AS_HELP_STRING([--with-oracle-dir=DIR],
+               [Base directory where oracle is installed])],
+        [case "$withval" in
+            no)
+            AC_MSG_ERROR(Need oracle-dir)
+            ;;
+            yes)
+            ;;
+            *)
+            oracle_lib_dir="$withval/lib"
+            oracle_include_dir="$withval/include"
+            ;;
+        esac])
+
+    dnl ############################################################
+    dnl # Check for header files
+    dnl ############################################################
+
+    smart_try_dir="$oracle_include_dir /usr/local/instaclient/include"
+    
+    if test "x$ORACLE_HOME" != "x"; then
+       smart_try_dir+="${ORACLE_HOME}/include"
+    fi
+    
+    FR_SMART_CHECK_INCLUDE(oci.h)
+    if test "x$ac_cv_header_oci_h" != "xyes"; then
+        AC_MSG_WARN([oracle headers not found. Use --with-oracle-include-dir=<path> or set ORACLE_HOME.])
+        fail="$fail oci.h"
+    fi
+
+    dnl ############################################################
+    dnl # Check for libraries
+    dnl ############################################################
+
+    old_LIBS="$LIBS"
+    
+    if test "x$oracle_lib_dir" != "x" ; then
+        lib_path="${oracle_lib_dir} "
+    elif test "x$ORACLE_HOME" != "x" ; then
+        lib_path="${ORACLE_HOME}/lib "
+    fi
+
+    for path in $lib_path "/usr/local/instaclient/lib" "" "/opt/lib"; do
+        for oracle_version in 11 10 9 ""; do
+            if test "$path" != ""; then
+                AC_MSG_CHECKING([for OCIInitialize in nnz${oracle_version} in $path])
+            else
+                AC_MSG_CHECKING([for OCIInitialize in nnz${oracle_version}])
+            fi
+            
+            LIBS="$old_LIBS -L$path -lclntsh -lnnz${oracle_version}"
+            AC_TRY_LINK([#include <oci.h>
+
+                static OCIEnv           *p_env;
+                static OCIError         *p_err;
+                static OCISvcCtx        *p_svc;
+                static OCIStmt          *p_sql;
+                static OCIDefine        *p_dfn    = (OCIDefine *) 0;
+                static OCIBind          *p_bnd    = (OCIBind *) 0;
+                ],
+                [
+                int             p_bvi;
+                char            p_sli[20];
+                int             rc;
+                char            errbuf[100];
+                int             errcode;
+            
+                rc = OCIInitialize((ub4) OCI_DEFAULT, (dvoid *)0,  /* Initialize OCI */
+                                   (dvoid * (*)(dvoid *, size_t)) 0,
+                                   (dvoid * (*)(dvoid *, dvoid *, size_t))0,
+                                   (void (*)(dvoid *, dvoid *)) 0 );
+    
+                ],
+                [sql_oracle_ldflags="$LIBS"],
+            )
+            if test "x$sql_oracle_ldflags" != "x"; then
+                    AC_MSG_RESULT(yes)
+                    break
+            fi
+            AC_MSG_RESULT(no)
+        done
+        
+        if test "x$sql_oracle_ldflags" != "x"; then
+                break
+        fi
+    done
+
+    LIBS="$old_LIBS"
+
+    if test "x$sql_oracle_ldflags" = "x"; then
+        AC_MSG_WARN([oracle libraries not found.  Use --with-oracle-lib-dir=<path> or set ORACLE_HOME.])
+        fail=["$fail libclntsh libnnz[9-11]"]
+    fi
+    
+    targetname=modname
+else
+    targetname=
+    echo \*\*\* module modname is disabled.
+fi
 
-       if test "x$ORACLE_INCLUDE" = "x"; then
-               AC_MSG_RESULT(no)
-               AC_MSG_WARN([oracle headers not found.  Use --with-oracle-home-dir=<path>.])
-               targetname=   # disabled module
+dnl Don't change this section.
+if test "x$fail" != x; then
+       if test "x${enable_strict_dependencies}" = xyes; then
+               AC_MSG_ERROR([set --without-]modname[ to disable it explicitly.])
        else
-               sql_oracle_cflags="${sql_oracle_cflags} ${ORACLE_INCLUDE}"
-               AC_MSG_RESULT(yes)
-
-
-               ## is this set, from above?
-               if test "x$ORACLE_HOME" != "x"; then
-                       ## we must have an Oracle8i tree
-
-                       # FIXME: we might do some checking, just to be nice
-                       ORACLE_LIBS="-L$ORACLE_HOME/lib -lclntsh -lm"
-
-               else
-                       AC_MSG_CHECKING([for oracle_init in -loracleclient])
-
-                       dnl #
-                       dnl #  Look for it in a number of directories.
-                       dnl #
-                       old_LIBS="$LIBS"
-
-                       AC_LOCATE_DIR(oracle_lib_dir,[oracleclient.so])
-                       AC_LOCATE_DIR(oracle_lib_dir,[oracleclient.a])
-
-                       for try in /usr/lib/oracle /usr/local/lib/oracle /usr/local/oracle/lib $oracle_lib_dir; do
-                               LIBS="$old_LIBS -L$try -loracleclient"
-                               AC_TRY_LINK([extern char oracle_init();],
-                                       [ oracle_init()],
-                                       ORACLE_LIBS="-L$try -loracleclient",
-                                       ORACLE_LIBS=
-                               )
-                               if test "x$ORACLE_LIBS" != "x"; then
-                                       break;
-                               fi
-                       done
-                       LIBS="$old_LIBS"
-
-                       dnl #
-                       dnl #  If one or the other isn't found, disable
-                       dnl #  them both..
-                       dnl #  If both are found, enable them both.
-                       dnl #
-                       if test "x$ORACLE_LIBS" = "x"; then
-                               AC_MSG_RESULT(no)
-                               ORACLE_INCLUDE=
-                       fi
-               fi
-
-               if test "x$ORACLE_LIBS" = "x"; then
-                       AC_MSG_WARN([oracle libraries not found.  Use --with-oracle-lib-dir=<path>.])
-                       targetname=   # disabled module
-               else
-                       sql_oracle_ldflags="$sql_oracle_ldflags $ORACLE_LIBS"
-                       AC_MSG_RESULT(yes)
-               fi
+               AC_MSG_WARN([silently not building ]modname[.])
+               AC_MSG_WARN([FAILURE: ]modname[ requires:$fail.]);
+               targetname=
        fi
-
-       if test "x$targetname" = "x"; then
-               AC_MSG_WARN([sql submodule 'oracle' disabled])
-       fi
-
-else
-       targetname=
-       echo \*\*\* module modname is disabled.
 fi
 
+sql_sybase_cflags="$SMART_CFLAGS"
 AC_SUBST(sql_oracle_ldflags)
 AC_SUBST(sql_oracle_cflags)
 AC_SUBST(targetname)
-AC_OUTPUT(Makefile)
+AC_OUTPUT(all.mk)