summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/lib/ldb/configure.ac (renamed from source4/lib/ldb/configure.in)0
-rw-r--r--source4/lib/ldb/replace.m460
2 files changed, 60 insertions, 0 deletions
diff --git a/source4/lib/ldb/configure.in b/source4/lib/ldb/configure.ac
index 5ef3d1cc96..5ef3d1cc96 100644
--- a/source4/lib/ldb/configure.in
+++ b/source4/lib/ldb/configure.ac
diff --git a/source4/lib/ldb/replace.m4 b/source4/lib/ldb/replace.m4
new file mode 100644
index 0000000000..e06cb7e85a
--- /dev/null
+++ b/source4/lib/ldb/replace.m4
@@ -0,0 +1,60 @@
+dnl Try to find a replacement library
+dnl Will define HAVE_REPLACE_H if replace.h can be found
+AC_DEFUN([SMB_LIBREPLACE], [
+AC_ARG_WITH(libreplace,
+[ --with-libreplace Specify location to libreplace],
+[
+ # Check whether libreplace can actually be found in this location
+ if ! test -f "$withval/replace.h"
+ then
+ AC_MSG_ERROR([Unable to find replace.h in $withval])
+ fi
+ replacedir=$withval
+],
+[
+ # Check if we can find libreplace in a common location
+ for dir in . replace ../replace
+ do
+ AC_MSG_CHECKING([for libreplace in $dir])
+ if test -f "$dir/replace.h"
+ then
+ replacedir="$dir"
+ AC_MSG_RESULT(yes)
+ break
+ fi
+ AC_MSG_RESULT(no)
+ done
+])
+
+AC_SUBST(REPLACE_LIB)
+AC_SUBST(REPLACE_DIR)
+
+if test "$replacedir" != ""
+then
+ REPLACE_DIR="$replacedir"
+ REPLACE_LIB="$replacedir/libreplace.a"
+ CFLAGS="$CFLAGS -I$replacedir"
+ AC_DEFINE(HAVE_REPLACE_H, 1,
+ [Whether replace.h is present and should be used])
+fi
+])
+
+dnl Try to find the specified functions in the system, or
+dnl in Samba's replacement library. In the future, this may also
+dnl try to find these functions in libroken or GNUlib if libreplace can't be
+dnl found.
+AC_DEFUN(SMB_REPLACE_FUNCS, [
+ AC_REQUIRE([SMB_LIBREPLACE])dnl
+
+ if test -z "$replacedir" || test -f "$replacedir/libreplace.a"
+ then
+ LIBS="$LIBS $REPLACE_LIB"
+ for f in $1
+ do
+ AC_CHECK_FUNC($f, [], [
+ AC_MSG_ERROR([Unable to find $f in the system. Consider
+ specifying the path to the replacement library])
+ ])
+ done
+ fi
+])