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