configure.in   [plain text]


AC_INIT(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_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 #

	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. It should be located under ORACLE_HOME if you have client SDK installed. Use --with-oracle-include-dir=yes if you are sure that your compiler include path includes Oracle include dir. Hint: you might try to do: locate oci.h])],
		[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. It should be located under ORACLE_HOME. iUse --with-oracle-lib-dir=yes if you are sure that your linker will find the necessary Oracle client libs. Hint: you might try to do: locate libclntsh.so])],
		[case "$withval" in
			no)
			    AC_MSG_ERROR(Need oracle-lib-dir)
			    ;;
			yes)
			    ;;
			*)
			    oracle_lib_dir="$withval"
			    ;;
        esac])



	AC_TRY_COMPILE([#include <oci.h>],
		[ int a = 1;],
		ORACLE_INCLUDE=" ",
		ORACLE_INCLUDE=
	)

	RLM_SQL_ORA_WORKING_CFLAGS_FOR_LINKING_TEST=
	if test "x$ORACLE_INCLUDE" = "x" ; then
		old_CFLAGS="$CFLAGS"
		CFLAGS="$old_CFLAGS -I$oracle_include_dir"
		AC_TRY_COMPILE([#include <oci.h>],
			[ int a = 1;],
			ORACLE_INCLUDE="-I$oracle_include_dir",
			ORACLE_INCLUDE=
		)

		RLM_SQL_ORA_WORKING_CFLAGS_FOR_LINKING_TEST="$CFLAGS"
		CFLAGS="$old_CFLAGS"
	fi

	# Proceed to linking makes only sense if include dir is OK.
	if test "x$ORACLE_INCLUDE" != "x" ; then
		old_LIBS="$LIBS"
		old_CFLAGS="$CFLAGS"
		CFLAGS="$RLM_SQL_ORA_WORKING_CFLAGS_FOR_LINKING_TEST"

		ORACLE_LIBDIR_SWITCH=
		if test "x$oracle_lib_dir" != "x" ; then
			ORACLE_LIBDIR_SWITCH="-L${oracle_lib_dir} "
		fi
		LIBS="$old_LIBS $ORACLE_LIBDIR_SWITCH -lclntsh -lnnz10"
		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 );

			],
			ORACLE_LIBS="$ORACLE_LIBDIR_SWITCH -lclntsh -lnnz10",
			ORACLE_LIBS=
		)

		LIBS="$old_LIBS"
		CFLAGS="$old_CFLAGS"
	fi


	if test "x$ORACLE_INCLUDE" = "x"; then
		AC_MSG_RESULT(no)
		AC_MSG_WARN([oracle headers not found.  Use --with-oracle-include-dir=<path>.])
		fail="$fail oci.h"
	else
		sql_oracle_cflags="${sql_oracle_cflags} ${ORACLE_INCLUDE}"
		AC_MSG_RESULT(yes)


		if test "x$ORACLE_LIBS" = "x"; then
			AC_MSG_WARN([oracle libraries not found.  Use --with-oracle-lib-dir=<path>.])
			fail="$fail libclntsh libnnz10"
		else
			sql_oracle_ldflags="${sql_oracle_ldflags} $ORACLE_LIBS"
			AC_MSG_RESULT(yes)
		fi
	fi

	targetname=modname
else
	targetname=
	echo \*\*\* module modname is disabled.
fi

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
		AC_MSG_WARN([silently not building ]modname[.])
		AC_MSG_WARN([FAILURE: ]modname[ requires:$fail.]);
		targetname=
	fi
fi

AC_SUBST(sql_oracle_ldflags)
AC_SUBST(sql_oracle_cflags)
AC_SUBST(targetname)
AC_OUTPUT(Makefile)