[gnome-photos] build: Update AX_COMPILER_FLAGS macro



commit d12b7082993ee705261f16e0859df6bb7637908c
Author: Pranav Kant <pranavk src gnome org>
Date:   Tue Mar 10 21:52:56 2015 +0530

    build: Update AX_COMPILER_FLAGS macro
    
    This update, most importantly, removes the C++ compiler checks during
    configure phase.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=745972

 m4/ax_append_flag.m4             |    6 +-
 m4/ax_compiler_flags.m4          |   92 +++++++++++++++++++--------
 m4/ax_compiler_flags_cflags.m4   |   43 +++++++------
 m4/ax_compiler_flags_cxxflags.m4 |  126 --------------------------------------
 m4/ax_compiler_flags_gir.m4      |   20 ++----
 m4/ax_compiler_flags_ldflags.m4  |   21 +------
 6 files changed, 101 insertions(+), 207 deletions(-)
---
diff --git a/m4/ax_append_flag.m4 b/m4/ax_append_flag.m4
index d26286c..aeab899 100644
--- a/m4/ax_append_flag.m4
+++ b/m4/ax_append_flag.m4
@@ -49,15 +49,15 @@
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-#serial 4
+#serial 5
 
 AC_DEFUN([AX_APPEND_FLAG],
 [dnl
 AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
 AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
 AS_VAR_SET_IF(FLAGS,[
-  AS_CASE([AS_VAR_GET(FLAGS)],
-    ["* $1 *|*$1"],[AC_RUN_LOG([: FLAGS already contains $1])],
+  AS_CASE([" AS_VAR_GET(FLAGS) "],
+    [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
     [
      AS_VAR_APPEND(FLAGS," $1")
      AC_RUN_LOG([: FLAGS="$FLAGS"])
diff --git a/m4/ax_compiler_flags.m4 b/m4/ax_compiler_flags.m4
index 061dd86..c52ae7d 100644
--- a/m4/ax_compiler_flags.m4
+++ b/m4/ax_compiler_flags.m4
@@ -4,7 +4,7 @@
 #
 # SYNOPSIS
 #
-#   AX_COMPILER_FLAGS([CFLAGS-VARIABLE], [LDFLAGS-VARIABLE], [IS-RELEASE], [EXTRA-BASE-CFLAGS], 
[EXTRA-MINIMUM-CFLAGS], [EXTRA-YES-CFLAGS], [EXTRA-MAXIMUM-CFLAGS], [EXTRA-ERROR-CFLAGS], 
[EXTRA-BASE-LDFLAGS], [EXTRA-MINIMUM-LDFLAGS], [EXTRA-YES-LDFLAGS], [EXTRA-MAXIMUM-LDFLAGS], 
[EXTRA-ERROR-LDFLAGS])
+#   AX_COMPILER_FLAGS([CFLAGS-VARIABLE], [LDFLAGS-VARIABLE], [IS-RELEASE], [EXTRA-BASE-CFLAGS], 
[EXTRA-YES-CFLAGS], [UNUSED], [UNUSED], [UNUSED], [EXTRA-BASE-LDFLAGS], [EXTRA-YES-LDFLAGS], [UNUSED], 
[UNUSED], [UNUSED])
 #
 # DESCRIPTION
 #
@@ -32,37 +32,47 @@
 #   --enable-compile-warnings can take the values:
 #
 #    * no:      Base compiler warnings only; not even -Wall.
-#    * minimum: The above, plus minimal extra warnings such as -Wall.
 #    * yes:     The above, plus a broad range of useful warnings.
-#    * maximum: The above, plus additional warnings which enforce a particular
-#               coding style
 #    * error:   The above, plus -Werror so that all warnings are fatal.
 #               Use --disable-Werror to override this and disable fatal
 #               warnings.
 #
-#   The set of flags enabled at each level can be augmented using the
-#   EXTRA-*-CFLAGS and EXTRA-*-LDFLAGS variables.  Flags should not be
-#   disabled using these arguments, as the entire point of AX_COMPILER_FLAGS
-#   is to enforce a consistent set of useful compiler warnings on code,
-#   using warnings which have been chosen for low false positive rates.  If
-#   a compiler emits false positives for a warning, a #pragma should be used
-#   in the code to disable the warning locally. See:
+#   The set of base and enabled flags can be augmented using the
+#   EXTRA-*-CFLAGS and EXTRA-*-LDFLAGS variables, which are tested and
+#   appended to the output variable if --enable-compile-warnings is not
+#   "no". Flags should not be disabled using these arguments, as the entire
+#   point of AX_COMPILER_FLAGS is to enforce a consistent set of useful
+#   compiler warnings on code, using warnings which have been chosen for low
+#   false positive rates.  If a compiler emits false positives for a
+#   warning, a #pragma should be used in the code to disable the warning
+#   locally. See:
 #
 #     https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
 #
+#   The EXTRA-* variables should only be used to supply extra warning flags,
+#   and not general purpose compiler flags, as they are controlled by
+#   configure options such as --disable-Werror.
+#
 #   IS-RELEASE can be used to disable -Werror when making a release, which
 #   is useful for those hairy moments when you just want to get the release
-#   done as quickly as possible.  Set it to "yes" to disable -Werror.
+#   done as quickly as possible.  Set it to "yes" to disable -Werror. By
+#   default, it uses the value of $ax_is_release, so if you are using the
+#   AX_IS_RELEASE macro, there is no need to pass this parameter. For
+#   example:
+#
+#     AX_IS_RELEASE([git-directory])
+#     AX_COMPILER_FLAGS()
 #
 #   CFLAGS-VARIABLE defaults to WARN_CFLAGS, and LDFLAGS-VARIABLE defaults
 #   to WARN_LDFLAGS.  Both variables are AC_SUBST-ed by this macro, but must
 #   be manually added to the CFLAGS and LDFLAGS variables for each target in
 #   the code base.
 #
-#   Warning flags for the C++ compiler are AC_SUBST-ed as WARN_CXXFLAGS, and
-#   must be manually added to the CXXFLAGS variables for each target in the
-#   code base. EXTRA-*-CFLAGS can be used to augment the flags enabled at
-#   each level.
+#   If C++ language support is enabled with AC_PROG_CXX, which must occur
+#   before this macro in configure.ac, warning flags for the C++ compiler
+#   are AC_SUBST-ed as WARN_CXXFLAGS, and must be manually added to the
+#   CXXFLAGS variables for each target in the code base.  EXTRA-*-CFLAGS can
+#   be used to augment the base and enabled flags.
 #
 #   Warning flags for g-ir-scanner (from GObject Introspection) are
 #   AC_SUBST-ed as WARN_SCANNERFLAGS.  This variable must be manually added
@@ -77,6 +87,10 @@
 #   over the flags for individual tools, use AX_COMPILER_FLAGS_CFLAGS,
 #   AX_COMPILER_FLAGS_LDFLAGS and AX_COMPILER_FLAGS_* for new tools.
 #
+#   The UNUSED variables date from a previous version of this macro, and are
+#   automatically appended to the preceding non-UNUSED variable. They should
+#   be left empty in new uses of the macro.
+#
 # LICENSE
 #
 #   Copyright (c) 2014, 2015 Philip Withnall <philip tecnocode co uk>
@@ -87,17 +101,36 @@
 #   and this notice are preserved.  This file is offered as-is, without any
 #   warranty.
 
-#serial 8
+#serial 12
+
+# _AX_COMPILER_FLAGS_LANG([LANGNAME])
+m4_defun([_AX_COMPILER_FLAGS_LANG],
+[m4_ifdef([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [],
+          [m4_define([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [])dnl
+           AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_]$1[FLAGS])])dnl
+])
 
 AC_DEFUN([AX_COMPILER_FLAGS],[
-    AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_CFLAGS])
-    AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_CXXFLAGS])
+    # C support is enabled by default.
+    _AX_COMPILER_FLAGS_LANG([C])
+    # Only enable C++ support if AC_PROG_CXX is called. The redefinition of
+    # AC_PROG_CXX is so that a fatal error is emitted if this macro is called
+    # before AC_PROG_CXX, which would otherwise cause no C++ warnings to be
+    # checked.
+    AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                      [_AX_COMPILER_FLAGS_LANG([CXX])],
+                      [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AX_COMPILER_FLAGS_LANG([CXX])])])
     AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_LDFLAGS])
 
