From 8be854cb51c8fa5f63e2a3ea58392e990f5a8206 Mon Sep 17 00:00:00 2001
From: "Kirill A. Korinskiy" <catap@catap.ru>
Date: Sat, 22 Mar 2014 14:48:10 +0200
Subject: [PATCH] Add --with-libdb options to AX_BERKELEY_DB(_CXX)

Main idea this patch is a specified a location where was installed
libDB.

On my OS X system DB was installed to /usr/local/opt/berkeley-db4 when I
did it by home-brew and without this path I can't use this macross.
---
 m4/ax_berkeley_db.m4     | 39 ++++++++++++++++++++++++++++++++++++++-
 m4/ax_berkeley_db_cxx.m4 | 43 ++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 78 insertions(+), 4 deletions(-)

diff --git a/m4/ax_berkeley_db.m4 b/m4/ax_berkeley_db.m4
index 136427c..7142f7d 100644
--- a/m4/ax_berkeley_db.m4
+++ b/m4/ax_berkeley_db.m4
@@ -21,25 +21,49 @@
 #   in your C/C++ code. DB_LIBS is set to linker flags needed to link
 #   against the library (e.g. -ldb3.1) and AC_SUBST is called on it.
 #
+#   when specified user-selected spot (via --with-libdb) also sets
+#
+#     DB_CPPFLAGS to the include directives required
+#     DB_LDFLAGS to the -L flags required
+#
 # LICENSE
 #
 #   Copyright (c) 2008 Vaclav Slavik <vaclav.slavik@matfyz.cz>
+#   Copyright (c) 2014 Kirill A. Korinskiy <catap@catap.ru>
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
 #   and this notice are preserved. This file is offered as-is, without any
 #   warranty.
 
-#serial 6
+#serial 7
 
 AC_DEFUN([AX_BERKELEY_DB],
 [
   old_LIBS="$LIBS"
+  old_LDFLAGS="$LDFLAGS"
+  old_CFLAGS="$CFLAGS"
+
+  libdbdir=""
+  AC_ARG_WITH(libdb,
+    AS_HELP_STRING([--with-libdb=DIR],
+        [root of the Berkeley DB directory]),
+    [
+        case "$withval" in
+        "" | y | ye | yes | n | no)
+        AC_MSG_ERROR([Invalid --with-libdb value])
+          ;;
+        *) libdbdir="$withval"
+          ;;
+        esac
+    ], [])
 
   minversion=ifelse([$1], ,,$1)
 
   DB_HEADER=""
   DB_LIBS=""
+  DB_LDFLAGS=""
+  DB_CFLAGS=""
 
   if test -z $minversion ; then
       minvermajor=0
@@ -56,6 +80,13 @@ AC_DEFUN([AX_BERKELEY_DB],
       AC_MSG_CHECKING([for Berkeley DB >= $minversion])
   fi
 
+  if test x$libdbdir != x""; then
+    DB_CFLAGS="-I${libdbdir}/include"
+    DB_LDFLAGS="-L${libdbdir}/lib"
+    LDFLAGS="$DB_LDFLAGS $old_LDFLAGS"
+    CFLAGS="$DB_CFLAGS $old_CPPFLAGS"
+  fi
+
   for version in "" 5.0 4.9 4.8 4.7 4.6 4.5 4.4 4.3 4.2 4.1 4.0 3.6 3.5 3.4 3.3 3.2 3.1 ; do
 
     if test -z $version ; then
@@ -99,13 +130,19 @@ AC_DEFUN([AX_BERKELEY_DB],
   done
 
   LIBS="$old_LIBS"
+  LDFLAGS="$old_LDFLAGS"
+  CFLAGS="$old_CPPFLAGS"
 
   if test -z $DB_HEADER ; then
     AC_MSG_RESULT([not found])
+    DB_LDFLAGS=""
+    DB_CFLAGS=""
     ifelse([$3], , :, [$3])
   else
     AC_DEFINE_UNQUOTED(DB_HEADER, ["$DB_HEADER"], ["Berkeley DB Header File"])
     AC_SUBST(DB_LIBS)
+    AC_SUBST(DB_LDFLAGS)
+    AC_SUBST(DB_CFLAGS)
     ifelse([$2], , :, [$2])
   fi
 ])
