s4:samldb LDB module - make the "userAccountControl" and "groupType" modify handlers...
[ira/wip.git] / source4 / build / m4 / check_cc.m4
index 17384efd0e3520d38e597256d403292e03763a70..8149a8ff55ee0e9729a2e349776808bb65916cfd 100644 (file)
@@ -5,14 +5,7 @@ dnl  Released under the GNU GPL
 dnl -------------------------------------------------------
 dnl
 
-# don't let the AC_PROG_CC macro auto set the CFLAGS
-OLD_CFLAGS="${CFLAGS}"
-AC_PROG_CC
-CFLAGS="${OLD_CFLAGS}"
-if test x"$CC" = x""; then
-       AC_MSG_WARN([No c compiler was not found!])
-       AC_MSG_ERROR([Please Install gcc from http://gcc.gnu.org/])
-fi
+AC_LIBREPLACE_CC_CHECKS
 
 #
 # Set the debug symbol option if we have
@@ -23,64 +16,29 @@ if test x$ac_cv_prog_cc_g = xyes -a x$debug = xyes; then
        CFLAGS="${CFLAGS} -g"
 fi
 
-dnl needed before AC_TRY_COMPILE
-AC_ISC_POSIX
-
-AC_C_INLINE
-
-AC_CACHE_CHECK([that the C compiler can precompile header files],samba_cv_precompiled_headers, [
-       dnl Check whether the compiler can generate precompiled headers
-       touch conftest.h
-       if ${CC-cc} conftest.h 2> /dev/null && test -f conftest.h.gch; then
-               precompiled_headers=yes
-       else
-               precompiled_headers=no
-       fi])
-AC_SUBST(precompiled_headers)
-
-
-dnl Check if the C compiler understands volatile (it should, being ANSI).
-AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
-       AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
-               samba_cv_volatile=yes,samba_cv_volatile=no)])
-if test x"$samba_cv_volatile" = x"yes"; then
-       AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
-fi
-
-############################################
-# check if the compiler can do immediate structures
-AC_CACHE_CHECK([for immediate structures],samba_cv_immediate_structures, [
-    AC_TRY_COMPILE([
-#include <stdio.h>],
-[
-   typedef struct {unsigned x;} FOOBAR;
-   #define X_FOOBAR(x) ((FOOBAR) { x })
-   #define FOO_ONE X_FOOBAR(1)
-   FOOBAR f = FOO_ONE;   
-   static struct {
-       FOOBAR y; 
-       } f2[] = {
-               {FOO_ONE}
-       };   
-],
-       samba_cv_immediate_structures=yes,samba_cv_immediate_structures=no)])
-if test x"$samba_cv_immediate_structures" = x"yes"; then
-   AC_DEFINE(HAVE_IMMEDIATE_STRUCTURES,1,[Whether the compiler supports immediate structures])
-fi
-AC_SUBST(samba_cv_immediate_structures)
+dnl ###########################################################################
+dnl _AC_LANG_COMPILER_SUNCC
+dnl Check whether the compiler for the current language is really Sun compiler.
+dnl ###########################################################################
+m4_define([AC_LANG_COMPILER_SUNCC],
+[AC_CACHE_CHECK([whether we are really using the Sun _AC_LANG compiler],
+                [ac_cv_[]_AC_LANG_ABBREV[]_compiler_suncc],
+[_AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef __SUNPRO_C
+       choke me
+#endif
+]])],
+                   [ac_compiler_suncc=yes],
+                   [ac_compiler_suncc=no])
+ac_cv_[]_AC_LANG_ABBREV[]_compiler_suncc=$ac_compiler_suncc
+])])
+
+AC_LANG_COMPILER_SUNCC
 
 ############################################
 # check if the compiler handles c99 struct initialization
