summaryrefslogtreecommitdiff
path: root/m4/package_gdbmdev.m4
blob: 723900fc5337b9bc755896be5699cdaf236c7ee8 (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
AC_DEFUN([AC_PACKAGE_WANT_GDBM],
  [
    have_db=
    AC_CHECK_HEADER(gdbm-ndbm.h,
      [
	have_db=true
        AC_DEFINE(HAVE_GDBM_NDBM_H, [1],
		  [Define to 1 if you have the <gdbm-ndbm.h> header file.])
      ])

    if test -z "$have_db"; then
      dnl gdbm-ndbm.h and gdbm/ndbm.h map to the same autoconf internal
      dnl variable.  We need to clear it or this test will be skipped
      dnl and the cached result from first test will be used.
      AS_UNSET([ac_cv_header_gdbm_ndbm_h])
      AC_CHECK_HEADER(gdbm/ndbm.h,
	[
	  have_db=true
	  AC_DEFINE(HAVE_GDBM_NDBM_H_, [1],
		    [Define to 1 if you have the <gdbm/ndbm.h> header file.])
	])
    fi

    if test -z "$have_db"; then
      AC_CHECK_HEADER(ndbm.h,
	[
	  have_db=true
	  AC_DEFINE(HAVE_NDBM_H, [1],
		    [Define to 1 if you have the <ndbm.h> header file.])
	])
    fi

    if test "$have_db" = true; then
      found=false
      AC_CHECK_LIB(gdbm, dbm_open, found=true, found=false)
      AC_CHECK_LIB(gdbm, dbm_fetch,, found=false)
      AC_CHECK_LIB(gdbm, dbm_store,, found=false)
      AC_CHECK_LIB(gdbm, dbm_close,, found=false)

      if test "$found" = true; then
        libgdbm="-lgdbm"
      else
	AC_CHECK_LIB(gdbm_compat, dbm_open, found=true, found=false, -lgdbm)
	AC_CHECK_LIB(gdbm_compat, dbm_fetch,, found=false, -lgdbm)
	AC_CHECK_LIB(gdbm_compat, dbm_store,, found=false, -lgdbm)
	AC_CHECK_LIB(gdbm_compat, dbm_close,, found="no", -lgdbm)

	if test "$found" = "true"; then
	  libgdbm="-lgdbm_compat -lgdbm"
	fi
      fi
    fi

    AC_SUBST(libgdbm)
    AC_SUBST(have_db)
  ])