diff --git a/m4/ax_berkeley_db_cxx.m4 b/m4/ax_berkeley_db_cxx.m4
index b842a5a..42b4722 100644
--- a/m4/ax_berkeley_db_cxx.m4
+++ b/m4/ax_berkeley_db_cxx.m4
@@ -21,28 +21,52 @@
 #   in your C/C++ code. DB_CXX_LIBS is set to linker flags needed to link
 #   against the library (e.g. -ldb3.1_cxx) and AC_SUBST is called on it.
 #
+#   when specified user-selected spot (via --with-libdb) also sets
+#
+#     DB_CXX_CPPFLAGS to the include directives required
+#     DB_CXX_LDFLAGS to the -L flags required
+#
 # LICENSE
 #
 #   Copyright (c) 2008 Vaclav Slavik <vaclav.slavik@matfyz.cz>
 #   Copyright (c) 2011 Stephan Suerken <absurd@debian.org>
+#   Copyright (c) 2014 Kirill A. Korinskiy <catap@catap.ru>
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
 #   and this notice are preserved. This file is offered as-is, without any
 #   warranty.
 
-#serial 3
+#serial 4
 
 AC_DEFUN([AX_BERKELEY_DB_CXX],
 [
   AC_LANG_ASSERT(C++)
 
   old_LIBS="$LIBS"
+  old_LDFLAGS="$LDFLAGS"
+  old_CPPFLAGS="$CPPFLAGS"
+
+  libdbdir=""
+  AC_ARG_WITH(libdb,
+    AS_HELP_STRING([--with-libdb=DIR],
+        [root of the Berkeley DB directory]),
+    [
+        case "$withval" in
+        "" | y | ye | yes | n | no)
+        AC_MSG_ERROR([Invalid --with-libdb value])
+          ;;
+        *) libdbdir="$withval"
+          ;;
+        esac
+    ], [])
 
   minversion=ifelse([$1], ,,$1)
 
   DB_CXX_HEADER=""
   DB_CXX_LIBS=""
+  DB_CXX_LDFLAGS=""
+  DB_CXX_CPPFLAGS=""
 
   if test -z $minversion ; then
       minvermajor=0
@@ -59,13 +83,20 @@ AC_DEFUN([AX_BERKELEY_DB_CXX],
       AC_MSG_CHECKING([for Berkeley DB (C++) >= $minversion])
   fi
 
+  if test x$libdbdir != x""; then
+    DB_CXX_CPPFLAGS="-I${libdbdir}/include"
+    DB_CXX_LDFLAGS="-L${libdbdir}/lib"
+    LDFLAGS="$DB_CXX_LDFLAGS $old_LDFLAGS"
+    CPPFLAGS="$DB_CXX_CPPFLAGS $old_CPPFLAGS"
+  fi
+
   for version in "" 5.0 4.9 4.8 4.7 4.6 4.5 4.4 4.3 4.2 4.1 4.0 3.6 3.5 3.4 3.3 3.2 3.1 ; do
 
     if test -z $version ; then
-        db_cxx_lib="-ldb_cxx"
+        db_cxx_lib="-ldb_cxx -ldb"
         try_headers="db_cxx.h"
     else
-        db_cxx_lib="-ldb_cxx-$version"
+        db_cxx_lib="$libdbdir -ldb_cxx-$version -ldb-$version"
         try_headers="db$version/db_cxx.h db`echo $version | sed -e 's,\..*,,g'`/db_cxx.h"
     fi
 
@@ -102,13 +133,19 @@ AC_DEFUN([AX_BERKELEY_DB_CXX],
   done
 
   LIBS="$old_LIBS"
+  LDFLAGS="$old_LDFLAGS"
+  CPPFLAGS="$old_CPPFLAGS"
 
   if test -z $DB_CXX_HEADER ; then
     AC_MSG_RESULT([not found])
+    DB_CXX_LDFLAGS=""
+    DB_CXX_CPPFLAGS=""
     ifelse([$3], , :, [$3])
   else
     AC_DEFINE_UNQUOTED(DB_CXX_HEADER, ["$DB_CXX_HEADER"], ["Berkeley DB C++ Header File"])
     AC_SUBST(DB_CXX_LIBS)
+    AC_SUBST(DB_CXX_LDFLAGS)
+    AC_SUBST(DB_CXX_CPPFLAGS)
     ifelse([$2], , :, [$2])
   fi
 ])
-- 
1.8.5.2 (Apple Git-48)

