Updated pandora-build files to version 0.167
[m6w6/libmemcached] / m4 / pandora_warnings.m4
index 9ee365a023537af1539f10a425170aa3c9f76ca9..99f40c93a6dc86f7b0ddce7e1e790e8bf65322fa 100644 (file)
@@ -1,5 +1,5 @@
-dnl  Copyright (C) 2009 Sun Microsystems
-dnl This file is free software; Sun Microsystems
+dnl  Copyright (C) 2009 Sun Microsystems, Inc.
+dnl This file is free software; Sun Microsystems, Inc.
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
@@ -34,6 +34,12 @@ AC_DEFUN([PANDORA_WARNINGS],[
           [ac_cv_warnings_as_errors=yes],
           [ac_cv_warnings_as_errors=no]))
 
+  AC_ARG_ENABLE([gcc-profile-mode],
+      [AS_HELP_STRING([--enable-gcc-profile-mode],
+         [Toggle gcc profile mode @<:@default=off@:>@])],
+      [ac_gcc_profile_mode="$enableval"],
+      [ac_gcc_profile_mode="no"])
+
   AC_ARG_ENABLE([profiling],
       [AS_HELP_STRING([--enable-profiling],
          [Toggle profiling @<:@default=off@:>@])],
@@ -87,69 +93,47 @@ AC_DEFUN([PANDORA_WARNINGS],[
             F_DIAGNOSTICS_SHOW_OPTION="-fdiagnostics-show-option"
           ])
 
-    AC_CACHE_CHECK([whether it is safe to use -Wconversion],
-      [ac_cv_safe_to_use_wconversion_],
+    AC_CACHE_CHECK([whether it is safe to use -floop-parallelize-all],
+      [ac_cv_safe_to_use_floop_parallelize_all_],
       [save_CFLAGS="$CFLAGS"
-       dnl Use -Werror here instead of ${W_FAIL} so that we don't spew
-       dnl conversion warnings to all the tarball folks
-       CFLAGS="-Wconversion -Werror -pedantic ${AM_CFLAGS} ${CFLAGS}"
+       CFLAGS="-floop-parallelize-all ${AM_CFLAGS} ${CFLAGS}"
        AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([[
-#include <stdbool.h>
-void foo(bool a)
-{
-  (void)a;
-}
-         ]],[[
-foo(0);
-         ]])],
-         [ac_cv_safe_to_use_wconversion_=yes],
-         [ac_cv_safe_to_use_wconversion_=no])
+         [AC_LANG_PROGRAM([],[])],
+         [ac_cv_safe_to_use_floop_parallelize_all_=yes],
+         [ac_cv_safe_to_use_floop_parallelize_all_=no])
        CFLAGS="$save_CFLAGS"])
 
-    AS_IF([test "$ac_cv_safe_to_use_wconversion_" = "yes"],
-      [W_CONVERSION="-Wconversion"
-      AC_CACHE_CHECK([whether it is safe to use -Wconversion with htons],
-        [ac_cv_safe_to_use_Wconversion_],
-        [save_CFLAGS="$CFLAGS"
-         dnl Use -Werror here instead of ${W_FAIL} so that we don't spew
-         dnl conversion warnings to all the tarball folks
-         CFLAGS="-Wconversion -Werror -pedantic ${AM_CFLAGS} ${CFLAGS}"
-         AC_COMPILE_IFELSE(
-           [AC_LANG_PROGRAM(
-             [[
-#include <netinet/in.h>
-             ]],[[
-uint16_t x= htons(80);
-             ]])],
-           [ac_cv_safe_to_use_Wconversion_=yes],
-           [ac_cv_safe_to_use_Wconversion_=no])
-         CFLAGS="$save_CFLAGS"])
-
-      AS_IF([test "$ac_cv_safe_to_use_Wconversion_" = "no"],
-            [NO_CONVERSION="-Wno-conversion"])
-    ])
+    AS_IF([test "$ac_cv_safe_to_use_floop_parallelize_all_" = "yes"],
+          [
+            F_LOOP_PARALLELIZE_ALL="-floop-parallelize-all"
+          ])
 
     NO_STRICT_ALIASING="-fno-strict-aliasing -Wno-strict-aliasing"
     NO_SHADOW="-Wno-shadow"
 
     AS_IF([test "$INTELCC" = "yes"],[
       m4_if(PW_LESS_WARNINGS,[no],[
-        BASE_WARNINGS="-w1 -Werror -Wcheck -Wformat -Wp64 -Woverloaded-virtual -Wcast-qual"
+        BASE_WARNINGS="-w1 -Werror -Wcheck -Wp64 -Woverloaded-virtual -Wcast-qual -diag-disable 188"
       ],[
-        BASE_WARNINGS="-w1 -Wcheck -Wformat -Wp64 -Woverloaded-virtual -Wcast-qual -diag-disable 981"
+        dnl 2203 is like old-style-cast
+        dnl 1684 is like strict-aliasing
+        dnl 188 is about using enums as bitfields
+        dnl 1683 is a warning about _EXPLICIT_ casting, which we want
+        BASE_WARNINGS="-w1 -Werror -Wcheck -Wp64 -Woverloaded-virtual -Wcast-qual -diag-disable 188,981,2259,2203,1683,1684"
       ])
       CC_WARNINGS="${BASE_WARNINGS}"
       CXX_WARNINGS="${BASE_WARNINGS}"
+      PROTOSKIP_WARNINGS="-diag-disable 188,981,967,2259,1683,1684,2203"
+      
     ],[
       m4_if(PW_LESS_WARNINGS,[no],[
-        BASE_WARNINGS_FULL="-Wformat=2 ${W_CONVERSION} -Wstrict-aliasing"
+        BASE_WARNINGS_FULL="${W_CONVERSION} -Wstrict-aliasing"
         CC_WARNINGS_FULL="-Wswitch-default -Wswitch-enum -Wwrite-strings"
-        CXX_WARNINGS_FULL="-Wold-style-cast"
+        CXX_WARNINGS_FULL="-Weffc++ -Wold-style-cast"
         NO_OLD_STYLE_CAST="-Wno-old-style-cast"
         NO_EFF_CXX="-Wno-effc++"
       ],[
-        BASE_WARNINGS_FULL="-Wformat ${NO_STRICT_ALIASING}"
+        BASE_WARNINGS_FULL="${NO_STRICT_ALIASING}"
       ])
 
       AS_IF([test "${ac_cv_assert}" = "no"],
@@ -169,11 +153,87 @@ uint16_t x= htons(80);
         [ac_cv_safe_to_use_Wextra_=no])
       CFLAGS="$save_CFLAGS"])
 
