diff options
Diffstat (limited to 'ext/oracle')
-rw-r--r-- | ext/oracle/Makefile.in | 7 | ||||
-rw-r--r-- | ext/oracle/config.m4 | 292 | ||||
-rw-r--r-- | ext/oracle/oracle.c | 7 |
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(); } |