[gnome-photos/gnome-3-16] build: Update AX_COMPILER_FLAGS macro
- From: Pranav Kant <pranavk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/gnome-3-16] build: Update AX_COMPILER_FLAGS macro
- Date: Thu, 9 Apr 2015 18:43:23 +0000 (UTC)
commit 4f4baee6d78b55108d74561cc059863959113306
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]