-      BASE_WARNINGS="${W_FAIL} -pedantic -Wall -Wundef -Wshadow ${NO_UNUSED} ${F_DIAGNOSTICS_SHOW_OPTION} ${CFLAG_VISIBILITY} ${BASE_WARNINGS_FULL}"
+      BASE_WARNINGS="${W_FAIL} -pedantic -Wall -Wundef -Wshadow ${NO_UNUSED} ${F_DIAGNOSTICS_SHOW_OPTION} ${F_LOOP_PARALLELIZE_ALL} ${BASE_WARNINGS_FULL}"
       AS_IF([test "$ac_cv_safe_to_use_Wextra_" = "yes"],
             [BASE_WARNINGS="${BASE_WARNINGS} -Wextra"],
             [BASE_WARNINGS="${BASE_WARNINGS} -W"])
   
+      AC_CACHE_CHECK([whether it is safe to use -Wformat],
+        [ac_cv_safe_to_use_wformat_],
+        [save_CFLAGS="$CFLAGS"
+         dnl Use -Werror here instead of ${W_FAIL} so that we don't spew
+         dnl conversion warnings to all the tarball folks
+         CFLAGS="-Wformat -Werror -pedantic ${AM_CFLAGS} ${CFLAGS}"
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([[
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+void foo();
+void foo()
+{
+  uint64_t test_u= 0;
+  printf("This is a %" PRIu64 "test\n", test_u);
+}
+           ]],[[
+foo();
+           ]])],
+           [ac_cv_safe_to_use_wformat_=yes],
+           [ac_cv_safe_to_use_wformat_=no])
+         CFLAGS="$save_CFLAGS"])
+      AS_IF([test "$ac_cv_safe_to_use_wformat_" = "yes"],[
+        BASE_WARNINGS="${BASE_WARNINGS} -Wformat -Wno-format-nonliteral -Wno-format-security"
+        BASE_WARNINGS_FULL="${BASE_WARNINGS_FULL} -Wformat=2 -Wno-format-nonliteral -Wno-format-security"
+        ],[
+        BASE_WARNINGS="${BASE_WARNINGS} -Wno-format"
+        BASE_WARNINGS_FULL="${BASE_WARNINGS_FULL} -Wno-format"
+      ])
+
+
+      AC_CACHE_CHECK([whether it is safe to use -Wconversion],
+        [ac_cv_safe_to_use_wconversion_],
+        [save_CFLAGS="$CFLAGS"
+         dnl Use -Werror here instead of ${W_FAIL} so that we don't spew
+         dnl conversion warnings to all the tarball folks
+         CFLAGS="-Wconversion -Werror -pedantic ${AM_CFLAGS} ${CFLAGS}"
+         AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM([[
+#include <stdbool.h>
+void foo(bool a)
+{
+  (void)a;
+}
+           ]],[[
+foo(0);
+           ]])],
+           [ac_cv_safe_to_use_wconversion_=yes],
+           [ac_cv_safe_to_use_wconversion_=no])
+         CFLAGS="$save_CFLAGS"])
+  
+      AS_IF([test "$ac_cv_safe_to_use_wconversion_" = "yes"],
+        [W_CONVERSION="-Wconversion"
+        AC_CACHE_CHECK([whether it is safe to use -Wconversion with htons],
+          [ac_cv_safe_to_use_Wconversion_],
+          [save_CFLAGS="$CFLAGS"
+           dnl Use -Werror here instead of ${W_FAIL} so that we don't spew
+           dnl conversion warnings to all the tarball folks
+           CFLAGS="-Wconversion -Werror -pedantic ${AM_CFLAGS} ${CFLAGS}"
+           AC_COMPILE_IFELSE(
+             [AC_LANG_PROGRAM(
+               [[
+#include <netinet/in.h>
+               ]],[[
+uint16_t x= htons(80);
+               ]])],
+             [ac_cv_safe_to_use_Wconversion_=yes],
+             [ac_cv_safe_to_use_Wconversion_=no])
+           CFLAGS="$save_CFLAGS"])
+  
+        AS_IF([test "$ac_cv_safe_to_use_Wconversion_" = "no"],
+              [NO_CONVERSION="-Wno-conversion"])
+      ])
+
       CC_WARNINGS="${BASE_WARNINGS} -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wcast-align ${CC_WARNINGS_FULL}"
       CXX_WARNINGS="${BASE_WARNINGS} -Woverloaded-virtual -Wnon-virtual-dtor -Wctor-dtor-privacy -Wno-long-long ${CXX_WARNINGS_FULL}"
 