-SMB_CC_SUPPORTS_C99_STRUCT_INIT(samba_cv_c99_struct_initialization=yes,
+LIBREPLACE_C99_STRUCT_INIT(samba_cv_c99_struct_initialization=yes,
                    samba_cv_c99_struct_initialization=no)
 
-if test x"$samba_cv_c99_struct_initialization" != x"yes"; then
-       # We might need to add some flags to CC to get c99 behaviour.
-       AX_CFLAGS_IRIX_OPTION(-c99, CFLAGS)
-       SMB_CC_SUPPORTS_C99_STRUCT_INIT(samba_cv_c99_struct_initialization=yes,
-                           samba_cv_c99_struct_initialization=no)
-fi
-
 if test x"$samba_cv_c99_struct_initialization" != x"yes"; then
        AC_MSG_WARN([C compiler does not support c99 struct initialization!])
        AC_MSG_ERROR([Please Install gcc from http://gcc.gnu.org/])
@@ -90,35 +48,30 @@ fi
 # check if the compiler can handle negative enum values
 # and don't truncate the values to INT_MAX
 # a runtime test is needed here
-AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
+AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
     AC_TRY_RUN(
 [
        #include <stdio.h>
        enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
        int main(void) {
                enum negative_values v1 = NEGATIVE_VALUE;
-               unsigned v2 = NEGATIVE_VALUE;
-
-               if (v1 != 0xFFFFFFFF) {
-                       printf("%u != 0xFFFFFFFF\n", v1);
-                       return 1;
-               }
-               if (v2 != 0xFFFFFFFF) {
-                       printf("%u != 0xFFFFFFFF\n", v2);
+               unsigned v2 = 0xFFFFFFFF;
+               if (v1 != v2) {
+                       printf("v1=0x%08x v2=0x%08x\n", v1, v2);
                        return 1;
                }
-
                return 0;
        }
 ],
-       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"
+       samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,
+       samba_cv_CC_NEGATIVE_ENUM_VALUES=no,
+       samba_cv_CC_NEGATIVE_ENUM_VALUES=yes)])
+if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
+       AC_DEFINE(USE_UINT_ENUMS, 1, [Whether the compiler has uint enum support])
 fi
 
 AC_MSG_CHECKING([for test routines])
-AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
+AC_TRY_RUN([#include "${srcdir-.}/../tests/trivial.c"],
            AC_MSG_RESULT(yes),
            AC_MSG_ERROR([cant find test code. Aborting config]),
            AC_MSG_WARN([cannot run when cross-compiling]))
@@ -138,10 +91,10 @@ if test -n "$VISIBILITY_CFLAGS"; then
        OLD_CFLAGS="$CFLAGS"
 
        CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
-       AC_TRY_RUN([
+       AC_TRY_LINK([
                void vis_foo1(void) {}
                __attribute__((visibility("default"))) void vis_foo2(void) {}
-               #include "${srcdir-.}/build/tests/trivial.c"
+       ],[
        ],[
                AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_VISIBILITY_ATTR,1,[Whether the C compiler supports the visibility attribute])
@@ -164,6 +117,9 @@ if test x$developer = xyes; then
        CFLAGS="${CFLAGS} -D_SAMBA_DEVELOPER_DONNOT_USE_O2_"
        DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
        if test x"$GCC" = x"yes" ; then
+           #
+           # warnings we want...
+           #
            AX_CFLAGS_GCC_OPTION(-Wall, DEVELOPER_CFLAGS)
            AX_CFLAGS_GCC_OPTION(-Wshadow, DEVELOPER_CFLAGS)
            AX_CFLAGS_GCC_OPTION(-Werror-implicit-function-declaration, DEVELOPER_CFLAGS)
@@ -174,10 +130,26 @@ if test x$developer = xyes; then
            AX_CFLAGS_GCC_OPTION(-Wwrite-strings, DEVELOPER_CFLAGS)
            AX_CFLAGS_GCC_OPTION(-Wmissing-format-attribute, DEVELOPER_CFLAGS)
            AX_CFLAGS_GCC_OPTION(-Wformat=2, DEVELOPER_CFLAGS)
-           AX_CFLAGS_GCC_OPTION(-Wno-format-y2k, DEVELOPER_CFLAGS)
            AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement, DEVELOPER_CFLAGS)
            AX_CFLAGS_GCC_OPTION(-Wunused-macros, DEVELOPER_CFLAGS)
-       else
+#          AX_CFLAGS_GCC_OPTION(-Wextra, DEVELOPER_CFLAGS)
+#          AX_CFLAGS_GCC_OPTION(-Wc++-compat, DEVELOPER_CFLAGS)
+#          AX_CFLAGS_GCC_OPTION(-Wmissing-prototypes, DEVELOPER_CFLAGS)
+#          AX_CFLAGS_GCC_OPTION(-Wmissing-declarations, DEVELOPER_CFLAGS)
+#          AX_CFLAGS_GCC_OPTION(-Wmissing-field-initializers, DEVELOPER_CFLAGS)
+           #
+           # warnings we don't want...
+           #
+           AX_CFLAGS_GCC_OPTION(-Wno-format-y2k, DEVELOPER_CFLAGS)
+           AX_CFLAGS_GCC_OPTION(-Wno-unused-parameter, DEVELOPER_CFLAGS)
+           #
+           # warnings we don't want just for some files e.g. swig bindings
+           #
+           AX_CFLAGS_GCC_OPTION(-Wno-cast-qual, CFLAG_NO_CAST_QUAL)
+           AC_SUBST(CFLAG_NO_CAST_QUAL)
+           AX_CFLAGS_GCC_OPTION(-Wno-unused-macros, CFLAG_NO_UNUSED_MACROS)
+           AC_SUBST(CFLAG_NO_UNUSED_MACROS)
+       elif test x"$ac_cv_c_compiler_suncc" != x"yes"; then
            AX_CFLAGS_IRIX_OPTION(-fullwarn, DEVELOPER_CFLAGS)
        fi
 
@@ -194,7 +166,7 @@ if test -n "$DEVELOPER_CFLAGS"; then
 fi
 
 # allow for --with-hostcc=gcc
-AC_ARG_WITH(hostcc,[  --with-hostcc=compiler    choose host compiler],
+AC_ARG_WITH(hostcc,[  --with-hostcc=compiler  choose host compiler],
 [HOSTCC=$withval],
 [
 if test z"$cross_compiling" = "yes"; then 
@@ -206,40 +178,3 @@ fi
 AC_SUBST(HOSTCC)
 
 AC_PATH_PROG(GCOV,gcov)
-
-AC_PATH_PROG(MAKE,make)
-
-AC_CACHE_CHECK([whether we have GNU make], samba_cv_gnu_make, [
-if $ac_cv_path_MAKE --version | head -1 | grep GNU 2>/dev/null >/dev/null
-then
-       samba_cv_gnu_make=yes
-else
-       samba_cv_gnu_make=no
-fi
-])
-
-GNU_MAKE=$samba_cv_gnu_make
-AC_SUBST(GNU_MAKE)
-
-if test "x$GNU_MAKE" = x"yes"; then
-       AC_CACHE_CHECK([GNU make version], samba_cv_gnu_make_version,[
-               samba_cv_gnu_make_version=`$ac_cv_path_MAKE --version | head -1 | cut -d " " -f 3 2>/dev/null`
-       ])
-       GNU_MAKE_VERSION=$samba_cv_gnu_make_version
-       AC_SUBST(GNU_MAKE_VERSION)
-fi
-
-
-new_make=no
-AC_MSG_CHECKING([for GNU make >= 3.81])
-if test x$GNU_MAKE = x"yes"; then
-       if $PERL -e " \$_ = '$GNU_MAKE_VERSION'; s/@<:@^\d\.@:>@.*//g; exit (\$_ < 3.81);"; then
-               new_make=yes
-       fi
-fi
-AC_MSG_RESULT($new_make)
-automatic_dependencies=no
-AX_CFLAGS_GCC_OPTION([-M -MT conftest.d -MF conftest.o], [], [ automatic_dependencies=$new_make ], [])
-AC_MSG_CHECKING([Whether to use automatic dependencies])
-AC_MSG_RESULT($automatic_dependencies)
-AC_SUBST(automatic_dependencies)