summaryrefslogtreecommitdiff
path: root/ext/oracle
diff options
context:
space:
mode:
Diffstat (limited to 'ext/oracle')
-rw-r--r--ext/oracle/Makefile.in7
-rw-r--r--ext/oracle/config.m4292
-rw-r--r--ext/oracle/oracle.c7
3 files changed, 151 insertions, 155 deletions
diff --git a/ext/oracle/Makefile.in b/ext/oracle/Makefile.in
index 03fe31681c..dc9cb9a0bc 100644
--- a/ext/oracle/Makefile.in
+++ b/ext/oracle/Makefile.in
@@ -1,5 +1,6 @@
-
-LTLIBRARY_NAME = liboracle.la
-LTLIBRARY_SOURCES = oracle.c
+LTLIBRARY_NAME = liboracle.la
+LTLIBRARY_SOURCES = oracle.c
+LTLIBRARY_SHARED_NAME = oracle.la
+LTLIBRARY_SHARED_LIBADD = $(ORACLE_SHARED_LIBADD)
include $(top_srcdir)/build/dynlib.mk
diff --git a/ext/oracle/config.m4 b/ext/oracle/config.m4
index 404e0c7720..866db62d71 100644
--- a/ext/oracle/config.m4
+++ b/ext/oracle/config.m4
@@ -2,169 +2,165 @@ dnl $Id$
AC_DEFUN(AC_ORACLE_VERSION,[
AC_MSG_CHECKING([Oracle version])
- if test -f "$ORACLEINST_TOP/orainst/unix.rgs"
- then
- ORACLE_VERSION=`grep '"ocommon"' $ORACLEINST_TOP/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
- test -z "$ORACLE_VERSION" && ORACLE_VERSION=7.3
+ if test -f "$ORACLE_DIR/orainst/unix.rgs"; then
+ ORACLE_VERSION=`grep '"ocommon"' $ORACLE_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
+ test -z "$ORACLE_VERSION" && ORACLE_VERSION=7.3
+ elif test -f "$ORACLE_DIR/lib/libclntsh.so.8.0"; then
+ ORACLE_VERSION=8.1
+ elif test -f "$ORACLE_DIR/lib/libclntsh.so.1.0"; then
+ ORACLE_VERSION=8.0
+ elif test -f "$ORACLE_DIR/lib/libclntsh.a"; then # AIX - XXX is this check still right for 8.1?
+ ORACLE_VERSION=8.0
else
- if test -f "$ORACLEINST_TOP/lib/libclntsh.so.8.0"
- then
- ORACLE_VERSION=8.1
- else
- ORACLE_VERSION=8.0
- fi
+ AC_MSG_ERROR(Oracle needed libraries not found)
fi
AC_MSG_RESULT($ORACLE_VERSION)
])
-AC_MSG_CHECKING(for Oracle support)
-AC_ARG_WITH(oracle,
-[ --with-oracle[=DIR] Include Oracle database support. DIR is Oracle's
- home directory, defaults to \$ORACLE_HOME.],
-[
- case "$withval" in
- yes)
- ORACLEINST_TOP=$ORACLE_HOME
- AC_MSG_RESULT(yes)
- PHP_EXTENSION(oracle)
- ;;
- no)
- ORACLEINST_TOP=
- AC_MSG_RESULT(no)
- ;;
- *)
- ORACLEINST_TOP=$withval
- AC_MSG_RESULT(yes)
- PHP_EXTENSION(oracle)
- ;;
- esac
+PHP_ARG_WITH(oracle, for Oracle-ORACLE support,
+[ --with-oracle[=DIR] Include oracle support. DIR is the ORACLE_HOME.])
- if test "$ORACLEINST_TOP" != ""
- then
+if test "$PHP_ORACLE" != "no"; then
+ AC_MSG_CHECKING([Oracle Install-Dir])
+ if test "$PHP_ORACLE" = "yes"; then
+ ORACLE_DIR="$ORACLE_HOME"
+ else
+ ORACLE_DIR="$PHP_ORACLE"
+ fi
+ AC_MSG_RESULT($ORACLE_DIR)
- # Oracle include files
+ if test -d "$ORACLE_DIR/rdbms/public"; then
+ AC_ADD_INCLUDE($ORACLE_DIR/rdbms/public)
+ fi
+ if test -d "$ORACLE_DIR/rdbms/demo"; then
+ AC_ADD_INCLUDE($ORACLE_DIR/rdbms/demo)
+ fi
+ if test -d "$ORACLE_DIR/network/public"; then
+ AC_ADD_INCLUDE($ORACLE_DIR/network/public)
+ fi
+ if test -d "$ORACLE_DIR/plsql/public"; then
+ AC_ADD_INCLUDE($ORACLE_DIR/plsql/public)
+ fi
- if test -f "$ORACLEINST_TOP/rdbms/public/ocidfn.h"
- then
- # V8.0.5
- ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/rdbms/public"
- elif test -f "$ORACLEINST_TOP/rdbms/demo/ocidfn.h"
- then
- # V7.[0123]
- ORACLE_INCLUDE=-I$ORACLEINST_TOP/rdbms/demo
- fi
+ if test -f "$ORACLE_DIR/lib/sysliblist"; then
+ ORACLE_SYSLIB="`cat $ORACLE_DIR/lib/sysliblist | sed -e 's/-l//g'`"
+ elif test -f "$ORACLE_DIR/rdbms/lib/sysliblist"; then
+ ORACLE_SYSLIB="`cat $ORACLE_DIR/rdbms/lib/sysliblist | sed -e 's/-l//g'`"
+ fi
- if test -d "$ORACLEINST_TOP/network/public"
- then
- # V8
- ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/network/public"
- fi
+ if test -n "$ORACLE_SYSLIB"; then
+ for oracle_slib in `echo $ORACLE_SYSLIB`; do
+ AC_ADD_LIBRARY_WITH_PATH($oracle_slib, "", ORACLE_SHARED_LIBADD)
+ done
+ fi
- if test -d "$ORACLEINST_TOP/plsql/public"
- then
- # V8
- ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/plsql/public"
- fi
+ AC_ORACLE_VERSION($ORACLE_DIR)
+ case $ORACLE_VERSION in
+ 7.0|7.1)
+ if test -f $ORACLE_DIR/lib/liboracle.s?; then
+ AC_ADD_LIBRARY_WITH_PATH(oracle, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ else
+ AC_ADD_LIBRARY_WITH_PATH(core, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(cv6, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(core, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(cv6, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(ora, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ if test "$ext_shared" = "yes"; then
+ ORACLE_SHARED_LIBADD="$ORACLE_DIR/lib/osntab.o $ORACLE_SHARED_LIBADD";
+ else
+ LIBS="$ORACLE_DIR/lib/osntab.o $LIBS";
+ fi
+ AC_ADD_LIBRARY_WITH_PATH(ocic, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ if test "`uname -s 2>/dev/null`" = "AIX"; then
+ if test "$ext_shared" = "yes"; then
+ ORACLE_SHARED_LIBADD="$ORACLE_SHARED_LIBADD -bI:$ORACLE_DIR/lib/mili.exp"
+ else
+ LIBS="$LIBS -bI:$ORACLE_DIR/lib/mili.exp"
+ fi
+ fi
+ fi
+ ;;
- # Need to know the version, otherwhise we will mixup nlsrtl
- AC_ORACLE_VERSION($ORACLEINST_TOP)
+ 7.2)
+ if test -f $ORACLE_DIR/lib/libclntsh.s?; then
+ AC_ADD_LIBRARY_WITH_PATH(clntsh, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ else
+ AC_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(c3v6, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(ora, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(ora, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ if test "$ext_shared" = "yes"; then
+ ORACLE_SHARED_LIBADD="$ORACLE_DIR/lib/osntab.o $ORACLE_SHARED_LIBADD";
+ else
+ LIBS="$ORACLE_DIR/lib/osntab.o $LIBS";
+ fi
+ AC_ADD_LIBRARY_WITH_PATH(ocic, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ fi
+ ;;
- # Oracle libs - nightmare :-)
+ 7.3)
+ if test -f $ORACLE_DIR/lib/libclntsh.s?; then
+ AC_ADD_LIBRARY_WITH_PATH(clntsh, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ else
+ AC_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(core3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(c3v6, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl3, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(epc, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(generic, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(common, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(client, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(ncr, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(generic, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(common, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(client, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(ncr, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(sqlnet, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(client, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ fi
+ ;;
+
+ 8.0)
+ AC_ADD_LIBRARY_WITH_PATH(nlsrtl3, "", ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(core4, "", ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(psa, "", ORACLE_SHARED_LIBADD)
+ AC_ADD_LIBRARY_WITH_PATH(clntsh, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ ;;
- ORACLE_LIBDIR=lib
- ORACLE_LFLAGS="-L$ORACLEINST_TOP/$ORACLE_LIBDIR ${ld_runpath_switch}$ORACLEINST_TOP/$ORACLE_LIBDIR"
- if test -f "$ORACLEINST_TOP/rdbms/lib/sysliblist"
- then
- ORA_SYSLIB="`cat $ORACLEINST_TOP/rdbms/lib/sysliblist`"
- else
- ORA_SYSLIB="-lm"
- fi
+ 8.1)
+ AC_ADD_LIBRARY_WITH_PATH(clntsh, $ORACLE_DIR/lib, ORACLE_SHARED_LIBADD)
+ ;;
+ *)
+ AC_MSG_ERROR(Unsupported Oracle version!)
+ ;;
+ esac
- # Oracle Static libs
- case $ORACLE_VERSION in
- 7.0|7.1)
- ORACLE_STLIBS="-locic $ORACLEINST_TOP/$ORACLE_LIBDIR/osntab.o \
- -lsqlnet -lora -lsqlnet -lnlsrtl -lcv6 -lcore -lnlsrtl -lcv6 \
- -lcore $ORA_SYSLIB -lcore $ORA_SYSLIB"
- if test "`uname -s 2>/dev/null`" = "AIX"; then
- ORACLE_STLIBS="$ORACLE_STLIBS -bI:$ORACLE_HOME/lib/mili.exp"
- fi
- ;;
- 7.2)
- ORACLE_STLIBS="-locic $ORACLEINST_TOP/$ORACLE_LIBDIR/osntab.o \
- -lsqlnet -lora -lsqlnet -lora -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 \
- -lcore3 $ORA_SYSLIB -lcore3 $ORA_SYSLIB"
- ;;
- 7.3)
- ORACLE_STLIBS="-lclient -lsqlnet -lncr -lsqlnet -lclient -lcommon \
- -lgeneric -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric \
- -lepc -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lcore3 -lnlsrtl3 \
- $ORA_SYSLIB -lcore3 $ORA_SYSLIB"
- ;;
- 8.0)
- ORACLE_STLIBS="-lclient -lsqlnet -lncr -lsqlnet -lclient -lcommon \
- -lgeneric -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric \
- -lepc -lnlsrtl3 -lc3v6 -lcore4 -lnlsrtl3 -lcore4 -lnlsrtl3 \
- $ORA_SYSLIB -lcore3 $ORA_SYSLIB"
- ;;
- *)
- ORACLE_STLIBS=
- ;;
- esac
-
- # Oracle shared libs
- case $ORACLE_VERSION in
- 7.0)
- # shared libs not supported
- ORACLE_SHLIBS="$ORACLE_STLIBS"
- ;;
- 7.1)
- if test -f $ORACLEINST_TOP/$ORACLE_LIBDIR/liboracle.s?
- then
- ORACLE_SHLIBS="-loracle $ORA_SYSLIB"
- else
- ORACLE_SHLIBS="$ORACLE_STLIBS"
- fi
- ;;
- 7.2|7.3)
- if test -f $ORACLEINST_TOP/$ORACLE_LIBDIR/libclntsh.s?
- then
- ORACLE_SHLIBS="-lclntsh $ORA_SYSLIB"
- else
- ORACLE_SHLIBS="$ORACLE_STLIBS"
- fi
- ;;
- 8.0)
- if test -f $ORACLEINST_TOP/$ORACLE_LIBDIR/libclntsh.s? -o \
- -f $ORACLEINST_TOP/$ORACLE_LIBDIR/libclntsh.a # AIX
- then
- if test "$CC" = "gcc" -a "`uname -sv`" = "AIX 4"; then
- # for Oracle 8 on AIX 4
- ORA_SYSLIB="$ORA_SYSLIB -nostdlib /lib/crt0_r.o /usr/lib/libpthreads.a /usr/lib/libc_r.a -lgcc"
- fi
- ORACLE_SHLIBS="-lclntsh -lpsa -lcore4 -lnlsrtl3 -lclntsh $ORA_SYSLIB"
- else
- ORACLE_SHLIBS="$ORACLE_STLIBS"
- fi
- ;;
- 8.1)
- ORACLE_SHLIBS="-lclntsh $ORA_SYSLIB"
- ;;
- *)
- ORACLE_SHLIBS=
- ;;
- esac
-
- # only using shared libs right now
- ORACLE_LIBS=$ORACLE_SHLIBS
+ PHP_EXTENSION(oracle, $ext_shared)
+ AC_DEFINE(HAVE_ORACLE,1,[ ])
- AC_DEFINE(HAVE_ORACLE,1,[ ])
+ PHP_SUBST(ORACLE_SHARED_LIBADD)
+ PHP_SUBST(ORACLE_DIR)
+ PHP_SUBST(ORACLE_VERSION)
+ # i have no idea if the following will work! thies@digicol.de 20000508
+ if test "$CC" = "gcc" -a "`uname -sv`" = "AIX 4"; then
+ if test "$ext_shared" = "yes"; then
+ ORACLE_SHARED_LIBADD="$ORACLE_SHARED_LIBADD -nostdlib /lib/crt0_r.o /usr/lib/libpthreads.a /usr/lib/libc_r.a -lgcc"
+ else
+ LIBS="$LIBS -nostdlib /lib/crt0_r.o /usr/lib/libpthreads.a /usr/lib/libc_r.a -lgcc"
+ fi
fi
-],[AC_MSG_RESULT(no)])
-#EXTRA_LIBS="$EXTRA_LIBS $ORACLE_SHLIBS $ORACLE_STLIBS $ORACLE_LIBS $ORACLE_LFLAGS"
-EXTRA_LIBS="$EXTRA_LIBS $ORACLE_LFLAGS $ORACLE_LIBS"
-INCLUDES="$INCLUDES $ORACLE_INCLUDE"
-PHP_SUBST(ORACLE_HOME)
-PHP_SUBST(ORACLE_VERSION)
+fi
diff --git a/ext/oracle/oracle.c b/ext/oracle/oracle.c
index 071d82716b..3a603e9164 100644
--- a/ext/oracle/oracle.c
+++ b/ext/oracle/oracle.c
@@ -1512,11 +1512,10 @@ PHP_MINFO_FUNCTION(oracle)
php_info_print_table_start();
php_info_print_table_row(2, "Oracle Support", "enabled");
-
#ifndef PHP_WIN32
- php_info_print_table_row(2, "Oracle Version", PHP_ORACLE_VERSION );
- php_info_print_table_row(2, "Compile-time ORACLE_HOME", PHP_ORACLE_HOME );
- php_info_print_table_row(2, "Libraries Used", PHP_ORACLE_LIBS );
+ php_info_print_table_row(2, "Oracle Version", PHP_ORACLE_VERSION );
+ php_info_print_table_row(2, "Compile-time ORACLE_HOME", PHP_ORACLE_DIR );
+ php_info_print_table_row(2, "Libraries Used", PHP_ORACLE_SHARED_LIBADD );
#endif
php_info_print_table_end();
}