summaryrefslogtreecommitdiffstats
path: root/m4/db.m4
blob: 24927a87d109ba096580a14cb97703def10de713 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# BEGIN COPYRIGHT BLOCK
# Copyright (C) 2007 Red Hat, Inc.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#
# END COPYRIGHT BLOCK

AC_CHECKING(for db)

dnl  - check for --with-db
AC_MSG_CHECKING(for --with-db)
AC_ARG_WITH(db, [  --with-db=PATH   Berkeley DB directory],
[
  if test "$withval" = "yes"; then
    AC_MSG_RESULT(yes)
    dnl - check in system locations
    if test -f "/usr/include/db.h"; then
      db_incdir="/usr/include"
      db_inc="-I/usr/include"
    else
      AC_MSG_ERROR([db.h not found])
    fi
  elif test -d "$withval"/include -a -d "$withval"/lib; then
    AC_MSG_RESULT([using $withval])
    dnl - check the user provided location
    DBDIR=$withval
    db_lib="-L$DBDIR/lib"
    db_libdir="$DBDIR/lib"
    db_incdir="$DBDIR/include"
    if ! test -e "$db_incdir/db.h" ; then
      AC_MSG_ERROR([$withval include dir not found])
    fi
    db_inc="-I$db_incdir"
  else
    echo
    AC_MSG_ERROR([$withval not found])
  fi
],
AC_MSG_RESULT(no))
dnl default path for the db tools (see [210947] for more details)

dnl - check in system locations
if test -z "$db_inc"; then
  AC_MSG_CHECKING(for db.h)
  if test -f "/usr/include/db.h"; then
    AC_MSG_RESULT([using /usr/include/db.h])
    db_incdir="/usr/include"
    db_inc="-I/usr/include"
  else
    AC_MSG_RESULT(no)
    AC_MSG_ERROR([db not found, specify with --with-db.])
  fi
fi
dnl figure out which version of db we're using from the header file
db_ver_maj=`grep DB_VERSION_MAJOR $db_incdir/db.h | awk '{print $3}'`
db_ver_min=`grep DB_VERSION_MINOR $db_incdir/db.h | awk '{print $3}'`
db_ver_pat=`grep DB_VERSION_PATCH $db_incdir/db.h | awk '{print $3}'`
dnl libname is libdb-maj.min e.g. libdb-4.2
db_libver=${db_ver_maj}.${db_ver_min}
dnl make sure the lib is available
dnl use true so libdb won't be added to LIBS
save_ldflags="$LDFLAGS"
LDFLAGS="$db_lib $LDFLAGS"
AC_CHECK_LIB([db-$db_libver], [db_create], [true],
  [AC_MSG_ERROR([$db_incdir/db.h is version $db_libver but libdb-$db_libver not found])],
  [$LIBNSL])
LDFLAGS="$save_ldflags"

# if DB is not found yet, try pkg-config

# last resort
# Although the other db_* variables are correctly assigned at this point,
# db_bindir needs to be set by pkg-config if possible (e.g., on 64-bit Solaris)
if  test -n "$PKG_CONFIG"; then
  if $PKG_CONFIG --exists db; then
    db_bindir=`$PKG_CONFIG --variable=bindir db`
  else
    db_bindir=/usr/bin
  fi
else
  db_bindir=/usr/bin
fi