summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/build/m4/check_cc.m414
-rw-r--r--source4/build/m4/check_perl.m43
-rw-r--r--source4/build/smb_build/makefile.pm4
-rwxr-xr-xsource4/script/build_idl.sh4
4 files changed, 22 insertions, 3 deletions
diff --git a/source4/build/m4/check_cc.m4 b/source4/build/m4/check_cc.m4
index 68e938b794..947112f4b6 100644
--- a/source4/build/m4/check_cc.m4
+++ b/source4/build/m4/check_cc.m4
@@ -67,6 +67,20 @@ if test x"$samba_cv_immediate_structures" = x"yes"; then
AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
fi
+############################################
+# check if the compiler can handle negative enum values
+AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
+ AC_TRY_COMPILE([
+#include <stdio.h>],
+[
+ enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
+],
+ SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
+if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
+ AC_MSG_WARN([using --unit-enums for pidl])
+ PIDL_ARGS="$PIDL_ARGS --uint-enums"
+fi
+
AC_MSG_CHECKING([for test routines])
AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
AC_MSG_RESULT(yes),
diff --git a/source4/build/m4/check_perl.m4 b/source4/build/m4/check_perl.m4
index 5f5f614f84..5e493db875 100644
--- a/source4/build/m4/check_perl.m4
+++ b/source4/build/m4/check_perl.m4
@@ -13,3 +13,6 @@ fi
if test x"$debug" = x"yes";then
PERL="$PERL -W"
fi
+
+PIDL_ARGS=""
+AC_SUBST(PIDL_ARGS)
diff --git a/source4/build/smb_build/makefile.pm b/source4/build/smb_build/makefile.pm
index 0367124e64..b14991a840 100644
--- a/source4/build/smb_build/makefile.pm
+++ b/source4/build/smb_build/makefile.pm
@@ -130,10 +130,10 @@ sub _prepare_IDL($)
return << '__EOD__';
idl_full: build/pidl/idl.pm
- CPP="@CPP@" PERL="$(PERL)" script/build_idl.sh FULL
+ CPP="@CPP@" PERL="$(PERL)" script/build_idl.sh FULL @PIDL_ARGS@
idl: build/pidl/idl.pm
- @CPP="@CPP@" PERL="$(PERL)" script/build_idl.sh PARTIAL
+ @CPP="@CPP@" PERL="$(PERL)" script/build_idl.sh PARTIAL @PIDL_ARGS@
build/pidl/idl.pm: build/pidl/idl.yp
-yapp -s build/pidl/idl.yp
diff --git a/source4/script/build_idl.sh b/source4/script/build_idl.sh
index d15a9add31..2018d70d2b 100755
--- a/source4/script/build_idl.sh
+++ b/source4/script/build_idl.sh
@@ -1,10 +1,12 @@
#!/bin/sh
FULLBUILD=$1
+shift 1
+PIDL_EXTRA_ARGS="$*"
[ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
-PIDL="$PERL ./build/pidl/pidl.pl --output librpc/gen_ndr/ndr_ --parse --header --parser --server --client --dcom-proxy --com-header --swig --odl"
+PIDL="$PERL ./build/pidl/pidl.pl --output librpc/gen_ndr/ndr_ --parse --header --parser --server --client --dcom-proxy --com-header --swig --odl $PIDL_EXTRA_ARGS"
if [ x$FULLBUILD = xFULL ]; then
echo Rebuilding all idl files in librpc/idl