+    # Default value for IS-RELEASE is $ax_is_release
+    ax_compiler_flags_is_release=m4_tolower(m4_normalize(ifelse([$3],,
+                                                                [$ax_is_release],
+                                                                [$3])))
+
     AC_ARG_ENABLE([compile-warnings],
-                  AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
-                                 [Enable different levels of compiler warnings]),,
-                  [AS_IF([test "$3" = "yes"],
+                  AS_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@],
+                                 [Enable compiler warnings and errors]),,
+                  [AS_IF([test "$ax_compiler_flags_is_release" = "yes"],
                          [enable_compile_warnings="yes"],
                          [enable_compile_warnings="error"])])
     AC_ARG_ENABLE([Werror],
@@ -108,13 +141,18 @@ AC_DEFUN([AX_COMPILER_FLAGS],[
     # Return the user’s chosen warning level
     AS_IF([test "$enable_Werror" = "no" -a \
                 "$enable_compile_warnings" = "error"],[
-        enable_compile_warnings="maximum"
+        enable_compile_warnings="yes"
     ])
 
     ax_enable_compile_warnings=$enable_compile_warnings
 
-    AX_COMPILER_FLAGS_CFLAGS([$1],[$3],[$4],[$5],[$6],[$7],[$8])
-    AX_COMPILER_FLAGS_CXXFLAGS([WARN_CXXFLAGS],[$3],[$4],[$5],[$6],[$7],[$8])
-    AX_COMPILER_FLAGS_LDFLAGS([$2],[$3],[$9],[$10],[$11],[$12],[$13])
-    AX_COMPILER_FLAGS_GIR([WARN_SCANNERFLAGS],[$3])
+    AX_COMPILER_FLAGS_CFLAGS([$1],[$ax_compiler_flags_is_release],
+                             [$4],[$5 $6 $7 $8])
+    m4_ifdef([_AX_COMPILER_FLAGS_LANG_CXX_enabled],
+             [AX_COMPILER_FLAGS_CXXFLAGS([WARN_CXXFLAGS],
+                                         [$ax_compiler_flags_is_release],
+                                         [$4],[$5 $6 $7 $8])])
+    AX_COMPILER_FLAGS_LDFLAGS([$2],[$ax_compiler_flags_is_release],
+                              [$9],[$10 $11 $12 $13])
+    AX_COMPILER_FLAGS_GIR([WARN_SCANNERFLAGS],[$ax_compiler_flags_is_release])
 ])dnl AX_COMPILER_FLAGS
diff --git a/m4/ax_compiler_flags_cflags.m4 b/m4/ax_compiler_flags_cflags.m4
index 1f8ef1f..295d7fe 100644
--- a/m4/ax_compiler_flags_cflags.m4
+++ b/m4/ax_compiler_flags_cflags.m4
@@ -4,7 +4,7 @@
 #
 # SYNOPSIS
 #
-#   AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-MINIMUM-FLAGS], 
[EXTRA-YES-FLAGS], [EXTRA-MAXIMUM-FLAGS], [EXTRA-ERROR-FLAGS])
+#   AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
 #
 # DESCRIPTION
 #
