r7425: configure check to see if a compiler can handle negative enum values
authorStefan Metzmacher <metze@samba.org>
Thu, 9 Jun 2005 07:51:58 +0000 (07:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:17:51 +0000 (13:17 -0500)
if the compiler doesn't support it we pass --uint-enums to pidl

metze
(This used to be commit c52703c0a8adb4f64ec52e4bf602e9c17ef2c748)

source4/build/m4/check_cc.m4
source4/build/m4/check_perl.m4
source4/build/smb_build/makefile.pm
source4/script/build_idl.sh

index 68e938b7943932c06726cc4fc89eafad0282dc2d..947112f4b6d0521bf7c81a8371ea63f8efa47d22 100644 (file)
@@ -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),
index 5f5f614f84315b2be67f41139353d838453d3c36..5e493db875d35910226350205700407c62dcd047 100644 (file)
@@ -13,3 +13,6 @@ fi
 if test x"$debug" = x"yes";then
        PERL="$PERL -W"
 fi
+
+PIDL_ARGS=""
+AC_SUBST(PIDL_ARGS)
index 0367124e64f5dca51672d9911c91348cf7e2c4dc..b14991a840ce38f4a386c67ff2a6dca96848a578 100644 (file)
@@ -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
index d15a9add318ba331620cc0eb2e059fae57b932fa..2018d70d2b1304286c6a46002c22fd7556ea7157 100755 (executable)
@@ -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