1 dnl $Id: db3-check.m4,v 1.13 2005-04-28 20:50:05 bfernhomberg Exp $
2 dnl Autoconf macros to check for the Berkeley DB library
5 AC_DEFUN([NETATALK_BDB_LINK_TRY],
6 [if test $atalk_cv_lib_db = no ; then
7 AC_MSG_CHECKING([for Berkeley DB link (]ifelse($2,,default,$2)[)])
8 atalk_DB_LIB=ifelse($2,,-ldb,$2)
10 LIBS="$atalk_DB_LIB $LIBS"
16 int major, minor, patch;
18 version = db_version( &major, &minor, &patch );
24 if test $$1 = yes ; then
25 atalk_cv_lib_db=ifelse($2,,-ldb,$2)
31 AC_DEFUN([NETATALK_BDB_CHECK_VERSION],
34 LIBS="${atalk_cv_lib_db} $LIBS"
36 AC_MSG_CHECKING([Berkeley DB library version >= ${DB_MAJOR_REQ}.${DB_MINOR_REQ}.${DB_PATCH_REQ}])
45 int major, minor, patch;
48 version_str = db_version(&major, &minor, &patch);
50 /* check library version */
51 if (major < DB_MAJOR_REQ || minor < DB_MINOR_REQ || patch < DB_PATCH_REQ) {
52 printf("library version too old (%d.%d.%d), ",major, minor, patch);
56 /* check header and library match */
57 if ( major != DB_VERSION_MAJOR || minor != DB_VERSION_MINOR || patch != DB_VERSION_PATCH) {
58 printf("header/library version mismatch (%d.%d.%d/%d.%d.%d), ",
59 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, major, minor, patch);
63 printf("%d.%d.%d, ",major, minor, patch);
66 ], atalk_cv_bdb_version="yes", atalk_cv_bdb_version="no", atalk_cv_bdb_version="cross")
69 if test ${atalk_cv_bdb_version} = "yes"; then
78 AC_DEFUN([NETATALK_BDB_HEADER],
82 dnl check for header version
83 AC_MSG_CHECKING(ifelse($1,,default,$1)[/db.h version >= ${DB_MAJOR_REQ}.${DB_MINOR_REQ}.${DB_PATCH_REQ}])
93 /* check header version */
94 if (DB_VERSION_MAJOR < DB_MAJOR_REQ || DB_VERSION_MINOR < DB_MINOR_REQ ||
95 DB_VERSION_PATCH < DB_PATCH_REQ ) {
96 printf("header file version too old (%d.%d.%d), ", DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
100 printf("%d.%d.%d, ", DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
103 ], atalk_cv_bdbheader="yes", atalk_cv_bdbheader="no", atalk_cv_bdbheader="cross")
105 if test ${atalk_cv_bdbheader} = "no"; then
111 CFLAGS="$savedcflags"
115 AC_DEFUN([NETATALK_BERKELEY_LINK],
118 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.2])
119 NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb42])
120 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-42])
121 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-2])
122 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.3])
123 NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb43])
124 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-43])
125 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-3])
126 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_1,[-ldb-4.1])
127 NETATALK_BDB_LINK_TRY(atalk_cv_db_db41,[-ldb41])
128 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_41,[-ldb-41])
129 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_1,[-ldb-4-1])
130 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4,[-ldb-4])
131 NETATALK_BDB_LINK_TRY(atalk_cv_db_db4,[-ldb4])
132 NETATALK_BDB_LINK_TRY(atalk_cv_db_db,[-ldb])
136 AC_DEFUN([AC_PATH_BDB],
140 bdb_search_dirs="/usr/local/include /usr/include"
141 search_subdirs="/db4.2 /db42 /db4.3 /db43 /db4.1 /db41 /db4 /"
143 dnl required BDB version
148 dnl make sure atalk_libname is defined beforehand
149 [[ -n "$atalk_libname" ]] || AC_MSG_ERROR([internal error, atalk_libname undefined])
151 dnl define the required BDB version
152 AC_DEFINE_UNQUOTED(DB_MAJOR_REQ, ${DB_MAJOR_REQ}, [Required BDB version, major])
153 AC_DEFINE_UNQUOTED(DB_MINOR_REQ, ${DB_MINOR_REQ}, [Required BDB version, minor])
154 AC_DEFINE_UNQUOTED(DB_PATCH_REQ, ${DB_PATCH_REQ}, [Required BDB version, patch])
158 [ --with-bdb=PATH specify path to Berkeley DB installation[[auto]]],
159 if test "x$withval" = "xno"; then
161 elif test "x$withval" = "xyes"; then
164 bdb_search_dirs="$withval/include $withval"
170 savedcflags="$CFLAGS"
171 savedldflags="$LDFLAGS"
172 savedcppflags="$CPPFLAGS"
175 if test "x$dobdbsearch" = "xyes"; then
176 for bdbdir in $bdb_search_dirs; do
177 if test $bdbfound = "yes"; then
180 for subdir in ${search_subdirs}; do
181 AC_MSG_CHECKING([for Berkeley DB headers in ${bdbdir}${subdir}])
182 if test -f "${bdbdir}${subdir}/db.h" ; then
184 NETATALK_BDB_HEADER([${bdbdir}${subdir}])
185 if test ${atalk_cv_bdbheader} != "no"; then
187 dnl bdblibdir="`echo $bdbdir | sed 's/\/include\/db4\.*.*//'`"
188 bdblibdir="`echo $bdbdir | sed 's/\/include\/db4.*//'`"
189 bdblibdir="`echo $bdblibdir | sed 's/\/include$//'`"
190 bdblibdir="${bdblibdir}/${atalk_libname}"
191 dnl bdbbindir="`echo $bdbdir | sed 's/include\/db4\.*.*/bin/'`"
192 bdbbindir="`echo $bdbdir | sed 's/\/include\/db4.*/bin/'`"
193 bdbbindir="`echo $bdbbindir | sed 's/include$/bin/'`"
195 CPPFLAGS="-I${bdbdir}${subdir} $CFLAGS"
197 LDFLAGS="-L$bdblibdir $LDFLAGS"
198 NETATALK_BERKELEY_LINK
199 if test x"${atalk_cv_lib_db}" != x"no"; then
200 NETATALK_BDB_CHECK_VERSION
201 if test x"${atalk_cv_bdb_version}" != x"no"; then
202 BDB_LIBS="-L${bdblibdir} ${atalk_cv_lib_db}"
203 BDB_CFLAGS="-I${bdbdir}${subdir}"
205 BDB_PATH="`echo $bdbdir | sed 's,include\/db4$,,'`"
206 BDB_PATH="`echo $BDB_PATH | sed 's,include$,,'`"
211 CFLAGS="$savedcflags"
212 LDFLAGS="$savedldflags"
213 CPPFLAGS="$savedcppflags"
223 CFLAGS="$savedcflags"
224 LDFLAGS="$savedldflags"
225 CPPFLAGS="$savedcppflags"
228 if test "x$bdbfound" = "xyes"; then
229 ifelse([$1], , :, [$1])
231 ifelse([$2], , :, [$2])
234 CFLAGS_REMOVE_USR_INCLUDE(BDB_CFLAGS)
235 LIB_REMOVE_USR_LIB(BDB_LIBS)