Add --enable-external-* flags for libraries shipped with Samba, to allow
[ira/wip.git] / source4 / build / m4 / public.m4
index d932f09a694e71a404b4dcfbf0f824837da24edf..a707a113cd959d18986ffce4de39fa3dfacc39f1 100644 (file)
@@ -6,6 +6,8 @@ dnl Published under the GPL
 dnl
 dnl SMB_EXT_LIB_FROM_PKGCONFIG(name,pkg-config name,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
 dnl
+dnl SMB_INCLUDED_LIB_PKGCONFIG(name,pkg-config name,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
+dnl
 dnl SMB_EXT_LIB(name,libs,cflags,cppflags,ldflags)
 dnl
 dnl SMB_ENABLE(name,default_build)
@@ -90,7 +92,7 @@ AC_DEFUN([SMB_EXT_LIB_FROM_PKGCONFIG],
                                OLD_CFLAGS="$CFLAGS"
                                CFLAGS="$CFLAGS $$1_CFLAGS"
                                AC_MSG_CHECKING([that the C compiler can use the $1_CFLAGS])
-                               AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
+                               AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
                                        SMB_ENABLE($1, YES)
                                        AC_MSG_RESULT(yes),
                                        AC_MSG_RESULT(no),
@@ -125,6 +127,26 @@ AC_DEFUN([SMB_EXT_LIB_FROM_PKGCONFIG],
        fi
 ])
 
+dnl SMB_INCLUDED_LIB_PKGCONFIG(name,pkg-config name,[ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND])
+AC_DEFUN([SMB_INCLUDED_LIB_PKGCONFIG],
+[
+       AC_ARG_ENABLE([external-]translit($1,`A-Z',`a-z'),
+               AS_HELP_STRING([--enable-external-]translit($1,`A-Z',`a-z'), [Use external $1 instead of built-in (default=auto)]), [], [enableval=auto])
+
+       if test $enableval = yes -o $enableval = auto; then
+               SMB_EXT_LIB_FROM_PKGCONFIG([$1], [$2], [$3], [
+                       if test $enableval = yes; then
+                               AC_MSG_ERROR([Unable to find external $1])
+                       fi
+               ])
+       else
+               ifelse([$4], [], [
+                         SMB_EXT_LIB($1)
+                         SMB_ENABLE($1, NO)
+               ], [$4])
+       fi
+])
+
 dnl SMB_INCLUDE_MK(file)
 AC_DEFUN([SMB_INCLUDE_MK],
 [
@@ -155,16 +177,30 @@ SMB_INFO_ENABLES="$SMB_INFO_ENABLES
 \$enabled{$1} = \"$2\";"
 ])
 
-dnl SMB_WRITE_MAKEVARS(path)
+dnl SMB_MAKE_SETTINGS(text)
+AC_DEFUN([SMB_MAKE_SETTINGS],
+[
+MAKE_SETTINGS="$MAKE_SETTINGS
+$1
+"
+])
+
+dnl SMB_WRITE_MAKEVARS(path, skip_vars)
 AC_DEFUN([SMB_WRITE_MAKEVARS],
 [
 echo "configure: creating $1"
 cat >$1<<CEOF
 # $1 - Autogenerated by configure, DO NOT EDIT!
-AC_FOREACH([AC_Var], m4_defn([_AC_SUBST_VARS]), [
-AC_Var = $AC_Var])
 $MAKE_SETTINGS
 CEOF
+skip_vars=" $2 "
+for ac_var in $ac_subst_vars
+do
+    eval ac_val=\$$ac_var
+       if echo "$skip_vars" | grep -v " $ac_var " >/dev/null 2>/dev/null; then
+               echo "$ac_var = $ac_val" >> $1
+       fi
+done
 ])
 
 dnl SMB_WRITE_PERLVARS(path)
@@ -182,10 +218,18 @@ use strict;
 
 use vars qw(%enabled %config);
 
-%config = (AC_FOREACH([AC_Var], m4_defn([_AC_SUBST_VARS]), [
-       AC_Var => '$AC_Var',])
-);
+%config = (
+CEOF
 
+for ac_var in $ac_subst_vars
+do
+       eval ac_val=\$$ac_var
+       # quote ' (\x27) inside '...' and make sure \ isn't eaten by shells, so use perl:
+       QAC_VAL=$ac_val QAC_VAR=$ac_var perl -e '$myval="$ENV{QAC_VAL}"; $myval =~ s/\x27/\\\x27/g ; print $ENV{QAC_VAR}." => \x27$myval\x27,\n"' >> $1
+done
+
+cat >>$1<<CEOF
+);
 $SMB_INFO_ENABLES
 1;
 CEOF