diff options
author | Marcus Boerger <helly@php.net> | 2002-11-26 12:00:25 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2002-11-26 12:00:25 +0000 |
commit | 197fd585bdf625071fefbdca221f6369034a2055 (patch) | |
tree | 6b668551af4e2fc9d4cfcae9722a70e3f720bc5e | |
parent | f88aa8045a0d3c65f7424f3a214b8947ff170b41 (diff) | |
download | php-git-197fd585bdf625071fefbdca221f6369034a2055.tar.gz |
-Disallow combining db2 with db3 which are conflicting.
-Stop searching for headers and libraries when found.
-Check version for Berkeley DB library headers.
-rw-r--r-- | ext/dba/config.m4 | 286 |
1 files changed, 174 insertions, 112 deletions
diff --git a/ext/dba/config.m4 b/ext/dba/config.m4 index d88b69fa4e..82beabeb9b 100644 --- a/ext/dba/config.m4 +++ b/ext/dba/config.m4 @@ -2,7 +2,11 @@ dnl dnl $Id$ dnl -dnl Suppose we need FlatFile if no or only CDB is used. +dnl Suppose we need FlatFile if no support or only CDB is used. + +AC_DEFUN(PHP_DBA_STD_BEGIN,[ + unset THIS_INCLUDE THIS_INC_DIR THIS_LIBS THIS_LFLAGS THIS_PREFIX THIS_RESULT +]) AC_DEFUN(PHP_TEMP_LDFLAGS,[ old_LDFLAGS=$LDFLAGS @@ -14,7 +18,6 @@ AC_DEFUN(PHP_TEMP_LDFLAGS,[ dnl Assign INCLUDE/LFLAGS from PREFIX AC_DEFUN(PHP_DBA_STD_ASSIGN,[ if test -n "$THIS_PREFIX" && test "$THIS_PREFIX" != "/usr"; then - THIS_INCLUDE=$THIS_PREFIX/include THIS_LFLAGS=$THIS_PREFIX/lib fi ]) @@ -22,30 +25,44 @@ AC_DEFUN(PHP_DBA_STD_ASSIGN,[ dnl Standard check AC_DEFUN(PHP_DBA_STD_CHECK,[ THIS_RESULT="yes" - if test "$THIS_PREFIX" != "/usr" -a "$THIS_INCLUDE" = ""; then + if test -z "$THIS_INCLUDE"; then AC_MSG_ERROR(cannot find necessary header file(s)) fi - if test "$THIS_LIBS" = "" ; then + if test -z "$THIS_LIBS"; then AC_MSG_ERROR(cannot find necessary library) fi ]) dnl Attach THIS_x to DBA_x AC_DEFUN(PHP_DBA_STD_ATTACH,[ - PHP_ADD_INCLUDE($THIS_INCLUDE) + if test -n "$THIS_INC_DIR" -a "$THIS_PREFIX" != "/usr"; then + PHP_ADD_INCLUDE($THIS_INC_DIR) + fi PHP_ADD_LIBRARY_WITH_PATH($THIS_LIBS, $THIS_LFLAGS, DBA_SHARED_LIBADD) - unset THIS_INCLUDE THIS_LIBS THIS_LFLAGS THIS_PREFIX + unset THIS_INCLUDE THIS_INC_DIR THIS_LIBS THIS_LFLAGS THIS_PREFIX ]) dnl Print the result message +dnl parameters(name [, full name [, empty or error message]]) AC_DEFUN(AC_DBA_STD_RESULT,[ + THIS_NAME=[]translit($1,a-z0-9-,A-Z0-9_) + if test -n "$2"; then + THIS_FULL_NAME="$2" + else + THIS_FULL_NAME="$THIS_NAME" + fi + AC_MSG_CHECKING(for $THIS_FULL_NAME support) + if test -n "$3"; then + AC_MSG_ERROR($3) + fi if test "$THIS_RESULT" = "yes" -o "$THIS_RESULT" = "builtin"; then HAVE_DBA=1 + eval HAVE_$THIS_NAME=1 AC_MSG_RESULT($THIS_RESULT) else AC_MSG_RESULT(no) fi - unset THIS_RESULT + unset THIS_RESULT THIS_NAME THIS_FULL_NAME ]) PHP_ARG_ENABLE(dba,whether to enable DBA, @@ -54,163 +71,200 @@ PHP_ARG_ENABLE(dba,whether to enable DBA, AC_ARG_WITH(gdbm, [ --with-gdbm[=DIR] Include GDBM support],[ if test "$withval" != "no"; then - for i in /usr/local /usr $withval; do + PHP_DBA_STD_BEGIN + for i in $withval /usr/local /usr; do if test -f "$i/include/gdbm.h"; then - THIS_PREFIX="$i" + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/gdbm.h + THIS_INC_DIR=$i/include + break fi done - unset ac_cv_lib_gdbm_gdbm_open - PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ - AC_CHECK_LIB(gdbm, gdbm_open, [AC_DEFINE(DBA_GDBM, 1, [ ]) THIS_LIBS=gdbm]) - ]) + if test -n "$THIS_INCLUDE"; then + unset ac_cv_lib_gdbm_gdbm_open + PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ + AC_CHECK_LIB(gdbm, gdbm_open, [ + AC_DEFINE(DBA_GDBM, 1, [ ]) + THIS_LIBS=gdbm + break + ]) + ]) + fi PHP_DBA_STD_ASSIGN PHP_DBA_STD_CHECK PHP_DBA_STD_ATTACH fi ]) -AC_MSG_CHECKING(for GDBM support) -AC_DBA_STD_RESULT +AC_DBA_STD_RESULT(gdbm) AC_ARG_WITH(ndbm, [ --with-ndbm[=DIR] Include NDBM support],[ if test "$withval" != "no"; then - for i in /usr/local /usr $withval; do - if test -f "$i/include/db1/ndbm.h" ; then + PHP_DBA_STD_BEGIN + for i in $withval /usr/local /usr; do + if test -f "$i/include/ndbm.h"; then THIS_PREFIX=$i - NDBM_EXTRA=db1/ndbm.h - elif test -f "$i/include/ndbm.h" ; then + THIS_INCLUDE=$i/include/ndbm.h + break + elif test -f "$i/include/db1/ndbm.h"; then THIS_PREFIX=$i - NDBM_EXTRA=ndbm.h + THIS_INCLUDE=$i/include/db1/ndbm.h + break fi - done + done - if test "$NDBM_EXTRA" != ""; then - AC_DEFINE_UNQUOTED(NDBM_INCLUDE_FILE, "$NDBM_EXTRA", [ ]) + if test -n "$THIS_INCLUDE"; then + AC_DEFINE_UNQUOTED(NDBM_INCLUDE_FILE, "$THIS_INCLUDE", [ ]) + for LIB in ndbm db1 c; do + PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ + AC_CHECK_LIB($LIB, dbm_open, [ + AC_DEFINE(DBA_NDBM,1, [ ]) + THIS_LIBS=$LIB + break + ]) + ]) + done fi - for LIB in db1 ndbm c; do - PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ - AC_CHECK_LIB($LIB, dbm_open, [AC_DEFINE(DBA_NDBM,1, [ ]) THIS_LIBS=$LIB]) - ]) - done - PHP_DBA_STD_ASSIGN PHP_DBA_STD_CHECK PHP_DBA_STD_ATTACH fi ]) -AC_MSG_CHECKING(for NDBM support) -AC_DBA_STD_RESULT - -AC_ARG_WITH(db2, -[ --with-db2[=DIR] Include Berkeley DB2 support],[ - if test "$withval" != "no"; then - for i in /usr/local /usr /usr/BerkeleyDB $withval/BerkeleyDB $withval; do - if test -f "$i/db2/db.h"; then - THIS_PREFIX=$i - DB2_EXTRA=db2 - elif test -f "$i/include/db2/db.h"; then - THIS_PREFIX=$i - DB2_EXTRA=db2/db.h - elif test -f "$i/include/db/db2.h"; then - THIS_PREFIX=$i - DB2_EXTRA=db/db2.h - elif test -f "$i/include/db2.h"; then - THIS_PREFIX=$i - DB2_EXTRA=db2.h - elif test -f "$i/include/db.h" ; then - THIS_PREFIX=$i - DB2_EXTRA=db.h - fi - done +AC_DBA_STD_RESULT(ndbm) - if test "$DB2_EXTRA" = "db2" ; then - DBA_INCLUDE="$DBA_INCLUDE -I$THIS_PREFIX/db2" - DB2_EXTRA=db.h - fi - - if test -n "$DB2_EXTRA"; then - AC_DEFINE_UNQUOTED(DB2_INCLUDE_FILE, "$DB2_EXTRA", [ ]) - fi - - for LIB in db db2 c; do - PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ - AC_CHECK_LIB($LIB, db_appinit, [AC_DEFINE(DBA_DB2,1,[ ]) THIS_LIBS=$LIB]) +dnl Berkeley specific (library and version test) +dnl parameters(version, library list, function) +AC_DEFUN(PHP_DBA_DB_CHECK,[ + for LIB in $2; do + PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ + AC_CHECK_LIB($LIB, $3, [ + AC_TRY_RUN([ +#include "$THIS_INCLUDE" +int main() { + return DB_VERSION_MAJOR >= $1 ? 0 : 1; +} + ],[ + THIS_LIBS=$LIB + break + ],[ ],[ + THIS_LIBS=$LIB + break + ]) ]) - done - - PHP_DBA_STD_ASSIGN - PHP_DBA_STD_CHECK - PHP_DBA_STD_ATTACH + ]) + done + if test -n "$THIS_LIBS"; then + AC_DEFINE(DBA_DB$1, 1, [ ]) + if test -n "$THIS_INCLUDE"; then + AC_DEFINE_UNQUOTED(DB$1_INCLUDE_FILE, "$THIS_INCLUDE", [ ]) + fi fi + PHP_DBA_STD_ASSIGN + PHP_DBA_STD_CHECK + PHP_DBA_STD_ATTACH ]) -AC_MSG_CHECKING(for Berkeley DB2 support) -AC_DBA_STD_RESULT AC_ARG_WITH(db3, [ --with-db3[=DIR] Include Berkeley DB3 support],[ if test "$withval" != "no"; then - for i in /usr/local /usr /usr/local/BerkeleyDB.3.0 $withval; do + PHP_DBA_STD_BEGIN + for i in $withval /usr/local/BerkeleyDB.3.3 /usr/local/BerkeleyDB.3.2 /usr/local/BerkeleyDB.3.1 /usr/local/BerkeleyDB.3.0 /usr/local /usr; do if test -f "$i/db3/db.h"; then THIS_PREFIX=$i - DB3_EXTRA=db3 + THIS_INCLUDE=$i/include/db3/db.h + break elif test -f "$i/include/db3/db.h"; then THIS_PREFIX=$i - DB3_EXTRA=db3/db.h + THIS_INCLUDE=$i/include/db3/db.h + break elif test -f "$i/include/db/db3.h"; then THIS_PREFIX=$i - DB3_EXTRA=db/db3.h + THIS_INCLUDE=$i/include/db/db3.h + break elif test -f "$i/include/db3.h"; then THIS_PREFIX=$i - DB3_EXTRA=db3.h + THIS_INCLUDE=$i/include/db3.h + break elif test -f "$i/include/db.h"; then THIS_PREFIX=$i - DB3_EXTRA=db.h + THIS_INCLUDE=$i/include/db.h + break fi done + PHP_DBA_DB_CHECK(3, db-3.3 db-3.2 db-3.1 db-3 db3 db, db_create) + fi + ]) +AC_DBA_STD_RESULT(db3,Berkeley DB3) - if test -n "$DB3_EXTRA"; then - AC_DEFINE_UNQUOTED(DB3_INCLUDE_FILE, "$DB3_EXTRA", [ ]) +AC_ARG_WITH(db2, +[ --with-db2[=DIR] Include Berkeley DB2 support],[ + if test "$withval" != "no"; then + PHP_DBA_STD_BEGIN + if test "$HAVE_DB3" = "1"; then + AC_DBA_STD_RESULT(db2,Berkeley DB2,You cannot combine --with-db2 with --with-db3) fi - - for LIB in db-3.1 db-3 db3 db; do - PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ - AC_CHECK_LIB($LIB, db_create, [AC_DEFINE(DBA_DB3,1,[ ]) THIS_LIBS=$LIB]) - ]) + for i in $withval $withval/BerkeleyDB /usr/BerkeleyDB /usr/local /usr; do + if test -f "$i/db2/db.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/db2/db.h + break + elif test -f "$i/include/db2/db.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/db2/db.h + break + elif test -f "$i/include/db/db2.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/db/db2.h + break + elif test -f "$i/include/db2.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/db2.h + break + elif test -f "$i/include/db.h"; then + THIS_PREFIX=$i + THIS_INCLUDE=$i/include/db.h + break + fi done - - PHP_DBA_STD_ASSIGN - PHP_DBA_STD_CHECK - PHP_DBA_STD_ATTACH + PHP_DBA_DB_CHECK(2, db-2 db2 db, db_appinit) fi ]) -AC_MSG_CHECKING(for Berkeley DB3 support) -AC_DBA_STD_RESULT +AC_DBA_STD_RESULT(db2,Berkeley DB2) AC_ARG_WITH(dbm, [ --with-dbm[=DIR] Include DBM support],[ if test "$withval" != "no"; then - for i in /usr/local /usr $withval; do - if test -f "$i/include/dbm.h" ; then + PHP_DBA_STD_BEGIN + for i in $withval /usr/local /usr; do + if test -f "$i/include/dbm.h"; then THIS_PREFIX=$i + THIS_INCLUDE=$i/include/dbm.h + THIS_INC_DIR=$i/include + break fi - done - - for LIB in db1 dbm c; do - PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ - AC_CHECK_LIB($LIB, dbminit, [AC_DEFINE(DBA_DBM,1,[ ]) THIS_LIBS=$LIB]) - ]) done + + if test -n "$THIS_INCLUDE"; then + for LIB in db1 dbm c; do + PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ + AC_CHECK_LIB($LIB, dbminit, [ + AC_DEFINE(DBA_DBM,1,[ ]) + THIS_LIBS=$LIB + break + ]) + ]) + done + fi PHP_DBA_STD_ASSIGN PHP_DBA_STD_CHECK PHP_DBA_STD_ATTACH fi ]) -AC_MSG_CHECKING(for DBM support) -AC_DBA_STD_RESULT +AC_DBA_STD_RESULT(dbm) AC_DEFUN(PHP_DBA_BUILTIN_CDB,[ PHP_ADD_BUILD_DIR($ext_builddir/libcdb) @@ -226,17 +280,27 @@ AC_ARG_WITH(cdb, if test "$withval" != "no"; then PHP_DBA_BUILTIN_CDB elif test "$withval" != "no"; then - for i in /usr/local /usr $withval; do - if test -f "$i/include/cdb.h" ; then + PHP_DBA_STD_BEGIN + for i in $withval /usr/local /usr; do + if test -f "$i/include/cdb.h"; then THIS_PREFIX=$i + THIS_INCLUDE=$i/include/cdb.h + THIS_INC_DIR=$i/include + break fi done - for LIB in cdb c; do - PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ - AC_CHECK_LIB($LIB, cdb_read, [AC_DEFINE(DBA_CDB,1,[ ]) THIS_LIBS=$LIB]) - ]) - done + if test -n "$THIS_INCLUDE"; then + for LIB in cdb c; do + PHP_TEMP_LDFLAGS(-L$THIS_PREFIX/lib,[ + AC_CHECK_LIB($LIB, cdb_read, [ + AC_DEFINE(DBA_CDB,1,[ ]) + THIS_LIBS=$LIB + break + ]) + ]) + done + fi PHP_DBA_STD_ASSIGN PHP_DBA_STD_CHECK @@ -247,8 +311,7 @@ AC_ARG_WITH(cdb, PHP_DBA_BUILTIN_CDB fi ]) -AC_MSG_CHECKING(for CDB support) -AC_DBA_STD_RESULT +AC_DBA_STD_RESULT(cdb) AC_DEFUN(PHP_DBA_BUILTIN_FLATFILE,[ PHP_ADD_BUILD_DIR($ext_builddir/libflatfile) @@ -270,8 +333,7 @@ AC_ARG_WITH(flatfile, PHP_DBA_BUILTIN_FLATFILE fi ]) -AC_MSG_CHECKING(for FlatFile support) -AC_DBA_STD_RESULT +AC_DBA_STD_RESULT(FlatFile,FlatFile) AC_MSG_CHECKING(whether to enable DBA interface) if test "$HAVE_DBA" = "1"; then |