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