]> arthur.barton.de Git - netatalk.git/blob - macros/db3-check.m4
fix a linker problem with openbsd linker, reported by Joerg Lenneis
[netatalk.git] / macros / db3-check.m4
1 dnl $Id: db3-check.m4,v 1.11.6.2 2003-11-24 17:16:51 bfernhomberg Exp $
2 dnl Autoconf macro to check for the Berkeley DB library
3
4 AC_DEFUN([AC_PATH_BDB], [
5         trybdbdir=""
6         dobdbsearch=yes
7         bdb_search_dirs="/usr/local/include/db4 /usr/local/include /usr/include/db4 /usr/include"
8
9
10         AC_ARG_WITH(bdb,
11                 [  --with-bdb=PATH         specify path to Berkeley DB installation[[auto]]],
12                 if test "x$withval" == "xno"; then
13                         dobdbsearch=no
14                 elif test "x$withval" == "xyes"; then
15                         dobdbsearch=yes
16                 else
17                         bdb_search_dirs="$withval/include/db4 $withval/include $withval"
18                 fi
19         )
20
21         bdbfound=no
22         if test "x$dobdbsearch" != "xno"; then
23         for bdbdir in $bdb_search_dirs ; do
24                 AC_MSG_CHECKING([for Berkeley DB headers in $bdbdir])
25                 if test -f "$bdbdir/db.h" ; then
26                         AC_MSG_RESULT([yes])
27                         bdblibdir="`echo $bdbdir | sed 's/include\/db4$/lib/'`"
28                         bdblibdir="`echo $bdblibdir | sed 's/include$/lib/'`"
29                         bdbbindir="`echo $bdbdir | sed 's/include\/db4$/bin/'`"
30                         bdbbindir="`echo $bdbbindir | sed 's/include$/bin/'`"
31
32                         savedcflags="$CFLAGS"
33                         savedldflags="$LDFLAGS"
34                         savedcppflags="$CPPFLAGS"
35                         savedlibs="$LIBS"
36                         CPPFLAGS="$CFLAGS -I$bdbdir"
37                         CFLAGS=""
38                         LDFLAGS="-L$bdblibdir $LDFLAGS"
39
40                         dnl db_create is BDB >3 specific 
41                         AC_CHECK_LIB(db, db_create, [
42                                 bdbfound=yes
43                                 LIBS="$LIBS -ldb"
44                                 BDB_LIBS="-ldb"], [
45                             AC_CHECK_LIB(db4, db_create, [
46                                         bdbfound=yes
47                                         LIBS="$LIBS -ldb4"
48                                         BDB_LIBS="-ldb4"])
49                         ])
50
51                         dnl check for header ... should only fail if the header cannot be compiled
52                         dnl it does exist, otherwise we wouldn't be here
53
54                         if test "x$bdbfound" = "xyes"; then
55                             AC_CHECK_HEADERS([db.h],[
56                                 dnl check we have the correct bdb version
57                                 AC_MSG_CHECKING(Berkeley DB version >= 4.0)
58                                 AC_TRY_RUN([ 
59 #if STDC_HEADERS
60 #include <stdlib.h>
61 #endif
62 #include <db.h>
63
64 #define DB_MAJOR_REQ    4
65 #define DB_MINOR_REQ    0
66 #define DB_PATCH_REQ    0
67
68
69 int main(void) {
70         int major, minor, patch;
71         char *version_str;
72
73         version_str = db_version(&major, &minor, &patch);
74
75         /* check header version */
76         if (DB_VERSION_MAJOR < DB_MAJOR_REQ || DB_VERSION_MINOR < DB_MINOR_REQ ||
77             DB_VERSION_PATCH < DB_PATCH_REQ )
78                 exit (1);
79                 
80         /* check library version */
81         if (major < DB_MAJOR_REQ || minor < DB_MINOR_REQ || patch < DB_PATCH_REQ)
82                 exit (2);
83
84         /* check header and library match */
85         if ( major != DB_VERSION_MAJOR || minor != DB_VERSION_MINOR || patch != DB_VERSION_PATCH)
86                 exit(3);
87
88         exit (0);
89 }
90 ], 
91                                 atalk_cv_bdbversion="yes", 
92                                 atalk_cv_bdbversion="no",
93                                 atalk_cv_bdbversion="cross")
94
95                                 if test ${atalk_cv_bdbversion} = "yes"; then
96                                    AC_MSG_RESULT(yes)
97                                 else
98                                    AC_MSG_RESULT(no)
99                                    bdbfound=no
100                                 fi
101                             ],[
102                                 bdbfound=no
103                                 AC_MSG_WARN([Berkeley DB libraries found, but required header files cannot be used!!!])
104                             ])
105                         fi
106
107                         if test "x$bdbfound" = "xyes"; then
108                                 if test "$bdbdir" != "/usr/include"; then
109                                     BDB_CFLAGS="-I$bdbdir"
110                                 fi
111                                 if test "$bdblibdir" != "/usr/lib"; then
112                                     BDB_LIBS="-L$bdblibdir $BDB_LIBS"
113                                 fi
114                                 BDB_BIN=$bdbbindir
115                                 BDB_PATH="`echo $bdbdir | sed 's,include\/db4$,,'`"
116                                 BDB_PATH="`echo $BDB_PATH | sed 's,include$,,'`"
117                         fi
118                         CFLAGS="$savedcflags"
119                         LDFLAGS="$savedldflags"
120                         CPPFLAGS="$savedcppflags"
121                         LIBS="$savedlibs"
122                         break;
123                 else
124                         AC_MSG_RESULT([no])
125                 fi
126         done
127         fi
128
129         if test "x$bdbfound" = "xyes"; then
130                 ifelse([$1], , :, [$1])
131         else
132                 ifelse([$2], , :, [$2])     
133         fi
134
135         AC_SUBST(BDB_CFLAGS)
136         AC_SUBST(BDB_LIBS)
137         AC_SUBST(BDB_BIN)
138         AC_SUBST(BDB_PATH)
139 ])