xref: /php-src/ext/odbc/config.m4 (revision 6fed6d85)
1AC_DEFUN([PHP_ODBC_CHECK_HEADER],[
2if ! test -f "$ODBC_INCDIR/$1"; then
3  AC_MSG_ERROR([ODBC header file '$ODBC_INCDIR/$1' not found!])
4fi
5])
6
7dnl
8dnl Figure out which library file to link with for the Solid support.
9dnl
10AC_DEFUN([PHP_ODBC_FIND_SOLID_LIBS],[
11  AC_MSG_CHECKING([Solid library file])
12  ac_solid_uname_r=`uname -r 2>/dev/null`
13  ac_solid_uname_s=`uname -s 2>/dev/null`
14  case $ac_solid_uname_s in
15    AIX) ac_solid_os=a3x;;   # a4x for AIX4/ Solid 2.3/3.0 only
16    HP-UX) ac_solid_os=h9x;; # h1x for hpux11, h0x for hpux10
17    Linux)
18      if ldd -v /bin/sh | grep GLIBC > /dev/null; then
19        AC_DEFINE(SS_LINUX,1,[Needed in sqlunix.h ])
20        ac_solid_os=l2x
21      else
22        AC_DEFINE(SS_LINUX,1,[Needed in sqlunix.h ])
23        ac_solid_os=lux
24      fi;;
25    SunOS)
26      ac_solid_os=ssx;; # should we deal with SunOS 4?
27    FreeBSD)
28      if test `expr $ac_solid_uname_r : '\(.\)'` -gt "2"; then
29        AC_DEFINE(SS_FBX,1,[Needed in sqlunix.h for wchar defs ])
30        ac_solid_os=fex
31      else
32        AC_DEFINE(SS_FBX,1,[Needed in sqlunix.h for wchar defs ])
33        ac_solid_os=fbx
34      fi;;
35  esac
36
37  if test -f $1/soc${ac_solid_os}35.a; then
38    ac_solid_version=35
39    ac_solid_prefix=soc
40  elif test -f $1/scl${ac_solid_os}30.a; then
41    ac_solid_version=30
42    ac_solid_prefix=scl
43  elif test -f $1/scl${ac_solid_os}23.a; then
44    ac_solid_version=23
45    ac_solid_prefix=scl
46  fi
47
48dnl Check for the library files, and setup the ODBC_LIBS path.
49if test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so && \
50  test ! -f $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a; then
51  dnl we have an error and should bail out, as we can't find the libs!
52  echo ""
53  echo "*********************************************************************"
54  echo "* Unable to locate $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so or $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
55  echo "* Please correct this by creating the following links and reconfiguring:"
56  echo "* $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.a"
57  echo "* $1/${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so -> $1/lib${ac_solid_prefix}${ac_solid_os}${ac_solid_version}.so"
58  echo "*********************************************************************"
59else
60  ODBC_LFLAGS=-L$1
61  ODBC_LIBS=-l${ac_solid_prefix}${ac_solid_os}${ac_solid_version}
62fi
63
64  AC_MSG_RESULT(`echo $ODBC_LIBS | sed -e 's!.*/!!'`)
65])
66
67
68dnl
69dnl Figure out which library file to link with for the Empress support.
70dnl
71
72AC_DEFUN([PHP_ODBC_FIND_EMPRESS_LIBS],[
73  AC_MSG_CHECKING([Empress library file])
74  ODBC_LIBS=`echo $1/libempodbccl.so | cut -d' ' -f1`
75  if test ! -f $ODBC_LIBS; then
76    ODBC_LIBS=`echo $1/libempodbccl.so | cut -d' ' -f1`
77  fi
78  AC_MSG_RESULT(`echo $ODBC_LIBS | sed -e 's!.*/!!'`)
79])
80
81AC_DEFUN([PHP_ODBC_FIND_EMPRESS_BCS_LIBS],[
82  AC_MSG_CHECKING([Empress local access library file])
83  ODBCBCS_LIBS=`echo $1/libempodbcbcs.a | cut -d' ' -f1`
84  if test ! -f $ODBCBCS_LIBS; then
85    ODBCBCS_LIBS=`echo $1/libempodbcbcs.a | cut -d' ' -f1`
86  fi
87  AC_MSG_RESULT(`echo $ODBCBCS_LIBS | sed -e 's!.*/!!'`)
88])
89
90dnl
91dnl configure options
92dnl
93
94PHP_ARG_WITH([odbcver],,
95  [AS_HELP_STRING([[--with-odbcver[=HEX]]],
96    [Force support for the passed ODBC version. A hex number is expected,
97    default 0x0350. Use the special value of 0 to prevent an explicit ODBCVER to
98    be defined.])],
99  [0x0350])
100
101if test -z "$ODBC_TYPE"; then
102PHP_ARG_WITH([adabas],,
103  [AS_HELP_STRING([[--with-adabas[=DIR]]],
104    [Include Adabas D support [/usr/local]])])
105
106  AC_MSG_CHECKING([for Adabas support])
107  if test "$PHP_ADABAS" != "no"; then
108    if test "$PHP_ADABAS" = "yes"; then
109      PHP_ADABAS=/usr/local
110    fi
111    PHP_ADD_INCLUDE($PHP_ADABAS/incl)
112    PHP_ADD_LIBPATH($PHP_ADABAS/$PHP_LIBDIR)
113    ODBC_OBJS="$PHP_ADABAS/$PHP_LIBDIR/odbclib.a"
114    ODBC_LIB="$abs_builddir/ext/odbc/libodbc_adabas.a"
115    $srcdir/build/shtool mkdir -f -p ext/odbc
116    rm -f "$ODBC_LIB"
117    cp "$ODBC_OBJS" "$ODBC_LIB"
118    PHP_ADD_LIBRARY(sqlptc)
119    PHP_ADD_LIBRARY(sqlrte)
120    PHP_ADD_LIBRARY_WITH_PATH(odbc_adabas, $abs_builddir/ext/odbc)
121    ODBC_TYPE=adabas
122    ODBC_INCDIR=$PHP_ADABAS/incl
123    PHP_ODBC_CHECK_HEADER(sqlext.h)
124    AC_DEFINE(HAVE_ADABAS,1,[ ])
125    AC_MSG_RESULT([$ext_output])
126  else
127    AC_MSG_RESULT(no)
128  fi
129fi
130
131if test -z "$ODBC_TYPE"; then
132PHP_ARG_WITH([sapdb],,
133  [AS_HELP_STRING([[--with-sapdb[=DIR]]],
134    [Include SAP DB support [/usr/local]])])
135
136  AC_MSG_CHECKING([for SAP DB support])
137  if test "$PHP_SAPDB" != "no"; then
138    if test "$PHP_SAPDB" = "yes"; then
139      PHP_SAPDB=/usr/local
140    fi
141    PHP_ADD_INCLUDE($PHP_SAPDB/incl)
142    PHP_ADD_LIBPATH($PHP_SAPDB/$PHP_LIBDIR)
143    PHP_ADD_LIBRARY(sqlod)
144    ODBC_TYPE=sapdb
145    AC_DEFINE(HAVE_SAPDB,1,[ ])
146    AC_MSG_RESULT([$ext_output])
147  else
148    AC_MSG_RESULT(no)
149  fi
150fi
151
152if test -z "$ODBC_TYPE"; then
153PHP_ARG_WITH([solid],,
154  [AS_HELP_STRING([[--with-solid[=DIR]]],
155    [Include Solid support [/usr/local/solid]])])
156
157  AC_MSG_CHECKING(for Solid support)
158  if test "$PHP_SOLID" != "no"; then
159    if test "$PHP_SOLID" = "yes"; then
160      PHP_SOLID=/usr/local/solid
161    fi
162    ODBC_INCDIR=$PHP_SOLID/include
163    ODBC_LIBDIR=$PHP_SOLID/$PHP_LIBDIR
164    ODBC_CFLAGS=-I$ODBC_INCDIR
165    ODBC_TYPE=solid
166    if test -f $ODBC_LIBDIR/soc*35.a; then
167      AC_DEFINE(HAVE_SOLID_35,1,[ ])
168    elif test -f $ODBC_LIBDIR/scl*30.a; then
169      AC_DEFINE(HAVE_SOLID_30,1,[ ])
170    elif test -f $ODBC_LIBDIR/scl*23.a; then
171      AC_DEFINE(HAVE_SOLID,1,[ ])
172    fi
173    AC_MSG_RESULT([$ext_output])
174    PHP_ODBC_FIND_SOLID_LIBS($ODBC_LIBDIR)
175  else
176    AC_MSG_RESULT(no)
177  fi
178fi
179
180if test -z "$ODBC_TYPE"; then
181PHP_ARG_WITH([ibm-db2],,
182  [AS_HELP_STRING([[--with-ibm-db2[=DIR]]],
183    [Include IBM DB2 support [/home/db2inst1/sqllib]])])
184
185  AC_MSG_CHECKING(for IBM DB2 support)
186  if test "$PHP_IBM_DB2" != "no"; then
187    if test "$PHP_IBM_DB2" = "yes"; then
188      ODBC_INCDIR=/home/db2inst1/sqllib/include
189      ODBC_LIBDIR=/home/db2inst1/sqllib/lib
190    else
191      ODBC_INCDIR=$PHP_IBM_DB2/include
192      ODBC_LIBDIR=$PHP_IBM_DB2/$PHP_LIBDIR
193    fi
194
195    PHP_ODBC_CHECK_HEADER(sqlcli1.h)
196
197    ODBC_CFLAGS=-I$ODBC_INCDIR
198    ODBC_LFLAGS=-L$ODBC_LIBDIR
199    ODBC_TYPE=ibm-db2
200    ODBC_LIBS=-ldb2
201
202    PHP_TEST_BUILD(SQLExecute, [
203      AC_DEFINE(HAVE_IBMDB2,1,[ ])
204      AC_MSG_RESULT([$ext_output])
205    ], [
206      AC_MSG_RESULT(no)
207      AC_MSG_ERROR([
208build test failed. Please check the config.log for details.
209You need to source your DB2 environment before running PHP configure:
210# . \$IBM_DB2/db2profile
211])
212    ], [
213      $ODBC_LFLAGS $ODBC_LIBS
214    ])
215  else
216    AC_MSG_RESULT(no)
217  fi
218fi
219
220if test -z "$ODBC_TYPE"; then
221PHP_ARG_WITH([empress],,
222  [AS_HELP_STRING([[--with-empress[=DIR]]],
223    [Include Empress support $EMPRESSPATH (Empress Version >= 8.60
224    required)])])
225
226  AC_MSG_CHECKING(for Empress support)
227  if test "$PHP_EMPRESS" != "no"; then
228    if test "$PHP_EMPRESS" = "yes"; then
229      ODBC_INCDIR=$EMPRESSPATH/include/odbc
230      ODBC_LIBDIR=$EMPRESSPATH/shlib
231    else
232      ODBC_INCDIR=$PHP_EMPRESS/include/odbc
233      ODBC_LIBDIR=$PHP_EMPRESS/shlib
234    fi
235    ODBC_CFLAGS=-I$ODBC_INCDIR
236    ODBC_LFLAGS=-L$ODBC_LIBDIR
237    ODBC_TYPE=empress
238    AC_DEFINE(HAVE_EMPRESS,1,[ ])
239    AC_MSG_RESULT([$ext_output])
240    PHP_ODBC_FIND_EMPRESS_LIBS($ODBC_LIBDIR)
241  else
242    AC_MSG_RESULT(no)
243  fi
244fi
245
246if test -z "$ODBC_TYPE"; then
247PHP_ARG_WITH([empress-bcs],,
248  [AS_HELP_STRING([[--with-empress-bcs[=DIR]]],
249    [Include Empress Local Access support $EMPRESSPATH (Empress Version >=
250    8.60 required)])])
251
252  AC_MSG_CHECKING(for Empress local access support)
253  if test "$PHP_EMPRESS_BCS" != "no"; then
254    if test "$PHP_EMPRESS_BCS" = "yes"; then
255      ODBC_INCDIR=$EMPRESSPATH/include/odbc
256      ODBC_LIBDIR=$EMPRESSPATH/shlib
257    else
258      ODBC_INCDIR=$PHP_EMPRESS_BCS/include/odbc
259      ODBC_LIBDIR=$PHP_EMPRESS_BCS/shlib
260    fi
261    CC="empocc -bcs";export CC;
262    LD="empocc -bcs";export LD;
263    ODBC_CFLAGS=-I$ODBC_INCDIR
264    ODBC_LFLAGS=-L$ODBC_LIBDIR
265    LIST=`empocc -listlines -bcs -o a a.c`
266
267    NEWLIST=
268    for I in $LIST
269    do
270      case $I in
271        $EMPRESSPATH/odbccl/lib/* | \
272        $EMPRESSPATH/rdbms/lib/* | \
273        $EMPRESSPATH/common/lib/*)
274              NEWLIST="$NEWLIST $I"
275              ;;
276      esac
277    done
278    ODBC_LIBS="-lempphpbcs -lms -lmscfg -lbasic -lbasic_os -lnlscstab -lnlsmsgtab -lm -ldl -lcrypt"
279    ODBC_TYPE=empress-bcs
280    AC_DEFINE(HAVE_EMPRESS,1,[ ])
281    AC_MSG_RESULT([$ext_output])
282    PHP_ODBC_FIND_EMPRESS_BCS_LIBS($ODBC_LIBDIR)
283  else
284    AC_MSG_RESULT(no)
285  fi
286fi
287
288if test -z "$ODBC_TYPE"; then
289PHP_ARG_WITH([custom-odbc],,
290  [AS_HELP_STRING([[--with-custom-odbc[=DIR]]],
291    [Include user defined ODBC support. DIR is ODBC install base directory
292    [/usr/local]. Make sure to define CUSTOM_ODBC_LIBS and have some odbc.h in
293    your include dirs. For example, you should define following for Sybase SQL
294    Anywhere 5.5.00 on QNX, prior to running this configure script:
295    CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix
296    CUSTOM_ODBC_LIBS="-ldblib -lodbc"])])
297
298  AC_MSG_CHECKING(for a custom ODBC support)
299  if test "$PHP_CUSTOM_ODBC" != "no"; then
300    if test "$PHP_CUSTOM_ODBC" = "yes"; then
301      PHP_CUSTOM_ODBC=/usr/local
302    fi
303    ODBC_INCDIR=$PHP_CUSTOM_ODBC/include
304    ODBC_LIBDIR=$PHP_CUSTOM_ODBC/$PHP_LIBDIR
305    ODBC_LFLAGS=-L$ODBC_LIBDIR
306    ODBC_CFLAGS=-I$ODBC_INCDIR
307    ODBC_LIBS=$CUSTOM_ODBC_LIBS
308    ODBC_TYPE=custom-odbc
309    AC_DEFINE(HAVE_CODBC,1,[ ])
310    AC_MSG_RESULT([$ext_output])
311  else
312    AC_MSG_RESULT(no)
313  fi
314fi
315
316if test -z "$ODBC_TYPE"; then
317PHP_ARG_WITH([iodbc],,
318  [AS_HELP_STRING([--with-iodbc],
319    [Include iODBC support])])
320
321  AC_MSG_CHECKING(whether to build with iODBC support)
322  if test "$PHP_IODBC" != "no"; then
323    AC_MSG_RESULT(yes)
324    PKG_CHECK_MODULES([ODBC], [libiodbc])
325    PHP_EVAL_INCLINE($ODBC_CFLAGS)
326    ODBC_TYPE=iodbc
327    AC_DEFINE(HAVE_IODBC,1,[ ])
328  else
329    AC_MSG_RESULT(no)
330  fi
331fi
332
333if test -z "$ODBC_TYPE"; then
334PHP_ARG_WITH([esoob],,
335  [AS_HELP_STRING([[--with-esoob[=DIR]]],
336    [Include Easysoft OOB support [/usr/local/easysoft/oob/client]])])
337
338  AC_MSG_CHECKING(for Easysoft ODBC-ODBC Bridge support)
339  if test "$PHP_ESOOB" != "no"; then
340    if test "$PHP_ESOOB" = "yes"; then
341      PHP_ESOOB=/usr/local/easysoft/oob/client
342    fi
343    ODBC_INCDIR=$PHP_ESOOB/include
344    ODBC_LIBDIR=$PHP_ESOOB/$PHP_LIBDIR
345    ODBC_LFLAGS=-L$ODBC_LIBDIR
346    ODBC_CFLAGS=-I$ODBC_INCDIR
347    ODBC_LIBS=-lesoobclient
348    ODBC_TYPE=esoob
349    AC_DEFINE(HAVE_ESOOB,1,[ ])
350    AC_MSG_RESULT([$ext_output])
351  else
352    AC_MSG_RESULT(no)
353  fi
354fi
355
356if test -z "$ODBC_TYPE"; then
357PHP_ARG_WITH([unixODBC],,
358  [AS_HELP_STRING([--with-unixODBC],
359    [Include unixODBC support])])
360
361  AC_MSG_CHECKING(whether to build with unixODBC support)
362  if test "$PHP_UNIXODBC" != "no"; then
363    if test "$PHP_UNIXODBC" = "yes"; then
364      AC_MSG_RESULT(yes from pkgconfig)
365      PKG_CHECK_MODULES([ODBC], [odbc])
366      PHP_EVAL_INCLINE($ODBC_CFLAGS)
367    else
368      dnl keep old DIR way for old version without libodbc.pc
369      ODBC_INCDIR=$PHP_UNIXODBC/include
370      ODBC_LIBDIR=$PHP_UNIXODBC/$PHP_LIBDIR
371      ODBC_LFLAGS=-L$ODBC_LIBDIR
372      ODBC_CFLAGS=-I$ODBC_INCDIR
373      ODBC_LIBS=-lodbc
374      PHP_ODBC_CHECK_HEADER(sqlext.h)
375      AC_MSG_RESULT(yes in $PHP_UNIXODBC)
376    fi
377    ODBC_TYPE=unixODBC
378    AC_DEFINE(HAVE_UNIXODBC,1,[ ])
379  else
380    AC_MSG_RESULT(no)
381  fi
382fi
383
384if test -z "$ODBC_TYPE"; then
385PHP_ARG_WITH([dbmaker],,
386  [AS_HELP_STRING([[--with-dbmaker[=DIR]]],
387    [Include DBMaker support])])
388
389  AC_MSG_CHECKING(for DBMaker support)
390  if test "$PHP_DBMAKER" != "no"; then
391    if test "$PHP_DBMAKER" = "yes"; then
392      dnl Find dbmaker's home directory
393      DBMAKER_HOME=`grep "^dbmaker:" /etc/passwd | $AWK -F: '{print $6}'`
394
395      dnl check DBMaker version (from 5.0 to 2.0)
396      DBMAKER_VERSION=5.0
397
398      while test ! -d $DBMAKER_HOME/$DBMAKER_VERSION && test "$DBMAKER_VERSION" != "2.9"; do
399        DM_VER=`echo $DBMAKER_VERSION | sed -e 's/\.//' | $AWK '{ print $1-1;}'`
400        MAJOR_V=`echo $DM_VER | $AWK '{ print $1/10; }'  | $AWK -F. '{ print $1; }'`
401        MINOR_V=`echo $DM_VER | $AWK '{ print $1%10; }'`
402        DBMAKER_VERSION=$MAJOR_V.$MINOR_V
403      done
404
405      if test "$DBMAKER_VERSION" = "2.9"; then
406        PHP_DBMAKER=$DBMAKER_HOME
407      else
408        PHP_DBMAKER=$DBMAKER_HOME/$DBMAKER_VERSION
409      fi
410    fi
411
412    ODBC_INCDIR=$PHP_DBMAKER/include
413    ODBC_LIBDIR=$PHP_DBMAKER/$PHP_LIBDIR
414    ODBC_CFLAGS=-I$ODBC_INCDIR
415    ODBC_LFLAGS=-L$ODBC_LIBDIR
416    ODBC_LIBS="-ldmapic -lc"
417    ODBC_TYPE=dbmaker
418
419    AC_DEFINE(HAVE_DBMAKER,1,[Whether you want DBMaker])
420
421    if test "$ext_shared" = "yes"; then
422      AC_MSG_RESULT([yes (shared)])
423      ODBC_LIBS="-ldmapic -lc -lm"
424      ODBC_SHARED="odbc.la"
425    else
426      AC_MSG_RESULT([yes (static)])
427      PHP_ADD_LIBRARY_WITH_PATH(dmapic, $ODBC_LIBDIR)
428      PHP_ADD_INCLUDE($ODBC_INCDIR)
429      ODBC_STATIC="libphpext_odbc.la"
430    fi
431  else
432    AC_MSG_RESULT(no)
433  fi
434fi
435
436if test "no" != "$PHP_ODBCVER"; then
437  if test "$PHP_ODBCVER" != "0"; then
438    AC_DEFINE_UNQUOTED(ODBCVER, $PHP_ODBCVER, [ The highest supported ODBC version ])
439  fi
440else
441  AC_DEFINE(ODBCVER, 0x0350, [ The highest supported ODBC version ])
442fi
443
444dnl Extension setup
445if test -n "$ODBC_TYPE"; then
446  if test "$ODBC_TYPE" != "dbmaker"; then
447    PHP_EVAL_LIBLINE([$ODBC_LFLAGS $ODBC_LIBS], ODBC_SHARED_LIBADD)
448    if test "$ODBC_TYPE" != "solid"; then
449      AC_DEFINE(HAVE_SQLDATASOURCES,1,[ ])
450    fi
451  fi
452
453  AC_DEFINE(HAVE_UODBC,1,[ ])
454  PHP_SUBST(ODBC_SHARED_LIBADD)
455  PHP_SUBST(ODBC_INCDIR)
456  PHP_SUBST(ODBC_LIBDIR)
457  AC_SUBST([ODBC_CFLAGS])
458  AC_SUBST([ODBC_LIBS])
459  AC_SUBST([ODBC_LFLAGS])
460  AC_SUBST([ODBC_TYPE])
461
462  PHP_NEW_EXTENSION(odbc, php_odbc.c odbc_utils.c, $ext_shared,, [$ODBC_CFLAGS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
463else
464  AC_MSG_CHECKING([for any ODBC driver support])
465  AC_MSG_RESULT(no)
466fi
467