@@ -196,6 +256,25 @@ uint16_t x= htons(80);
       AS_IF([test "$ac_cv_safe_to_use_Wmissing_declarations_" = "yes"],
             [CXX_WARNINGS="${CXX_WARNINGS} -Wmissing-declarations"])
   
+      AC_CACHE_CHECK([whether it is safe to use -Wframe-larger-than],
+        [ac_cv_safe_to_use_Wframe_larger_than_],
+        [AC_LANG_PUSH(C++)
+         save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="-Werror -pedantic -Wframe-larger-than=32768 ${AM_CXXFLAGS}"
+         AC_COMPILE_IFELSE([
+           AC_LANG_PROGRAM(
+           [[
+#include <stdio.h>
+           ]], [[]])
+        ],
+        [ac_cv_safe_to_use_Wframe_larger_than_=yes],
+        [ac_cv_safe_to_use_Wframe_larger_than_=no])
+        CXXFLAGS="$save_CXXFLAGS"
+        AC_LANG_POP()
+      ])
+      AS_IF([test "$ac_cv_safe_to_use_Wframe_larger_than_" = "yes"],
+            [CXX_WARNINGS="${CXX_WARNINGS} -Wframe-larger-than=32768"])
+  
       AC_CACHE_CHECK([whether it is safe to use -Wlogical-op],
         [ac_cv_safe_to_use_Wlogical_op_],
         [save_CFLAGS="$CFLAGS"
@@ -333,8 +412,8 @@ inline const EnumDescriptor* GetEnumDescriptor<Table_TableOptions_RowType>() {
       CXX_WARNINGS_FULL="-erroff=attrskipunsup,doubunder,reftotemp,inllargeuse,truncwarn1,signextwarn,inllargeint"
     ])
 
-    CC_WARNINGS="-v -errtags=yes ${W_FAIL} ${CC_WARNINGS_FULL} ${CFLAG_VISIBILITY}"
-    CXX_WARNINGS="+w +w2 -xwe -xport64 -errtags=yes ${CXX_WARNINGS_FULL} ${W_FAIL} ${CFLAG_VISIBILITY}"
+    CC_WARNINGS="-v -errtags=yes ${W_FAIL} ${CC_WARNINGS_FULL}"
+    CXX_WARNINGS="+w +w2 -xwe -xport64 -errtags=yes ${CXX_WARNINGS_FULL} ${W_FAIL}"
     PROTOSKIP_WARNINGS="-erroff=attrskipunsup,doubunder,reftotemp,wbadinitl,identexpected,inllargeuse,truncwarn1,signextwarn,partinit,notused,badargtype2w,wbadinit"
     BOOSTSKIP_WARNINGS="-erroff=attrskipunsup,doubunder,reftotemp,inllargeuse,truncwarn1,signextwarn,inllargeint,hidef,wvarhidenmem"
     NO_UNREACHED="-erroff=E_STATEMENT_NOT_REACHED"