1 dnl $Id: db3-check.m4,v 1.14 2006-09-09 03:52:41 didg 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"
114 dnl I don't understand this stuff below
115 dnl AFAIK it works for 4.1 and 4.2 and (4.3 xor 4.4)
116 dnl you can have 4.2 and 4.3 installed
117 dnl but If you have 4.3 and 4.4 it won't work with 4.3
120 AC_DEFUN([NETATALK_BERKELEY_LINK],
123 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.2])
124 NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb42])
125 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-42])
126 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-2])
128 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.4])
129 NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb44])
130 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-44])
131 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-4])
133 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.3])
134 NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb43])
135 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-43])
136 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-3])
138 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_1,[-ldb-4.1])
139 NETATALK_BDB_LINK_TRY(atalk_cv_db_db41,[-ldb41])
140 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_41,[-ldb-41])
141 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_1,[-ldb-4-1])
142 NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4,[-ldb-4])
143 NETATALK_BDB_LINK_TRY(atalk_cv_db_db4,[-ldb4])
144 NETATALK_BDB_LINK_TRY(atalk_cv_db_db,[-ldb])
148 AC_DEFUN([AC_PATH_BDB],
152 bdb_search_dirs="/usr/local/include /usr/include"
153 search_subdirs="/db4.2 /db42 /db4.3 /db43 /db4.4 /db44 /db4.1 /db41 /db4 /"
155 dnl required BDB version
160 dnl make sure atalk_libname is defined beforehand
161 [[ -n "$atalk_libname" ]] || AC_MSG_ERROR([internal error, atalk_libname undefined])
163 dnl define the required BDB version
164 AC_DEFINE_UNQUOTED(DB_MAJOR_REQ, ${DB_MAJOR_REQ}, [Required BDB version, major])
165 AC_DEFINE_UNQUOTED(DB_MINOR_REQ, ${DB_MINOR_REQ}, [Required BDB version, minor])
166 AC_DEFINE_UNQUOTED(DB_PATCH_REQ, ${DB_PATCH_REQ}, [Required BDB version, patch])
170 [ --with-bdb=PATH specify path to Berkeley DB installation[[auto]]],
171 if test "x$withval" = "xno"; then
173 elif test "x$withval" = "xyes"; then
176 bdb_search_dirs="$withval/include $withval"
182 savedcflags="$CFLAGS"
183 savedldflags="$LDFLAGS"
184 savedcppflags="$CPPFLAGS"
187 if test "x$dobdbsearch" = "xyes"; then
188 for bdbdir in $bdb_search_dirs; do
189 if test $bdbfound = "yes"; then
192 for subdir in ${search_subdirs}; do
193 AC_MSG_CHECKING([for Berkeley DB headers in ${bdbdir}${subdir}])
194 if test -f "${bdbdir}${subdir}/db.h" ; then
196 NETATALK_BDB_HEADER([${bdbdir}${subdir}])
197 if test ${atalk_cv_bdbheader} != "no"; then
199 dnl bdblibdir="`echo $bdbdir | sed 's/\/include\/db4\.*.*//'`"
200 bdblibdir="`echo $bdbdir | sed 's/\/include\/db4.*//'`"
201 bdblibdir="`echo $bdblibdir | sed 's/\/include$//'`"
202 bdblibdir="${bdblibdir}/${atalk_libname}"
203 dnl bdbbindir="`echo $bdbdir | sed 's/include\/db4\.*.*/bin/'`"
204 bdbbindir="`echo $bdbdir | sed 's/\/include\/db4.*/bin/'`"
205 bdbbindir="`echo $bdbbindir | sed 's/include$/bin/'`"
207 CPPFLAGS="-I${bdbdir}${subdir} $CFLAGS"
209 LDFLAGS="-L$bdblibdir $LDFLAGS"
210 NETATALK_BERKELEY_LINK
211 if test x"${atalk_cv_lib_db}" != x"no"; then
212 NETATALK_BDB_CHECK_VERSION
213 if test x"${atalk_cv_bdb_version}" != x"no"; then
214 BDB_LIBS="-L${bdblibdir} ${atalk_cv_lib_db}"
215 BDB_CFLAGS="-I${bdbdir}${subdir}"
217 BDB_PATH="`echo $bdbdir | sed 's,include\/db4$,,'`"
218 BDB_PATH="`echo $BDB_PATH | sed 's,include$,,'`"
223 CFLAGS="$savedcflags"
224 LDFLAGS="$savedldflags"
225 CPPFLAGS="$savedcppflags"
235 CFLAGS="$savedcflags"
236 LDFLAGS="$savedldflags"
237 CPPFLAGS="$savedcppflags"
240 if test "x$bdbfound" = "xyes"; then
241 ifelse([$1], , :, [$1])
243 ifelse([$2], , :, [$2])
246 CFLAGS_REMOVE_USR_INCLUDE(BDB_CFLAGS)
247 LIB_REMOVE_USR_LIB(BDB_LIBS)