1
### F_CHECK_BERKELEYDB
2
###
3
### Check for the right version of the Berkeley DB library.
4
5
AC_DEFUN([F_CHECK_BERKELEYDB], [
6
7
	AC_ARG_WITH(db4,          [  --with-db4=PREFIX              Location of db4],
8
		[with_db4_includes="$withval/include"
9
		 with_db4_libs="$withval/lib"])
10
	AC_ARG_WITH(db4-includes, [  --with-db4-includes=PATH       Location of db4 includes],
11
		with_db4_includes="$withval")
12
	AC_ARG_WITH(db4-libs,     [  --with-db4-libs=PATH           Location of db4 libs],
13
		with_db4_libs="$withval")
14
	
15
	if test -z "$with_db4_libs"; then
16
		with_db4_libs="/usr/lib"
17
	fi
18
	
19
	AC_CACHE_CHECK([for db4 compiler flags], ac_cv_db4_cflags,
20
	[
21
		if test -n "${with_db4_includes}"; then
22
			ac_cv_db4_cflags="-I$with_db4_includes"
23
		fi
24
	])
25
	DB4_CFLAGS=$ac_cv_db4_cflags
26
	AC_SUBST(DB4_CFLAGS)
27
	
28
	CPPFLAGS_save="$CPPFLAGS"
29
	CPPFLAGS="$DB4_CFLAGS $CPPFLAGS"
30
	AC_CHECK_HEADERS(db.h db4/db.h, break)
31
	
32
	AC_CACHE_CHECK([db4 header version], ac_cv_db4_header_version,
33
	[
34
		AC_TRY_COMPILE([
35
			#ifdef HAVE_DB4_DB_H
36
			#include <db4/db.h>
37
			#else
38
			#include <db.h>
39
			#endif
40
		],[
41
			#if DB_VERSION_MAJOR != 4
42
			#error
43
			#endif
44
		], :, AC_MSG_ERROR(Found db.h is not version 4))
45
	
46
		ac_cv_db4_header_version=4
47
	])
48
49
	AC_CACHE_CHECK([for db4 library name], ac_cv_db4_ldadd,
50
	[
51
		LIBS_save="$LIBS"
52
		ac_cv_db4_ldadd=""
53
	
54
		for name in db db4 db-3.1; do
55
			LIBS="$LIBS_save $with_db4_libs/lib${name}.a"
56
			AC_TRY_LINK([
57
				#ifdef HAVE_DB4_DB_H
58
				#include <db4/db.h>
59
				#else
60
				#include <db.h>
61
				#endif
62
			],[
63
				DB *db;
64
				db_create (&db, 0, 0);
65
			], [
66
				ac_cv_db4_ldadd="$with_db4_libs/lib${name}.a"
67
				break
68
			])
69
		done
70
		LIBS="$LIBS_save"
71
	
72
		if test -z "$ac_cv_db4_ldadd"; then
73
			AC_MSG_ERROR(Could not find db4 library)
74
		fi
75
	])
76
	DB4_LDADD=$ac_cv_db4_ldadd
77
	AC_SUBST(DB4_LDADD)
78
	
79
	AC_CACHE_CHECK([that db4 library version matches header version], ac_cv_db4_lib_version_match,
80
	[
81
		LIBS="$DB4_LDADD $LIBS"
82
		AC_TRY_RUN([
83
			#ifdef HAVE_DB4_DB_H
84
			#include <db4/db.h>
85
			#else
86
			#include <db.h>
87
			#endif
88
	
89
			int
90
			main (void)
91
			{
92
				int major, minor, patch;
93
	
94
				db_version (&major, &minor, &patch);
95
				return !(major == DB_VERSION_MAJOR &&
96
					 minor == DB_VERSION_MINOR &&
97
					 patch == DB_VERSION_PATCH);
98
			}
99
		], ac_cv_db4_lib_version_match=yes, ac_cv_db4_lib_version_match=no,
100
		ac_cv_db4_lib_version_match=yes)
101
	])
102
	if test "$ac_cv_db4_lib_version_match" = no; then
103
		AC_MSG_ERROR(db4 headers and library do not match... multiple copies installed?)
104
	fi
105
	
106
	CPPFLAGS="$CPPFLAGS_save"
107
	LIBS="$LIBS_save"
108
109
])