Skip to content

Commit 6ccea93

Browse files
author
Thies C. Arntzen
committed
allow oci8 to be build as loadable module.
1 parent d8b6163 commit 6ccea93

File tree

3 files changed

+80
-138
lines changed

3 files changed

+80
-138
lines changed

ext/oci8/Makefile.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ VPATH = @srcdir@
66

77
LTLIBRARY_NAME = liboci8.la
88
LTLIBRARY_SOURCES = oci8.c
9+
LTLIBRARY_SHARED_NAME = oci8.la
10+
LTLIBRARY_SHARED_LIBADD = $(OCI8_LFLAGS) $(OCI8_LIBS)
911

1012
include $(topsrcdir)/build/ltlib.mk

ext/oci8/config.m4

Lines changed: 75 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -1,175 +1,113 @@
11
dnl $Id$
22

3-
AC_DEFUN(AC_ORACLE_VERSION,[
3+
AC_DEFUN(AC_OCI8_VERSION,[
44
AC_MSG_CHECKING([Oracle version])
5-
if test -f "$ORACLEINST_TOP/orainst/unix.rgs"
6-
then
7-
changequote({,})
8-
ORACLE_VERSION=`grep '"ocommon"' $ORACLEINST_TOP/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
9-
changequote([,])
10-
test -z "$ORACLE_VERSION" && ORACLE_VERSION=7.3
5+
if test -f "$OCI8_HOME/lib/libclntsh.so.8.0"; then
6+
OCI8_VERSION=8.1
7+
elif test -f "$OCI8_HOME/lib/libclntsh.so.1.0"; then
8+
OCI8_VERSION=8.0
119
else
12-
if test -f "$ORACLEINST_TOP/lib/libclntsh.so.8.0"
13-
then
14-
ORACLE_VERSION=8.1
15-
else
16-
ORACLE_VERSION=8.0
17-
fi
10+
AC_MSG_ERROR(Oracle-OCI8 needed libraries not found)
1811
fi
19-
AC_MSG_RESULT($ORACLE_VERSION)
12+
AC_MSG_RESULT($OCI8_VERSION)
2013
])
2114

2215
AC_MSG_CHECKING(for Oracle-OCI8 support)
2316
AC_ARG_WITH(oci8,
24-
[ --with-oci8[=DIR] Include Oracle database support. DIR is Oracle's
17+
[ --with-oci8[=DIR] Include Oracle-OCI8 database support. DIR is Oracle's
2518
home directory, defaults to \$ORACLE_HOME.],
2619
[
27-
case "$withval" in
28-
yes)
29-
ORACLEINST_TOP=$ORACLE_HOME
30-
AC_MSG_RESULT(yes)
31-
PHP_EXTENSION(oci8)
32-
;;
33-
no)
34-
ORACLEINST_TOP=
35-
AC_MSG_RESULT(no)
36-
;;
37-
*)
38-
AC_EXPAND_PATH($withval, ORACLEINST_TOP)
39-
AC_MSG_RESULT(yes)
40-
PHP_EXTENSION(oci8)
41-
;;
20+
case $withval in
21+
shared)
22+
shared=yes
23+
withval=yes
24+
OCI8_HOME=$ORACLE_HOME
25+
AC_MSG_RESULT(yes)
26+
PHP_EXTENSION(oci8,yes)
27+
;;
28+
shared,*)
29+
shared=yes
30+
withval=`echo $withval | sed -e 's/^shared,//'`
31+
AC_EXPAND_PATH($withval, OCI8_HOME)
32+
AC_MSG_RESULT(yes)
33+
PHP_EXTENSION(oci8,yes)
34+
;;
35+
*)
36+
shared=no
37+
OCI8_HOME=$ORACLE_HOME
38+
AC_MSG_RESULT(yes)
39+
PHP_EXTENSION(oci8,no)
40+
;;
4241
esac
4342
44-
if test "$ORACLEINST_TOP" != ""
45-
then
46-
47-
# Oracle include files
48-
49-
if test -f "$ORACLEINST_TOP/rdbms/public/ocidfn.h"
50-
then
51-
# V8.0.5
52-
ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/rdbms/public"
53-
elif test -f "$ORACLEINST_TOP/rdbms/demo/ocidfn.h"
54-
then
55-
# V7.[0123]
56-
ORACLE_INCLUDE=-I$ORACLEINST_TOP/rdbms/demo
43+
if test "$OCI8_HOME" != ""; then
44+
if test -d "$OCI8_HOME/rdbms/public"; then
45+
OCI8_INCLUDE="$OCI8_INCLUDE -I$OCI8_HOME/rdbms/public"
5746
fi
58-
59-
if test -d "$ORACLEINST_TOP/rdbms/public"
60-
then
61-
ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/rdbms/public"
47+
if test -d "$OCI8_HOME/rdbms/demo"; then
48+
OCI8_INCLUDE="$OCI8_INCLUDE -I$OCI8_HOME/rdbms/demo"
6249
fi
63-
64-
if test -d "$ORACLEINST_TOP/network/public"
65-
then
66-
ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/network/public"
50+
if test -d "$OCI8_HOME/network/public"; then
51+
OCI8_INCLUDE="$OCI8_INCLUDE -I$OCI8_HOME/network/public"
6752
fi
68-
69-
if test -d "$ORACLEINST_TOP/plsql/public"
70-
then
71-
# V8
72-
ORACLE_INCLUDE="$ORACLE_INCLUDE -I$ORACLEINST_TOP/plsql/public"
53+
if test -d "$OCI8_HOME/plsql/public"; then
54+
OCI8_INCLUDE="$OCI8_INCLUDE -I$OCI8_HOME/plsql/public"
7355
fi
7456
7557
# Need to know the version, otherwhise we will mixup nlsrtl
76-
AC_ORACLE_VERSION($ORACLEINST_TOP)
58+
AC_OCI8_VERSION($OCI8_HOME)
7759
78-
# Oracle libs - nightmare :-)
79-
80-
ORACLE_LIBDIR=lib
81-
ORACLE_LFLAGS="-L$ORACLEINST_TOP/$ORACLE_LIBDIR ${ld_runpath_switch}$ORACLEINST_TOP/$ORACLE_LIBDIR"
82-
if test -f "$ORACLEINST_TOP/rdbms/lib/sysliblist"
83-
then
84-
ORA_SYSLIB="`cat $ORACLEINST_TOP/rdbms/lib/sysliblist`"
60+
OCI8_LIBDIR=lib
61+
OCI8_LFLAGS="-L$OCI8_HOME/$OCI8_LIBDIR ${ld_runpath_switch}$OCI8INST_TOP/$OCI8_LIBDIR"
62+
if test -f "$OCI8_HOME/rdbms/lib/sysliblist"; then
63+
ORA_SYSLIB="`cat $OCI8_HOME/rdbms/lib/sysliblist`"
8564
else
8665
ORA_SYSLIB="-lm"
8766
fi
8867
89-
# Oracle Static libs
90-
case $ORACLE_VERSION in
91-
7.0|7.1)
92-
ORACLE_STLIBS="-locic $ORACLEINST_TOP/$ORACLE_LIBDIR/osntab.o \
93-
-lsqlnet -lora -lsqlnet -lnlsrtl -lcv6 -lcore -lnlsrtl -lcv6 \
94-
-lcore $ORA_SYSLIB -lcore $ORA_SYSLIB"
95-
if test "`uname -s 2>/dev/null`" = "AIX"; then
96-
ORACLE_STLIBS="$ORACLE_STLIBS -bI:$ORACLE_HOME/lib/mili.exp"
97-
fi
98-
;;
99-
7.2)
100-
ORACLE_STLIBS="-locic $ORACLEINST_TOP/$ORACLE_LIBDIR/osntab.o \
101-
-lsqlnet -lora -lsqlnet -lora -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 \
102-
-lcore3 $ORA_SYSLIB -lcore3 $ORA_SYSLIB"
103-
;;
104-
7.3)
105-
ORACLE_STLIBS="-lclient -lsqlnet -lncr -lsqlnet -lclient -lcommon \
106-
-lgeneric -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric \
107-
-lepc -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lcore3 -lnlsrtl3 \
108-
$ORA_SYSLIB -lcore3 $ORA_SYSLIB"
109-
;;
110-
8.0)
111-
ORACLE_STLIBS="-lclient -lsqlnet -lncr -lsqlnet -lclient -lcommon \
112-
-lgeneric -lsqlnet -lncr -lsqlnet -lclient -lcommon -lgeneric \
113-
-lepc -lnlsrtl3 -lc3v6 -lcore4 -lnlsrtl3 -lcore4 -lnlsrtl3 \
114-
$ORA_SYSLIB -lcore3 $ORA_SYSLIB"
115-
;;
116-
*)
117-
ORACLE_STLIBS=
118-
;;
119-
esac
120-
12168
# Oracle shared libs
122-
case $ORACLE_VERSION in
123-
7.0)
124-
# shared libs not supported
125-
ORACLE_SHLIBS="$ORACLE_STLIBS"
126-
;;
127-
7.1)
128-
if test -f $ORACLEINST_TOP/$ORACLE_LIBDIR/liboracle.s?
129-
then
130-
ORACLE_SHLIBS="-loracle $ORA_SYSLIB"
131-
else
132-
ORACLE_SHLIBS="$ORACLE_STLIBS"
133-
fi
134-
;;
135-
7.2|7.3)
136-
if test -f $ORACLEINST_TOP/$ORACLE_LIBDIR/libclntsh.s?
137-
then
138-
ORACLE_SHLIBS="-lclntsh $ORA_SYSLIB"
139-
else
140-
ORACLE_SHLIBS="$ORACLE_STLIBS"
141-
fi
142-
;;
69+
case $OCI8_VERSION in
14370
8.0)
144-
if test -f $ORACLEINST_TOP/$ORACLE_LIBDIR/libclntsh.s? -o \
145-
-f $ORACLEINST_TOP/$ORACLE_LIBDIR/libclntsh.a # AIX
71+
if test -f $OCI8_HOME/$OCI8_LIBDIR/libclntsh.s? -o \
72+
-f $OCI8_HOME/$OCI8_LIBDIR/libclntsh.a # AIX
14673
then
147-
if test "$CC" = "gcc" -a "`uname -sv`" = "AIX 4"; then
148-
# for Oracle 8 on AIX 4
149-
ORA_SYSLIB="$ORA_SYSLIB -nostdlib /lib/crt0_r.o /usr/lib/libpthreads.a /usr/lib/libc_r.a -lgcc"
150-
fi
151-
ORACLE_SHLIBS="-lclntsh -lpsa -lcore4 -lnlsrtl3 -lclntsh $ORA_SYSLIB"
74+
if test "$CC" = "gcc" -a "`uname -sv`" = "AIX 4"; then
75+
# for Oracle 8 on AIX 4
76+
ORA_SYSLIB="$ORA_SYSLIB -nostdlib /lib/crt0_r.o /usr/lib/libpthreads.a /usr/lib/libc_r.a -lgcc"
77+
fi
78+
79+
OCI8_SHLIBS="-lclntsh -lpsa -lcore4 -lnlsrtl3 -lclntsh $ORA_SYSLIB"
15280
else
153-
ORACLE_SHLIBS="$ORACLE_STLIBS"
81+
OCI8_SHLIBS="$OCI8_STLIBS"
15482
fi
15583
AC_DEFINE(HAVE_OCI8,1,[ ])
15684
;;
85+
15786
8.1)
158-
ORACLE_SHLIBS="-lclntsh $ORA_SYSLIB"
159-
AC_DEFINE(HAVE_OCI8,1,[ ])
160-
;;
87+
OCI8_SHLIBS="-lclntsh $ORA_SYSLIB"
88+
AC_DEFINE(HAVE_OCI8,1,[ ])
89+
;;
16190
*)
162-
ORACLE_SHLIBS=
163-
;;
91+
OCI8_SHLIBS=
92+
;;
16493
esac
16594
16695
# only using shared libs right now
167-
ORACLE_LIBS=$ORACLE_SHLIBS
96+
OCI8_LIBS=$OCI8_SHLIBS
16897
fi
169-
17098
],[AC_MSG_RESULT(no)])
171-
#EXTRA_LIBS="$EXTRA_LIBS $ORACLE_SHLIBS $ORACLE_STLIBS $ORACLE_LIBS $ORACLE_LFLAGS"
172-
EXTRA_LIBS="$EXTRA_LIBS $ORACLE_LFLAGS $ORACLE_LIBS"
173-
INCLUDES="$INCLUDES $ORACLE_INCLUDE"
174-
PHP_SUBST(ORACLE_HOME)
175-
PHP_SUBST(ORACLE_VERSION)
99+
100+
if test "$shared" = yes; then
101+
OCI8_LIBS="$OCI8_LFLAGS $OCI8_LIBS"
102+
else
103+
EXTRA_LIBS="$EXTRA_LIBS $OCI8_LFLAGS $OCI8_LIBS"
104+
INCLUDES="$INCLUDES $OCI8_INCLUDE"
105+
fi
106+
107+
INCLUDES="$INCLUDES $OCI8_INCLUDE"
108+
109+
PHP_SUBST(OCI8_HOME)
110+
PHP_SUBST(OCI8_INCLUDE)
111+
PHP_SUBST(OCI8_LFLAGS)
112+
PHP_SUBST(OCI8_LIBS)
113+

ext/oci8/oci8.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@
4848

4949
/* {{{ includes & stuff */
5050

51+
/*
5152
#if defined(COMPILE_DL)
5253
# include "dl/phpdl.h"
5354
#endif
55+
*/
5456

5557
#include "php.h"
5658

@@ -97,7 +99,7 @@ PHP_OCI_API php_oci_globals oci_globals;
9799
/* }}} */
98100
/* {{{ dynamically loadable module stuff */
99101

100-
#if COMPILE_DL
102+
#if COMPILE_DL_OCI8
101103
DLEXPORT zend_module_entry *get_module() { return &oci8_module_entry; };
102104
#endif /* COMPILE_DL */
103105

0 commit comments

Comments
 (0)