]> arthur.barton.de Git - netatalk.git/blob - macros/db3-check.m4
unblock signals in children (cf previous commit for RH9 )
[netatalk.git] / macros / db3-check.m4
1 dnl $Id: db3-check.m4,v 1.11.6.1 2003-10-29 23:53:24 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                         CFLAGS="$CFLAGS -I$bdbdir"
36                         CPPFLAGS="$CFLAGS -I$bdbdir"
37                         LDFLAGS="-L$bdblibdir $LDFLAGS"
38
39                         dnl db_create is BDB >3 specific 
40                         AC_CHECK_LIB(db, db_create, [
41                                 bdbfound=yes
42                                 LDFLAGS="$LDFLAGS -ldb"
43                                 BDB_LIBS="-ldb"], [
44                             AC_CHECK_LIB(db4, db_create, [
45                                         bdbfound=yes
46                                         LDFLAGS="$LDFLAGS -ldb4"
47                                         BDB_LIBS="-ldb4"])
48                         ])
49
50                         dnl check for header ... should only fail if the header cannot be compiled
51                         dnl it does exist, otherwise we wouldn't be here
52
53                         if test "x$bdbfound" = "xyes"; then
54                             AC_CHECK_HEADERS([db.h],[
55                                 dnl check we have the correct bdb version
56                                 AC_MSG_CHECKING(Berkeley DB version >= 4.0)
57                                 AC_TRY_RUN([ 
58 #if STDC_HEADERS
59 #include <stdlib.h>
60 #endif
61 #include <db.h>
62
63 #define DB_MAJOR_REQ    4
64 #define DB_MINOR_REQ    0
65 #define DB_PATCH_REQ    0
66
67
68 int main(void) {
69         int major, minor, patch;
70         char *version_str;
71
72         version_str = db_version(&major, &minor, &patch);
73
74         /* check header version */
75         if (DB_VERSION_MAJOR < DB_MAJOR_REQ || DB_VERSION_MINOR < DB_MINOR_REQ ||
76             DB_VERSION_PATCH < DB_PATCH_REQ )
77                 exit (1);
78                 
79         /* check library version */
80         if (major < DB_MAJOR_REQ || minor < DB_MINOR_REQ || patch < DB_PATCH_REQ)
81                 exit (2);
82
83         /* check header and library match */
84         if ( major != DB_VERSION_MAJOR || minor != DB_VERSION_MINOR || patch != DB_VERSION_PATCH)
85                 exit(3);
86
87         exit (0);
88 }
89 ], 
90                                 atalk_cv_bdbversion="yes", 
91                                 atalk_cv_bdbversion="no",
92                                 atalk_cv_bdbversion="cross")
93
94                                 if test ${atalk_cv_bdbversion} = "yes"; then
95                                    AC_MSG_RESULT(yes)
96                                 else
97                                    AC_MSG_RESULT(no)
98                                    bdbfound=no
99                                 fi
100                             ],[
101                                 bdbfound=no
102                                 AC_MSG_WARN([Berkeley DB libraries found, but required header files cannot be used!!!])
103                             ])
104                         fi
105
106                         if test "x$bdbfound" = "xyes"; then
107                                 if test "$bdbdir" != "/usr/include"; then
108                                     BDB_CFLAGS="-I$bdbdir"
109                                 fi
110                                 if test "$bdblibdir" != "/usr/lib"; then
111                                     BDB_LIBS="-L$bdblibdir $BDB_LIBS"
112                                 fi
113                                 BDB_BIN=$bdbbindir
114                                 BDB_PATH="`echo $bdbdir | sed 's,include\/db4$,,'`"
115                                 BDB_PATH="`echo $BDB_PATH | sed 's,include$,,'`"
116                         fi
117                         CFLAGS="$savedcflags"
118                         LDFLAGS="$savedldflags"
119                         CPPFLAGS="$savedcppflags"
120                         break;
121                 else
122                         AC_MSG_RESULT([no])
123                 fi
124         done
125         fi
126
127         if test "x$bdbfound" = "xyes"; then
128                 ifelse([$1], , :, [$1])
129         else
130                 ifelse([$2], , :, [$2])     
131         fi
132
133         AC_SUBST(BDB_CFLAGS)
134         AC_SUBST(BDB_LIBS)
135         AC_SUBST(BDB_BIN)
136         AC_SUBST(BDB_PATH)
137 ])