123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870 |
- dnl -------------------------------------------------------- -*- autoconf -*-
- dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as
- dnl applicable.
- dnl
- dnl Licensed under the Apache License, Version 2.0 (the "License");
- dnl you may not use this file except in compliance with the License.
- dnl You may obtain a copy of the License at
- dnl
- dnl http://www.apache.org/licenses/LICENSE-2.0
- dnl
- dnl Unless required by applicable law or agreed to in writing, software
- dnl distributed under the License is distributed on an "AS IS" BASIS,
- dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- dnl See the License for the specific language governing permissions and
- dnl limitations under the License.
- dnl
- dnl DBM module
- dnl
- dnl APU_LIB_BERKELEY_DB(major, minor, patch, places, headers, libnames)
- dnl
- dnl Search for a useable version of Berkeley DB in a number of
- dnl common places. The installed DB must be no older than the
- dnl version given by MAJOR, MINOR, and PATCH. All of these
- dnl arguments are allowed to be '-1', indicating we don't care.
- dnl PLACES is a list of places to search for a Berkeley DB
- dnl installation. HEADERS is a list of headers to try. LIBNAMES
- dnl is a list of names of the library to attempt to link against,
- dnl typically 'db' and 'db4'.
- dnl
- dnl If we find a useable version, set CPPFLAGS and LIBS as
- dnl appropriate, and set the shell variable `apu_have_db' to
- dnl `1', and apu_db_lib to the matching lib name, and apu_db_header
- dnl to the header to use. Otherwise, set `apu_have_db' to `0'.
- dnl
- dnl This macro also checks for the `--with-berkeley-db=PATH' flag;
- dnl if given, the macro will use the PATH specified, and the
- dnl configuration script will die if it can't find the library. If
- dnl the user gives the `--without-berkeley-db' flag, the entire
- dnl search is skipped.
- dnl
- dnl We cache the results of individual searches under particular
- dnl prefixes, not the overall result of whether we found Berkeley
- dnl DB. That way, the user can re-run the configure script with
- dnl different --with-berkeley-db switch values, without interference
- dnl from the cache.
- AC_DEFUN([APU_CHECK_BERKELEY_DB], [
- bdb_version=$1
- if test "$2" != "-1"; then
- bdb_version="$bdb_version.$2"
- if test "$3" != "-1"; then
- bdb_version="$bdb_version.$3"
- fi
- fi
- bdb_places=$4
- bdb_default_search_headers=$5
- bdb_default_search_lib_names=$6
- apu_have_db=0
- # Save the original values of the flags we tweak.
- apu_check_lib_save_libs="$LIBS"
- apu_check_lib_save_ldflags="$LDFLAGS"
- apu_check_lib_save_cppflags="$CPPFLAGS"
- # The variable `found' is the prefix under which we've found
- # Berkeley DB, or `not' if we haven't found it anywhere yet.
- found=not
- for bdb_place in $bdb_places; do
- LDFLAGS="$apu_check_lib_save_ldflags"
- CPPFLAGS="$apu_check_lib_save_cppflags"
- case "$bdb_place" in
- "std" )
- description="the standard places"
- ;;
- *":"* )
- header="`echo $bdb_place | sed -e 's/:.*$//'`"
- lib="`echo $bdb_place | sed -e 's/^.*://'`"
- CPPFLAGS="$CPPFLAGS -I$header"
- LDFLAGS="$LDFLAGS -L$lib"
- description="$header and $lib"
- ;;
- * )
- if test -d $bdb_place; then
- LDFLAGS="$LDFLAGS -L$bdb_place/lib"
- CPPFLAGS="$CPPFLAGS -I$bdb_place/include"
- else
- AC_MSG_CHECKING([for Berkeley DB $bdb_version in $bdb_place])
- AC_MSG_RESULT([directory not found])
- continue
- fi
- description="$bdb_place"
- ;;
- esac
- # Since there is no AC_MSG_NOTICE in autoconf 2.13, we use this
- # trick to display a message instead.
- AC_MSG_CHECKING([for Berkeley DB $bdb_version in $description])
- AC_MSG_RESULT()
- for bdb_libname in $bdb_default_search_lib_names; do
- for bdb_header in $bdb_default_search_headers; do
- # Clear the header cache variable for each location
- changequote(,)
- cache_id="`echo ac_cv_header_${bdb_header} \
- | sed -e 's/[^a-zA-Z0-9_]/_/g'`"
- changequote([,])
- unset $cache_id
- AC_CHECK_HEADER([$bdb_header], [
- if test "$1" = "3" -o "$1" = "4"; then
- # We generate a separate cache variable for each prefix and libname
- # we search under. That way, we avoid caching information that
- # changes if the user runs `configure' with a different set of
- # switches.
- changequote(,)
- cache_id="`echo apu_cv_check_berkeley_db_$1_$2_$3_${bdb_header}_${bdb_libname}_in_${bdb_place} \
- | sed -e 's/[^a-zA-Z0-9_]/_/g'`"
- changequote([,])
- AC_MSG_CHECKING([for -l$bdb_libname])
- dnl We can't use AC_CACHE_CHECK here, because that won't print out
- dnl the value of the computed cache variable properly.
- AC_CACHE_VAL($cache_id,
- [
- APU_TRY_BERKELEY_DB($1, $2, $3, $bdb_header, $bdb_libname)
- eval "$cache_id=$apu_try_berkeley_db"
- ])
- result="`eval echo '$'$cache_id`"
- AC_MSG_RESULT($result)
- elif test "$1" = "1"; then
- AC_CHECK_LIB($bdb_libname,
- dbopen,
- [result=yes],
- [result=no]
- )
- elif test "$1" = "2"; then
- AC_CHECK_LIB($bdb_libname,
- db_open,
- [result=yes],
- [result=no]
- )
- fi
- ], [result="no"])
-
- # If we found it, no need to search any more.
- if test "$result" = "yes"; then
- found="$bdb_place"
- break
- fi
- done
- test "$found" != "not" && break
- done
- test "$found" != "not" && break
- done
- # Restore the original values of the flags we tweak.
- LDFLAGS="$apu_check_lib_save_ldflags"
- CPPFLAGS="$apu_check_lib_save_cppflags"
- case "$found" in
- "not")
- apu_have_db=0
- ;;
- "std")
- apu_db_header=$bdb_header
- apu_db_lib=$bdb_libname
- apu_have_db=1
- ;;
- *":"*)
- header="`echo $found | sed -e 's/:.*$//'`"
- lib="`echo $found | sed -e 's/^.*://'`"
- APR_ADDTO(APRUTIL_INCLUDES, [-I$header])
- APR_ADDTO(APRUTIL_LDFLAGS, [-L$lib])
- apu_db_header=$bdb_header
- apu_db_lib=$bdb_libname
- apu_have_db=1
- ;;
- *)
- APR_ADDTO(APRUTIL_INCLUDES, [-I$found/include])
- APR_ADDTO(APRUTIL_LDFLAGS, [-L$found/lib])
- apu_db_header=$bdb_header
- apu_db_lib=$bdb_libname
- apu_have_db=1
- ;;
- esac
- ])
- dnl APU_TRY_BERKELEY_DB(major, minor, patch, header, libname)
- dnl
- dnl A subroutine of APU_CHECK_BERKELEY_DB.
- dnl
- dnl Check that a new-enough version of Berkeley DB is installed.
- dnl "New enough" means no older than the version given by MAJOR,
- dnl MINOR, and PATCH. The result of the test is not cached; no
- dnl messages are printed. Use HEADER as the header file to include.
- dnl Use LIBNAME as the library to link against.
- dnl (e.g. LIBNAME should usually be "db" or "db4".)
- dnl
- dnl Set the shell variable `apu_try_berkeley_db' to `yes' if we found
- dnl an appropriate version installed, or `no' otherwise.
- dnl
- dnl This macro uses the Berkeley DB library function `db_version' to
- dnl find the version. If the library installed doesn't have this
- dnl function, then this macro assumes it is too old.
- dnl NOTE: This is pretty messed up. It seems that the FreeBSD port of
- dnl Berkeley DB 4 puts the header file in /usr/local/include/db4, but the
- dnl database library in /usr/local/lib, as libdb4.[a|so]. There is no
- dnl /usr/local/include/db.h. So if you check for /usr/local first, you'll
- dnl get the old header file from /usr/include, and the new library from
- dnl /usr/local/lib. Disaster. Thus this test compares the version constants
- dnl in the db.h header with the ones returned by db_version().
- AC_DEFUN([APU_TRY_BERKELEY_DB],
- [
- apu_try_berkeley_db_save_libs="$LIBS"
- apu_check_berkeley_db_major=$1
- apu_check_berkeley_db_minor=$2
- apu_check_berkeley_db_patch=$3
- apu_try_berkeley_db_header=$4
- apu_try_berkeley_db_libname=$5
- LIBS="$LIBS -l$apu_try_berkeley_db_libname"
- AC_TRY_RUN(
- [
- #include <stdio.h>
- #include <$apu_try_berkeley_db_header>
- main ()
- {
- int major, minor, patch;
- db_version(&major, &minor, &patch);
- /* Sanity check: ensure that db.h constants actually match the db library */
- if (major != DB_VERSION_MAJOR
- || minor != DB_VERSION_MINOR
- || patch != DB_VERSION_PATCH)
- exit (1);
- /* Run-time check: ensure the library claims to be the correct version. */
- if ($apu_check_berkeley_db_major != -1) {
- if (major < $apu_check_berkeley_db_major)
- exit (1);
- if (major > $apu_check_berkeley_db_major)
- exit (0);
- }
- if ($apu_check_berkeley_db_minor != -1) {
- if (minor < $apu_check_berkeley_db_minor)
- exit (1);
- if (minor > $apu_check_berkeley_db_minor)
- exit (0);
- }
- if ($apu_check_berkeley_db_patch == -1
- || patch >= $apu_check_berkeley_db_patch)
- exit (0);
- else
- exit (1);
- }
- ],
- [apu_try_berkeley_db=yes],
- [apu_try_berkeley_db=no],
- [apu_try_berkeley_db=yes]
- )
- LIBS="$apu_try_berkeley_db_save_libs"
- ]
- )
- dnl
- dnl APU_CHECK_DB1: is DB1 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB1], [
- places=$1
- if test -z "$places"; then
- places="std"
- fi
- APU_CHECK_BERKELEY_DB(1, 0, 0,
- "$places",
- "db1/db.h db.h",
- "db1"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=1
- fi
- ])
- dnl
- dnl APU_CHECK_DB185: is DB1.85 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- dnl NB: BerkelyDB v2 and above can be compiled in 1.85 mode
- dnl which has a libdb not libdb1 or libdb185
- AC_DEFUN([APU_CHECK_DB185], [
- places=$1
- if test -z "$places"; then
- places="std"
- fi
- APU_CHECK_BERKELEY_DB(1, -1, -1,
- "$places",
- "db_185.h",
- "db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=185
- fi
- ])
- dnl
- dnl APU_CHECK_DB2: is DB2 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB2], [
- places=$1
- if test -z "$places"; then
- places="std"
- fi
- APU_CHECK_BERKELEY_DB(2, -1, -1,
- "$places",
- "db2/db.h db.h",
- "db2 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=2
- fi
- ])
- dnl
- dnl APU_CHECK_DB3: is DB3 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB3], [
- places=$1
- if test -z "$places"; then
- places="std"
- fi
- APU_CHECK_BERKELEY_DB(3, -1, -1,
- "$places",
- "db3/db.h db.h",
- "db3 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=3
- fi
- ])
- dnl
- dnl APU_CHECK_DB4: is DB4 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB4], [
- places=$1
- if test -z "$places"; then
- places="std /usr/local /usr/local/BerkeleyDB.4.0 /boot/home/config"
- fi
- APU_CHECK_BERKELEY_DB("4", "0", "-1",
- "$places",
- "db4/db.h db.h",
- "db-4.0 db4 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=4
- fi
- ])
- dnl
- dnl APU_CHECK_DB41: is DB4.1 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB41], [
- places=$1
- if test -z "$places"; then
- places="std /usr/local /usr/local/BerkeleyDB.4.1 /boot/home/config"
- fi
- APU_CHECK_BERKELEY_DB("4", "1", "-1",
- "$places",
- "db41/db.h db4/db.h db.h",
- "db-4.1 db41 db4 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=4
- fi
- ])
- dnl
- dnl APU_CHECK_DB42: is DB4.2 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB42], [
- places=$1
- if test -z "$places"; then
- places="std /usr/local /usr/local/BerkeleyDB.4.2 /boot/home/config"
- fi
- APU_CHECK_BERKELEY_DB("4", "2", "-1",
- "$places",
- "db42/db.h db4/db.h db.h",
- "db-4.2 db42 db4 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=4
- fi
- ])
- dnl
- dnl APU_CHECK_DB43: is DB4.3 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB43], [
- places=$1
- if test -z "$places"; then
- places="std /usr/local/BerkeleyDB.4.3 /boot/home/config"
- fi
- APU_CHECK_BERKELEY_DB("4", "3", "-1",
- "$places",
- "db43/db.h db4/db.h db.h",
- "db-4.3 db4-4.3 db43 db4 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=4
- fi
- ])
- dnl
- dnl APU_CHECK_DB44: is DB4.4 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB44], [
- places=$1
- if test -z "$places"; then
- places="std /usr/local/BerkeleyDB.4.4 /boot/home/config"
- fi
- APU_CHECK_BERKELEY_DB("4", "4", "-1",
- "$places",
- "db44/db.h db4/db.h db.h",
- "db-4.4 db4-4.4 db44 db4 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=4
- fi
- ])
- dnl
- dnl APU_CHECK_DB45: is DB4.5 present?
- dnl
- dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version
- dnl
- AC_DEFUN([APU_CHECK_DB45], [
- places=$1
- if test -z "$places"; then
- places="std /usr/local/BerkeleyDB.4.5 /boot/home/config"
- fi
- APU_CHECK_BERKELEY_DB("4", "5", "-1",
- "$places",
- "db45/db.h db4/db.h db.h",
- "db-4.5 db4-4.5 db45 db4 db"
- )
- if test "$apu_have_db" = "1"; then
- apu_db_version=4
- fi
- ])
- AC_DEFUN([APU_CHECK_DB], [
- requested=$1
- check_places=$2
- case "$requested" in
- db)
- APU_CHECK_DB_ALL("$check_places")
- if test "$apu_have_db" = "0"; then
- AC_MSG_ERROR(Berkeley db requested, but not found)
- fi
- ;;
- db1)
- APU_CHECK_DB1("$check_places")
- if test "$apu_db_version" != "1"; then
- AC_MSG_ERROR(Berkeley db1 not found)
- fi
- ;;
- db185)
- APU_CHECK_DB185("$check_places")
- if test "$apu_db_version" != "185"; then
- AC_MSG_ERROR(Berkeley db185 not found)
- fi
- ;;
- db2)
- APU_CHECK_DB2("$check_places")
- if test "$apu_db_version" != "2"; then
- AC_MSG_ERROR(Berkeley db2 not found)
- fi
- ;;
- db3)
- APU_CHECK_DB3("$check_places")
- if test "$apu_db_version" != "3"; then
- AC_MSG_ERROR(Berkeley db3 not found)
- fi
- ;;
- db4)
- APU_CHECK_DB4("$check_places")
- if test "$apu_db_version" != "4"; then
- AC_MSG_ERROR(Berkeley db4 not found)
- fi
- ;;
- db41)
- APU_CHECK_DB41("$check_places")
- if test "$apu_db_version" != "4"; then
- AC_MSG_ERROR(Berkeley db4 not found)
- fi
- ;;
- db42)
- APU_CHECK_DB42("$check_places")
- if test "$apu_db_version" != "4"; then
- AC_MSG_ERROR(Berkeley db4 not found)
- fi
- ;;
- db43)
- APU_CHECK_DB43("$check_places")
- if test "$apu_db_version" != "4"; then
- AC_MSG_ERROR(Berkeley db4 not found)
- fi
- ;;
- db44)
- APU_CHECK_DB44("$check_places")
- if test "$apu_db_version" != "4"; then
- AC_MSG_ERROR(Berkeley db4 not found)
- fi
- ;;
- db45)
- APU_CHECK_DB44("$check_places")
- if test "$apu_db_version" != "4"; then
- AC_MSG_ERROR(Berkeley db4 not found)
- fi
- ;;
- default)
- APU_CHECK_DB_ALL("$check_places")
- ;;
- esac
- ])
- dnl
- dnl APU_CHECK_DB_ALL: Try all Berkeley DB versions, from 4.3 to 1.
- dnl
- AC_DEFUN([APU_CHECK_DB_ALL], [
- all_places=$1
-
- APU_CHECK_DB45("$all_places")
- if test "$apu_db_version" != "4"; then
- APU_CHECK_DB44("$all_places")
- if test "$apu_db_version" != "4"; then
- APU_CHECK_DB43("$all_places")
- if test "$apu_db_version" != "4"; then
- APU_CHECK_DB42("$all_places")
- if test "$apu_db_version" != "4"; then
- APU_CHECK_DB41("$all_places")
- if test "$apu_db_version" != "4"; then
- APU_CHECK_DB4("$all_places")
- if test "$apu_db_version" != "4"; then
- APU_CHECK_DB3("$all_places")
- if test "$apu_db_version" != "3"; then
- APU_CHECK_DB2("$all_places")
- if test "$apu_db_version" != "2"; then
- APU_CHECK_DB1("$all_places")
- if test "$apu_db_version" != "1"; then
- APU_CHECK_DB185("$all_places")
- fi
- fi
- fi
- fi
- fi
- fi
- fi
- fi
- fi
- AC_MSG_CHECKING(for Berkeley DB)
- if test "$apu_have_db" = "1"; then
- AC_MSG_RESULT(found db$apu_db_version)
- else
- AC_MSG_RESULT(not found)
- fi
- ])
- dnl
- dnl APU_CHECK_DBM: see what kind of DBM backend to use for apr_dbm.
- dnl
- AC_DEFUN([APU_CHECK_DBM], [
- apu_use_sdbm=0
- apu_use_ndbm=0
- apu_use_gdbm=0
- apu_use_db=0
- dnl it's in our codebase
- apu_have_sdbm=1
- apu_have_gdbm=0
- apu_have_ndbm=0
- apu_have_db=0
- apu_db_header=db.h # default so apu_select_dbm.h is syntactically correct
- apu_db_version=0
- AC_ARG_WITH(dbm, [
- --with-dbm=DBM choose the DBM type to use.
- DBM={sdbm,gdbm,ndbm,db,db1,db185,db2,db3,db4,db41,db42,db43,db44,db45}
- ], [
- if test "$withval" = "yes"; then
- AC_MSG_ERROR([--with-dbm needs to specify a DBM type to use.
- One of: sdbm, gdbm, ndbm, db, db1, db185, db2, db3, db4, db41, db42, db43, db44, db45])
- fi
- requested="$withval"
- ], [
- requested=default
- ])
- dnl We don't pull in GDBM unless the user asks for it, since it's GPL
- AC_ARG_WITH([gdbm], [
- --with-gdbm=DIR specify GDBM location
- ], [
- apu_have_gdbm=0
- if test "$withval" = "yes"; then
- AC_CHECK_HEADER(gdbm.h, AC_CHECK_LIB(gdbm, gdbm_open, [apu_have_gdbm=1]))
- elif test "$withval" = "no"; then
- apu_have_gdbm=0
- else
- CPPFLAGS="-I$withval/include"
- LIBS="-L$withval/lib "
- AC_MSG_CHECKING(checking for gdbm in $withval)
- AC_CHECK_HEADER(gdbm.h, AC_CHECK_LIB(gdbm, gdbm_open, [apu_have_gdbm=1]))
- if test "$apu_have_gdbm" != "0"; then
- APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib])
- APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include])
- fi
- fi
- ])
- AC_ARG_WITH([ndbm], [
- --with-ndbm=PATH
- Find the NDBM header and library in \`PATH/include' and
- \`PATH/lib'. If PATH is of the form \`HEADER:LIB', then search
- for header files in HEADER, and the library in LIB. If you omit
- the \`=PATH' part completely, the configure script will search
- for NDBM in a number of standard places.
- ], [
- apu_have_ndbm=0
- if test "$withval" = "yes"; then
- AC_MSG_CHECKING(checking for ndbm in the usual places)
- apu_want_ndbm=1
- NDBM_INC=""
- NDBM_LDFLAGS=""
- elif test "$withval" = "no"; then
- apu_want_ndbm=0
- else
- apu_want_ndbm=1
- case "$withval" in
- *":"*)
- NDBM_INC="-I`echo $withval |sed -e 's/:.*$//'`"
- NDBM_LDFLAGS="-L`echo $withval |sed -e 's/^.*://'`"
- AC_MSG_CHECKING(checking for ndbm includes with $NDBM_INC libs with $NDBM_LDFLAGS )
- ;;
- *)
- NDBM_INC="-I$withval/include"
- NDBM_LDFLAGS="-L$withval/lib"
- AC_MSG_CHECKING(checking for ndbm includes in $withval)
- ;;
- esac
- fi
- save_cppflags="$CPPFLAGS"
- save_ldflags="$LDFLAGS"
- CPPFLAGS="$CPPFLAGS $NDBM_INC"
- LDFLAGS="$LDFLAGS $NDBM_LDFLAGS"
- dnl db_ndbm_open is what sleepcat's compatibility library actually has in it's lib
- if test "$apu_want_ndbm" != "0"; then
- AC_CHECK_HEADER(ndbm.h,
- AC_CHECK_LIB(c, dbm_open, [apu_have_ndbm=1;apu_ndbm_lib=c],
- AC_CHECK_LIB(dbm, dbm_open, [apu_have_ndbm=1;apu_ndbm_lib=dbm],
- AC_CHECK_LIB(db, dbm_open, [apu_have_ndbm=1;apu_ndbm_lib=db],
- AC_CHECK_LIB(db, __db_ndbm_open, [apu_have_ndbm=1;apu_ndbm_lib=db])
- )
- )
- )
- )
- if test "$apu_have_ndbm" != "0"; then
- if test "$withval" != "yes"; then
- APR_ADDTO(APRUTIL_INCLUDES, [$NDBM_INC])
- APR_ADDTO(APRUTIL_LDFLAGS, [$NDBM_LDFLAGS])
- fi
- elif test "$withval" != "yes"; then
- AC_ERROR( NDBM not found in the specified directory)
- fi
- fi
- CPPFLAGS="$save_cppflags"
- LDFLAGS="$save_ldflags"
- ], [
- dnl don't check it no one has asked us for it
- apu_have_ndbm=0
- ])
- if test -n "$apu_db_xtra_libs"; then
- saveddbxtralibs="$LIBS"
- LIBS="$apu_db_xtra_libs $LIBS"
- fi
- dnl We're going to try to find the highest version of Berkeley DB supported.
- dnl
- dnl Note that we only do this if the user requested it, since the Sleepycat
- dnl license is viral and requires distribution of source along with programs
- dnl that use it.
- AC_ARG_WITH([berkeley-db], [
- --with-berkeley-db=PATH
- Find the Berkeley DB header and library in \`PATH/include' and
- \`PATH/lib'. If PATH is of the form \`HEADER:LIB', then search
- for header files in HEADER, and the library in LIB. If you omit
- the \`=PATH' part completely, the configure script will search
- for Berkeley DB in a number of standard places.
- ], [
- if test "$withval" = "yes"; then
- apu_want_db=1
- user_places=""
- elif test "$withval" = "no"; then
- apu_want_db=0
- else
- apu_want_db=1
- user_places="$withval"
- fi
- if test "$apu_want_db" != "0"; then
- APU_CHECK_DB($requested, $user_places)
- if test "$apu_have_db" = "0"; then
- AC_ERROR(Berkeley DB not found.)
- fi
- fi
- ])
- if test -n "$apu_db_xtra_libs"; then
- LIBS="$saveddbxtralibs"
- fi
- case "$requested" in
- sdbm)
- apu_use_sdbm=1
- apu_default_dbm=sdbm
- ;;
- gdbm)
- apu_use_gdbm=1
- apu_default_dbm=gdbm
- ;;
- ndbm)
- apu_use_ndbm=1
- apu_default_dbm=ndbm
- ;;
- db)
- apu_use_db=1
- apu_default_dbm=db
- ;;
- db1)
- apu_use_db=1
- apu_default_dbm=db1
- ;;
- db185)
- apu_use_db=1
- apu_default_dbm=db185
- ;;
- db2)
- apu_use_db=1
- apu_default_dbm=db2
- ;;
- db3)
- apu_use_db=1
- apu_default_dbm=db3
- ;;
- db4)
- apu_use_db=1
- apu_default_dbm=db4
- ;;
- db41)
- apu_use_db=1
- apu_default_dbm=db4
- ;;
- db42)
- apu_use_db=1
- apu_default_dbm=db4
- ;;
- db43)
- apu_use_db=1
- apu_default_dbm=db4
- ;;
- db44)
- apu_use_db=1
- apu_default_dbm=db4
- ;;
- db45)
- apu_use_db=1
- apu_default_dbm=db4
- ;;
- default)
- dnl ### use more sophisticated DBMs for the default?
- apu_default_dbm="sdbm (default)"
- apu_use_sdbm=1
- ;;
- *)
- AC_MSG_ERROR([--with-dbm=$look_for is an unknown DBM type.
- Use one of: sdbm, gdbm, ndbm, db, db1, db185, db2, db3, db4, db41, db42, db43, db44 db45])
- ;;
- esac
- dnl Yes, it'd be nice if we could collate the output in an order
- dnl so that the AC_MSG_CHECKING would be output before the actual
- dnl checks, but it isn't happening now.
- AC_MSG_CHECKING(for default DBM)
- AC_MSG_RESULT($apu_default_dbm)
- AC_SUBST(apu_use_sdbm)
- AC_SUBST(apu_use_gdbm)
- AC_SUBST(apu_use_ndbm)
- AC_SUBST(apu_use_db)
- AC_SUBST(apu_have_sdbm)
- AC_SUBST(apu_have_gdbm)
- AC_SUBST(apu_have_ndbm)
- AC_SUBST(apu_have_db)
- AC_SUBST(apu_db_header)
- AC_SUBST(apu_db_version)
- dnl Since we have already done the AC_CHECK_LIB tests, if we have it,
- dnl we know the library is there.
- if test "$apu_have_gdbm" = "1"; then
- APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lgdbm])
- APR_ADDTO(APRUTIL_LIBS,[-lgdbm])
- fi
- if test "$apu_have_ndbm" = "1"; then
- APR_ADDTO(APRUTIL_EXPORT_LIBS,[-l$apu_ndbm_lib])
- APR_ADDTO(APRUTIL_LIBS,[-l$apu_ndbm_lib])
- fi
- if test "$apu_have_db" = "1"; then
- APR_ADDTO(APRUTIL_EXPORT_LIBS,[-l$apu_db_lib])
- APR_ADDTO(APRUTIL_LIBS,[-l$apu_db_lib])
- if test -n "apu_db_xtra_libs"; then
- APR_ADDTO(APRUTIL_EXPORT_LIBS,[$apu_db_xtra_libs])
- APR_ADDTO(APRUTIL_LIBS,[$apu_db_xtra_libs])
- fi
- fi
- ])
|