@@ -25,7 +25,7 @@
 #   and this notice are preserved.  This file is offered as-is, without any
 #   warranty.
 
-#serial 3
+#serial 8
 
 AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
     AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
@@ -36,6 +36,8 @@ AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
     m4_define(ax_warn_cflags_variable,
               [m4_normalize(ifelse([$1],,[WARN_CFLAGS],[$1]))])
 
+    AC_LANG_PUSH([C])
+
     # Always pass -Werror=unknown-warning-option to get Clang to fail on bad
     # flags, otherwise they are always appended to the warn_cflags variable, and
     # Clang warns on them for every compilation unit.
@@ -54,16 +56,9 @@ AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
     ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
 
     AS_IF([test "$ax_enable_compile_warnings" != "no"],[
-        # "minimum" flags
-        AX_APPEND_COMPILE_FLAGS([ dnl
-            -Wall dnl
-            $4 dnl
-        ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" != "no" -a \
-                "$ax_enable_compile_warnings" != "minimum"],[
         # "yes" flags
         AX_APPEND_COMPILE_FLAGS([ dnl
+            -Wall dnl
             -Wextra dnl
             -Wundef dnl
             -Wnested-externs dnl
@@ -95,17 +90,12 @@ AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
             -Warray-bounds dnl
             -Wimplicit-function-declaration dnl
             -Wreturn-type dnl
-            $5 dnl
-        ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" = "maximum" -o \
-                "$ax_enable_compile_warnings" = "error"],[
-        # "maximum" flags
-        AX_APPEND_COMPILE_FLAGS([ dnl
             -Wswitch-enum dnl
             -Wswitch-default dnl
-            -Waggregate-return dnl
+            $4 dnl
+            $5 dnl
             $6 dnl
+            $7 dnl
         ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
     ])
     AS_IF([test "$ax_enable_compile_warnings" = "error"],[
@@ -118,10 +108,25 @@ AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
 
         AX_APPEND_COMPILE_FLAGS([ dnl
             -Wno-suggest-attribute=format dnl
-            $7 dnl
         ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
     ])
 
+    # In the flags below, when disabling specific flags, always add *both*
+    # -Wno-foo and -Wno-error=foo. This fixes the situation where (for example)
+    # we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall,
+    # which effectively turns that flag back on again as an error.
+    for flag in $ax_warn_cflags_variable; do
+        AS_CASE([$flag],
+                [-Wno-*=*],[],
+                [-Wno-*],[
+                    AX_APPEND_COMPILE_FLAGS([-Wno-error=${flag:5}],
+                                            ax_warn_cflags_variable,
+                                            [$ax_compiler_flags_test])
+                ])
+    done
+
+    AC_LANG_POP([C])
+
     # Substitute the variables
     AC_SUBST(ax_warn_cflags_variable)
 ])dnl AX_COMPILER_FLAGS
diff --git a/m4/ax_compiler_flags_gir.m4 b/m4/ax_compiler_flags_gir.m4
index f26a8d2..180f50d 100644
--- a/m4/ax_compiler_flags_gir.m4
+++ b/m4/ax_compiler_flags_gir.m4
@@ -4,7 +4,7 @@
 #
 # SYNOPSIS
 #
-#   AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-MINIMUM-FLAGS], 
[EXTRA-YES-FLAGS], [EXTRA-MAXIMUM-FLAGS], [EXTRA-ERROR-FLAGS])
+#   AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
 #
 # DESCRIPTION
 #
@@ -26,7 +26,7 @@
 #   and this notice are preserved.  This file is offered as-is, without any
 #   warranty.
 
-#serial 2
+#serial 4
 
 AC_DEFUN([AX_COMPILER_FLAGS_GIR],[
     AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
@@ -39,27 +39,19 @@ AC_DEFUN([AX_COMPILER_FLAGS_GIR],[
     AX_APPEND_FLAG([$3],ax_warn_scannerflags_variable)
 
     AS_IF([test "$ax_enable_compile_warnings" != "no"],[
-        # "minimum" flags
+        # "yes" flags
         AX_APPEND_FLAG([ dnl
             --warn-all dnl
             $4 dnl
+            $5 dnl
+            $6 dnl
+            $7 dnl
         ],ax_warn_scannerflags_variable)
-    ]) 
-    AS_IF([test "$ax_enable_compile_warnings" != "no" -a \
-                "$ax_enable_compile_warnings" != "minimum"],[
-        # "yes" flags
-        AX_APPEND_FLAG([$5],ax_warn_scannerflags_variable)
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" = "maximum" -o \
-                "$ax_enable_compile_warnings" = "error"],[
-        # "maximum" flags
-        AX_APPEND_FLAG([$6],ax_warn_scannerflags_variable)
     ])
     AS_IF([test "$ax_enable_compile_warnings" = "error"],[
         # "error" flags
         AX_APPEND_FLAG([ dnl
             --warn-error dnl
-            $7 dnl
         ],ax_warn_scannerflags_variable)
     ])
 
diff --git a/m4/ax_compiler_flags_ldflags.m4 b/m4/ax_compiler_flags_ldflags.m4
index ad845c6..f9077fc 100644
--- a/m4/ax_compiler_flags_ldflags.m4
+++ b/m4/ax_compiler_flags_ldflags.m4
@@ -4,7 +4,7 @@
 #
 # SYNOPSIS
 #
-#   AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-MINIMUM-FLAGS], 
[EXTRA-YES-FLAGS], [EXTRA-MAXIMUM-FLAGS], [EXTRA-ERROR-FLAGS])
+#   AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
 #
 # DESCRIPTION
 #
@@ -25,7 +25,7 @@
 #   and this notice are preserved.  This file is offered as-is, without any
 #   warranty.
 
-#serial 2
+#serial 3
 
 AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[
     AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
@@ -54,22 +54,8 @@ AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[
     ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
 
     AS_IF([test "$ax_enable_compile_warnings" != "no"],[
-        # "minimum" flags
-        AX_APPEND_COMPILE_FLAGS([$4],
-                                ax_warn_ldflags_variable,
-                                [$ax_compiler_flags_test])
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" != "no" -a \
-                "$ax_enable_compile_warnings" != "minimum"],[
         # "yes" flags
-        AX_APPEND_COMPILE_FLAGS([$5],
-                                ax_warn_ldflags_variable,
-                                [$ax_compiler_flags_test])
-    ])
-    AS_IF([test "$ax_enable_compile_warnings" = "maximum" -o \
-                "$ax_enable_compile_warnings" = "error"],[
-        # "maximum" flags
-        AX_APPEND_COMPILE_FLAGS([$6],
+        AX_APPEND_COMPILE_FLAGS([$4 $5 $6 $7],
                                 ax_warn_ldflags_variable,
                                 [$ax_compiler_flags_test])
     ])
@@ -81,7 +67,6 @@ AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[
         # positives
         AX_APPEND_COMPILE_FLAGS([ dnl
             -Wl,--fatal-warnings dnl
-            $7 dnl
         ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
     ])
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]