Browse Source

config.m4 redone - now supports building oracle extension as shared module

# i really hope i didn't break linking agains ancient oracle-versions!
PHP-4.0.5
Thies C. Arntzen 26 years ago
parent
commit
cd72153455
  1. 7
      ext/oracle/Makefile.in
  2. 292
      ext/oracle/config.m4
  3. 7
      ext/oracle/oracle.c

7
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

292
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

7
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();
}

Loading…
Cancel
Save