|
@@ -0,0 +1,669 @@
|
|
|
+From 28ba44ad9ca14153e96c94a9100423ea224c1af3 Mon Sep 17 00:00:00 2001
|
|
|
+From: Simon Marchi <simon.marchi@efficios.com>
|
|
|
+Date: Tue, 18 Feb 2020 13:14:22 -0500
|
|
|
+Subject: [PATCH] configure: simplify warning flags detection
|
|
|
+
|
|
|
+We currently use the AX_COMPILER_FLAGS macro to detect the warning flags
|
|
|
+that the current compiler supports. It works, but is quite invasive.
|
|
|
+It unconditionally enables a bunch of warnings we don't want, which
|
|
|
+forces us to disable them with many -Wno-foo switches.
|
|
|
+
|
|
|
+Instead of using AX_COMPILER_FLAGS, we can use the slightly lower lever
|
|
|
+macro AX_APPEND_COMPILE_FLAGS to achieve our goal of detecting which
|
|
|
+warning flags are supported. This is what we ended up using in
|
|
|
+lttng-tools (a completely unrelated project, but that has a suspiciously
|
|
|
+high ratio of contributors in common with Babeltrace).
|
|
|
+
|
|
|
+I looked in our git history to see which warning flags were mentioned in
|
|
|
+commit messages. I have added the flags that did find actual problems
|
|
|
+and are not enabled by default to the AX_APPEND_COMPILE_FLAGS invocation.
|
|
|
+I have also added the flags that AX_COMPILER_FLAGS did provide, which we
|
|
|
+didn't need to disable.
|
|
|
+
|
|
|
+The --{enable,disable}-Werror flag is added using an explicit
|
|
|
+AC_ARG_ENABLE. In lttng-tools, it was decided to _not_ have -Werror by
|
|
|
+default, so I suggest we do the same in Babeltrace, for consistency
|
|
|
+(although it saddens me very much). Developers who want to build with
|
|
|
+-Werror will need to pass --enable-Werror.
|
|
|
+
|
|
|
+Note that with this patch, we lose the following configure switch, that
|
|
|
+is provided by AX_COMPILER_FLAGS:
|
|
|
+
|
|
|
+ --enable-compile-warnings=[no/yes/error]
|
|
|
+
|
|
|
+Change-Id: If968f7385a7f5c48d27f402c76bc26241a8f505a
|
|
|
+Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
|
|
|
+Reviewed-on: https://review.lttng.org/c/babeltrace/+/3209
|
|
|
+Tested-by: jenkins <jenkins@lttng.org>
|
|
|
+Reviewed-by: Michael Jeanson <mjeanson@efficios.com>
|
|
|
+
|
|
|
+[Retrieved from:
|
|
|
+https://github.com/efficios/babeltrace/commit/28ba44ad9ca14153e96c94a9100423ea224c1af3]
|
|
|
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
+---
|
|
|
+ configure.ac | 74 +++++++++------
|
|
|
+ m4/ax_compiler_flags.m4 | 158 -------------------------------
|
|
|
+ m4/ax_compiler_flags_cflags.m4 | 161 --------------------------------
|
|
|
+ m4/ax_compiler_flags_gir.m4 | 60 ------------
|
|
|
+ m4/ax_compiler_flags_ldflags.m4 | 111 ----------------------
|
|
|
+ 5 files changed, 46 insertions(+), 518 deletions(-)
|
|
|
+ delete mode 100644 m4/ax_compiler_flags.m4
|
|
|
+ delete mode 100644 m4/ax_compiler_flags_cflags.m4
|
|
|
+ delete mode 100644 m4/ax_compiler_flags_gir.m4
|
|
|
+ delete mode 100644 m4/ax_compiler_flags_ldflags.m4
|
|
|
+
|
|
|
+diff --git a/configure.ac b/configure.ac
|
|
|
+index 055fba101..7ebcf2ad4 100644
|
|
|
+--- a/configure.ac
|
|
|
++++ b/configure.ac
|
|
|
+@@ -660,25 +660,35 @@ target.
|
|
|
+ CFLAGS=${save_CFLAGS}
|
|
|
+
|
|
|
+ # Detect C and LD warning flags supported by the compiler.
|
|
|
+-AX_COMPILER_FLAGS(
|
|
|
+- [WARN_CFLAGS], dnl CFLAGS variable name
|
|
|
+- [WARN_LDFLAGS], dnl LDFLAGS variable name (unused for now)
|
|
|
+- [], dnl is-release
|
|
|
+- [], dnl Extra base CFLAGS
|
|
|
+- [ dnl Extra "yes" CFLAGS
|
|
|
+- dnl Disable these flags, either because we don't want them
|
|
|
+- dnl or because we want them but are not ready to enable them
|
|
|
+- dnl yet.
|
|
|
+- -Wno-sign-compare dnl
|
|
|
+- -Wno-inline dnl
|
|
|
+- -Wno-declaration-after-statement dnl
|
|
|
+- -Wno-switch-enum dnl
|
|
|
+- -Wno-switch-default dnl
|
|
|
+- -Wno-packed dnl
|
|
|
+- -Wno-pointer-arith dnl
|
|
|
++
|
|
|
++# Detect warning flags supported by the compiler, append them to WARN_CFLAGS.
|
|
|
++#
|
|
|
++# Pass -Werror as an extra flag during the test: this is needed to make the
|
|
|
++# -Wunknown-warning-option diagnostic fatal with clang.
|
|
|
++AX_APPEND_COMPILE_FLAGS([ dnl
|
|
|
++ -Wall dnl
|
|
|
++ -Wextra dnl
|
|
|
++ -Wstrict-prototypes dnl
|
|
|
++ -Wmissing-prototypes dnl
|
|
|
++ -Wmissing-declarations dnl
|
|
|
++ -Wnull-dereference dnl
|
|
|
++ -Wundef dnl
|
|
|
++ -Wredundant-decls dnl
|
|
|
++ -Wshadow dnl
|
|
|
++ -Wjump-misses-init dnl
|
|
|
++ -Wtautological-constant-out-of-range-compare dnl
|
|
|
++ -Wnested-externs dnl
|
|
|
++ -Wwrite-strings dnl
|
|
|
++ -Wformat=2 dnl
|
|
|
+ -Wno-format-nonliteral dnl
|
|
|
+- -Wno-double-promotion dnl
|
|
|
+- -Wno-cast-align dnl
|
|
|
++ -Wstrict-aliasing dnl
|
|
|
++ -Wmissing-noreturn dnl
|
|
|
++ -Winit-self dnl
|
|
|
++ -Wduplicated-cond dnl
|
|
|
++ -Wduplicated-branches dnl
|
|
|
++ -Wlogical-op dnl
|
|
|
++ -Wno-unused-parameter dnl
|
|
|
++ -Wno-sign-compare dnl
|
|
|
+ dnl
|
|
|
+ dnl Some versions of SWIG (like 3.0.12) generate code that produces
|
|
|
+ dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This
|
|
|
+@@ -692,24 +702,32 @@ AX_COMPILER_FLAGS(
|
|
|
+ dnl
|
|
|
+ dnl Ref: https://github.com/swig/swig/issues/1259
|
|
|
+ -Wno-cast-function-type dnl
|
|
|
+- ])
|
|
|
+-
|
|
|
+-# CFLAGS from AX_COMPILER_FLAGS.
|
|
|
+-AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
|
|
|
++ -Wno-missing-field-initializers dnl
|
|
|
++ ],
|
|
|
++ [WARN_CFLAGS],
|
|
|
++ [-Werror])
|
|
|
++
|
|
|
++# When given, add -Werror to WARN_CFLAGS.
|
|
|
++AC_ARG_ENABLE([Werror],
|
|
|
++ [AS_HELP_STRING([--enable-Werror], [Treat compiler warnings as errors.])]
|
|
|
++)
|
|
|
++AS_IF([test "x$enable_Werror" = "xyes"],
|
|
|
++ [WARN_CFLAGS="${WARN_CFLAGS} -Werror"]
|
|
|
++)
|
|
|
+
|
|
|
+-# The test used in AX_COMPILER_FLAGS, generated using AC_LANG_PROGRAM, is
|
|
|
++# The test used in AX_APPEND_COMPILE_FLAGS, generated using AC_LANG_PROGRAM, is
|
|
|
+ # written in such a way that it triggers a -Wold-style-definition warning. So
|
|
|
+-# if the user has -Werror in their CFLAGS, that warning flag will end up
|
|
|
+-# disabled, because the test program will not build.
|
|
|
++# this warning always ends up disabled if we put it there, because the test
|
|
|
++# program does not build.
|
|
|
+ #
|
|
|
+ # Enable it here unconditionally. It is supported by GCC >= 4.8 and by Clang
|
|
|
+ # (it is accepted for compatibility although it has no effect), and there is
|
|
|
+ # not reason to not want it.
|
|
|
+
|
|
|
+-AM_CFLAGS="${AM_CFLAGS} -Wold-style-definition"
|
|
|
++WARN_CFLAGS="${WARN_CFLAGS} -Wold-style-definition"
|
|
|
+
|
|
|
+-# We want this one to always be an error.
|
|
|
+-AM_CFLAGS="${AM_CFLAGS} -Werror=implicit-function-declaration"
|
|
|
++# CFLAGS from AX_APPEND_COMPILE_FLAGS.
|
|
|
++AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
|
|
|
+
|
|
|
+ # Done for AM_CFLAGS.
|
|
|
+ AC_SUBST(AM_CFLAGS)
|
|
|
+diff --git a/m4/ax_compiler_flags.m4 b/m4/ax_compiler_flags.m4
|
|
|
+deleted file mode 100644
|
|
|
+index ddb0456c4..000000000
|
|
|
+--- a/m4/ax_compiler_flags.m4
|
|
|
++++ /dev/null
|
|
|
+@@ -1,158 +0,0 @@
|
|
|
+-# ===========================================================================
|
|
|
+-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html
|
|
|
+-# ===========================================================================
|
|
|
+-#
|
|
|
+-# SYNOPSIS
|
|
|
+-#
|
|
|
+-# 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
|
|
|
+-#
|
|
|
+-# Check for the presence of an --enable-compile-warnings option to
|
|
|
+-# configure, defaulting to "error" in normal operation, or "yes" if
|
|
|
+-# IS-RELEASE is equal to "yes". Return the value in the variable
|
|
|
+-# $ax_enable_compile_warnings.
|
|
|
+-#
|
|
|
+-# Depending on the value of --enable-compile-warnings, different compiler
|
|
|
+-# warnings are checked to see if they work with the current compiler and,
|
|
|
+-# if so, are appended to CFLAGS-VARIABLE and LDFLAGS-VARIABLE. This
|
|
|
+-# allows a consistent set of baseline compiler warnings to be used across
|
|
|
+-# a code base, irrespective of any warnings enabled locally by individual
|
|
|
+-# developers. By standardising the warnings used by all developers of a
|
|
|
+-# project, the project can commit to a zero-warnings policy, using -Werror
|
|
|
+-# to prevent compilation if new warnings are introduced. This makes
|
|
|
+-# catching bugs which are flagged by warnings a lot easier.
|
|
|
+-#
|
|
|
+-# By providing a consistent --enable-compile-warnings argument across all
|
|
|
+-# projects using this macro, continuous integration systems can easily be
|
|
|
+-# configured the same for all projects. Automated systems or build
|
|
|
+-# systems aimed at beginners may want to pass the --disable-Werror
|
|
|
+-# argument to unconditionally prevent warnings being fatal.
|
|
|
+-#
|
|
|
+-# --enable-compile-warnings can take the values:
|
|
|
+-#
|
|
|
+-# * no: Base compiler warnings only; not even -Wall.
|
|
|
+-# * yes: The above, plus a broad range of useful warnings.
|
|
|
+-# * error: The above, plus -Werror so that all warnings are fatal.
|
|
|
+-# Use --disable-Werror to override this and disable fatal
|
|
|
+-# warnings.
|
|
|
+-#
|
|
|
+-# 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. 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.
|
|
|
+-#
|
|
|
+-# 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
|
|
|
+-# to the SCANNERFLAGS variable for each GIR target in the code base. If
|
|
|
+-# extra g-ir-scanner flags need to be enabled, the AX_COMPILER_FLAGS_GIR
|
|
|
+-# macro must be invoked manually.
|
|
|
+-#
|
|
|
+-# AX_COMPILER_FLAGS may add support for other tools in future, in addition
|
|
|
+-# to the compiler and linker. No extra EXTRA-* variables will be added
|
|
|
+-# for those tools, and all extra support will still use the single
|
|
|
+-# --enable-compile-warnings configure option. For finer grained control
|
|
|
+-# 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>
|
|
|
+-# Copyright (c) 2015 David King <amigadave@amigadave.com>
|
|
|
+-#
|
|
|
+-# Copying and distribution of this file, with or without modification, are
|
|
|
+-# permitted in any medium without royalty provided the copyright notice
|
|
|
+-# and this notice are preserved. This file is offered as-is, without any
|
|
|
+-# warranty.
|
|
|
+-
|
|
|
+-#serial 14
|
|
|
+-
|
|
|
+-# _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],[
|
|
|
+- # 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/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],
|
|
|
+- AS_HELP_STRING([--disable-Werror],
|
|
|
+- [Unconditionally make all compiler warnings non-fatal]),,
|
|
|
+- [enable_Werror=maybe])
|
|
|
+-
|
|
|
+- # Return the user's chosen warning level
|
|
|
+- AS_IF([test "$enable_Werror" = "no" -a \
|
|
|
+- "$enable_compile_warnings" = "error"],[
|
|
|
+- enable_compile_warnings="yes"
|
|
|
+- ])
|
|
|
+-
|
|
|
+- ax_enable_compile_warnings=$enable_compile_warnings
|
|
|
+-
|
|
|
+- 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
|
|
|
+deleted file mode 100644
|
|
|
+index 916f91837..000000000
|
|
|
+--- a/m4/ax_compiler_flags_cflags.m4
|
|
|
++++ /dev/null
|
|
|
+@@ -1,161 +0,0 @@
|
|
|
+-# =============================================================================
|
|
|
+-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cflags.html
|
|
|
+-# =============================================================================
|
|
|
+-#
|
|
|
+-# SYNOPSIS
|
|
|
+-#
|
|
|
+-# AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
|
+-#
|
|
|
+-# DESCRIPTION
|
|
|
+-#
|
|
|
+-# Add warning flags for the C compiler to VARIABLE, which defaults to
|
|
|
+-# WARN_CFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be
|
|
|
+-# manually added to the CFLAGS variable for each target in the code base.
|
|
|
+-#
|
|
|
+-# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
|
+-# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
|
+-# which flags to enable.
|
|
|
+-#
|
|
|
+-# LICENSE
|
|
|
+-#
|
|
|
+-# Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
|
+-# Copyright (c) 2017, 2018 Reini Urban <rurban@cpan.org>
|
|
|
+-#
|
|
|
+-# Copying and distribution of this file, with or without modification, are
|
|
|
+-# permitted in any medium without royalty provided the copyright notice
|
|
|
+-# and this notice are preserved. This file is offered as-is, without any
|
|
|
+-# warranty.
|
|
|
+-
|
|
|
+-#serial 17
|
|
|
+-
|
|
|
+-AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
|
|
|
+- AC_REQUIRE([AC_PROG_SED])
|
|
|
+- AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
|
|
|
+- AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
|
+- AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
|
|
|
+-
|
|
|
+- # Variable names
|
|
|
+- m4_define([ax_warn_cflags_variable],
|
|
|
+- [m4_normalize(ifelse([$1],,[WARN_CFLAGS],[$1]))])
|
|
|
+-
|
|
|
+- AC_LANG_PUSH([C])
|
|
|
+-
|
|
|
+- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
|
|
|
+- [#ifndef __cplusplus
|
|
|
+- #error "no C++"
|
|
|
+- #endif]])],
|
|
|
+- [ax_compiler_cxx=yes;],
|
|
|
+- [ax_compiler_cxx=no;])
|
|
|
+-
|
|
|
+- # 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.
|
|
|
+- # If this is passed to GCC, it will explode, so the flag must be enabled
|
|
|
+- # conditionally.
|
|
|
+- AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
|
|
|
+- ax_compiler_flags_test="-Werror=unknown-warning-option"
|
|
|
+- ],[
|
|
|
+- ax_compiler_flags_test=""
|
|
|
+- ])
|
|
|
+-
|
|
|
+- # Check that -Wno-suggest-attribute=format is supported
|
|
|
+- AX_CHECK_COMPILE_FLAG([-Wno-suggest-attribute=format],[
|
|
|
+- ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format"
|
|
|
+- ],[
|
|
|
+- ax_compiler_no_suggest_attribute_flags=""
|
|
|
+- ])
|
|
|
+-
|
|
|
+- # Base flags
|
|
|
+- AX_APPEND_COMPILE_FLAGS([ dnl
|
|
|
+- -fno-strict-aliasing dnl
|
|
|
+- $3 dnl
|
|
|
+- ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
|
|
|
+-
|
|
|
+- AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
|
+- if test "$ax_compiler_cxx" = "no" ; then
|
|
|
+- # C-only flags. Warn in C++
|
|
|
+- AX_APPEND_COMPILE_FLAGS([ dnl
|
|
|
+- -Wnested-externs dnl
|
|
|
+- -Wmissing-prototypes dnl
|
|
|
+- -Wstrict-prototypes dnl
|
|
|
+- -Wdeclaration-after-statement dnl
|
|
|
+- -Wimplicit-function-declaration dnl
|
|
|
+- -Wold-style-definition dnl
|
|
|
+- -Wjump-misses-init dnl
|
|
|
+- ],ax_warn_cflags_variable,[$ax_compiler_flags_test])
|
|
|
+- fi
|
|
|
+-
|
|
|
+- # "yes" flags
|
|
|
+- AX_APPEND_COMPILE_FLAGS([ dnl
|
|
|
+- -Wall dnl
|
|
|
+- -Wextra dnl
|
|
|
+- -Wundef dnl
|
|
|
+- -Wwrite-strings dnl
|
|
|
+- -Wpointer-arith dnl
|
|
|
+- -Wmissing-declarations dnl
|
|
|
+- -Wredundant-decls dnl
|
|
|
+- -Wno-unused-parameter dnl
|
|
|
+- -Wno-missing-field-initializers dnl
|
|
|
+- -Wformat=2 dnl
|
|
|
+- -Wcast-align dnl
|
|
|
+- -Wformat-nonliteral dnl
|
|
|
+- -Wformat-security dnl
|
|
|
+- -Wsign-compare dnl
|
|
|
+- -Wstrict-aliasing dnl
|
|
|
+- -Wshadow dnl
|
|
|
+- -Winline dnl
|
|
|
+- -Wpacked dnl
|
|
|
+- -Wmissing-format-attribute dnl
|
|
|
+- -Wmissing-noreturn dnl
|
|
|
+- -Winit-self dnl
|
|
|
+- -Wredundant-decls dnl
|
|
|
+- -Wmissing-include-dirs dnl
|
|
|
+- -Wunused-but-set-variable dnl
|
|
|
+- -Warray-bounds dnl
|
|
|
+- -Wreturn-type dnl
|
|
|
+- -Wswitch-enum dnl
|
|
|
+- -Wswitch-default dnl
|
|
|
+- -Wduplicated-cond dnl
|
|
|
+- -Wduplicated-branches dnl
|
|
|
+- -Wlogical-op dnl
|
|
|
+- -Wrestrict dnl
|
|
|
+- -Wnull-dereference dnl
|
|
|
+- -Wdouble-promotion 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"],[
|
|
|
+- # "error" flags; -Werror has to be appended unconditionally because
|
|
|
+- # it's not possible to test for
|
|
|
+- #
|
|
|
+- # suggest-attribute=format is disabled because it gives too many false
|
|
|
+- # positives
|
|
|
+- AX_APPEND_FLAG([-Werror],ax_warn_cflags_variable)
|
|
|
+-
|
|
|
+- AX_APPEND_COMPILE_FLAGS([ dnl
|
|
|
+- [$ax_compiler_no_suggest_attribute_flags] 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=$(AS_ECHO([$flag]) | $SED 's/^-Wno-//')],
|
|
|
+- 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
|
|
|
+deleted file mode 100644
|
|
|
+index 5b4924a20..000000000
|
|
|
+--- a/m4/ax_compiler_flags_gir.m4
|
|
|
++++ /dev/null
|
|
|
+@@ -1,60 +0,0 @@
|
|
|
+-# ===========================================================================
|
|
|
+-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_gir.html
|
|
|
+-# ===========================================================================
|
|
|
+-#
|
|
|
+-# SYNOPSIS
|
|
|
+-#
|
|
|
+-# AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
|
+-#
|
|
|
+-# DESCRIPTION
|
|
|
+-#
|
|
|
+-# Add warning flags for the g-ir-scanner (from GObject Introspection) to
|
|
|
+-# VARIABLE, which defaults to WARN_SCANNERFLAGS. VARIABLE is AC_SUBST-ed
|
|
|
+-# by this macro, but must be manually added to the SCANNERFLAGS variable
|
|
|
+-# for each GIR target in the code base.
|
|
|
+-#
|
|
|
+-# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
|
+-# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
|
+-# which flags to enable.
|
|
|
+-#
|
|
|
+-# LICENSE
|
|
|
+-#
|
|
|
+-# Copyright (c) 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
|
+-#
|
|
|
+-# Copying and distribution of this file, with or without modification, are
|
|
|
+-# permitted in any medium without royalty provided the copyright notice
|
|
|
+-# and this notice are preserved. This file is offered as-is, without any
|
|
|
+-# warranty.
|
|
|
+-
|
|
|
+-#serial 6
|
|
|
+-
|
|
|
+-AC_DEFUN([AX_COMPILER_FLAGS_GIR],[
|
|
|
+- AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
|
+-
|
|
|
+- # Variable names
|
|
|
+- m4_define([ax_warn_scannerflags_variable],
|
|
|
+- [m4_normalize(ifelse([$1],,[WARN_SCANNERFLAGS],[$1]))])
|
|
|
+-
|
|
|
+- # Base flags
|
|
|
+- AX_APPEND_FLAG([$3],ax_warn_scannerflags_variable)
|
|
|
+-
|
|
|
+- AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
|
+- # "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" = "error"],[
|
|
|
+- # "error" flags
|
|
|
+- AX_APPEND_FLAG([ dnl
|
|
|
+- --warn-error dnl
|
|
|
+- ],ax_warn_scannerflags_variable)
|
|
|
+- ])
|
|
|
+-
|
|
|
+- # Substitute the variables
|
|
|
+- AC_SUBST(ax_warn_scannerflags_variable)
|
|
|
+-])dnl AX_COMPILER_FLAGS
|
|
|
+diff --git a/m4/ax_compiler_flags_ldflags.m4 b/m4/ax_compiler_flags_ldflags.m4
|
|
|
+deleted file mode 100644
|
|
|
+index 976d1198d..000000000
|
|
|
+--- a/m4/ax_compiler_flags_ldflags.m4
|
|
|
++++ /dev/null
|
|
|
+@@ -1,111 +0,0 @@
|
|
|
+-# ==============================================================================
|
|
|
+-# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_ldflags.html
|
|
|
+-# ==============================================================================
|
|
|
+-#
|
|
|
+-# SYNOPSIS
|
|
|
+-#
|
|
|
+-# AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
|
+-#
|
|
|
+-# DESCRIPTION
|
|
|
+-#
|
|
|
+-# Add warning flags for the linker to VARIABLE, which defaults to
|
|
|
+-# WARN_LDFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be
|
|
|
+-# manually added to the LDFLAGS variable for each target in the code base.
|
|
|
+-#
|
|
|
+-# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
|
+-# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
|
+-# which flags to enable.
|
|
|
+-#
|
|
|
+-# LICENSE
|
|
|
+-#
|
|
|
+-# Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
|
+-# Copyright (c) 2017, 2018 Reini Urban <rurban@cpan.org>
|
|
|
+-#
|
|
|
+-# Copying and distribution of this file, with or without modification, are
|
|
|
+-# permitted in any medium without royalty provided the copyright notice
|
|
|
+-# and this notice are preserved. This file is offered as-is, without any
|
|
|
+-# warranty.
|
|
|
+-
|
|
|
+-#serial 9
|
|
|
+-
|
|
|
+-AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[
|
|
|
+- AX_REQUIRE_DEFINED([AX_APPEND_LINK_FLAGS])
|
|
|
+- AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
|
+- AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
|
|
|
+- AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
|
|
|
+-
|
|
|
+- # Variable names
|
|
|
+- m4_define([ax_warn_ldflags_variable],
|
|
|
+- [m4_normalize(ifelse([$1],,[WARN_LDFLAGS],[$1]))])
|
|
|
+-
|
|
|
+- # Always pass -Werror=unknown-warning-option to get Clang to fail on bad
|
|
|
+- # flags, otherwise they are always appended to the warn_ldflags variable,
|
|
|
+- # and Clang warns on them for every compilation unit.
|
|
|
+- # If this is passed to GCC, it will explode, so the flag must be enabled
|
|
|
+- # conditionally.
|
|
|
+- AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
|
|
|
+- ax_compiler_flags_test="-Werror=unknown-warning-option"
|
|
|
+- ],[
|
|
|
+- ax_compiler_flags_test=""
|
|
|
+- ])
|
|
|
+-
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,--as-needed], [
|
|
|
+- AX_APPEND_LINK_FLAGS([-Wl,--as-needed],
|
|
|
+- [AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
|
+- ])
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,-z,relro], [
|
|
|
+- AX_APPEND_LINK_FLAGS([-Wl,-z,relro],
|
|
|
+- [AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
|
+- ])
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,-z,now], [
|
|
|
+- AX_APPEND_LINK_FLAGS([-Wl,-z,now],
|
|
|
+- [AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
|
+- ])
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [
|
|
|
+- AX_APPEND_LINK_FLAGS([-Wl,-z,noexecstack],
|
|
|
+- [AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
|
+- ])
|
|
|
+- # textonly, retpolineplt not yet
|
|
|
+-
|
|
|
+- # macOS and cygwin linker do not have --as-needed
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,--no-as-needed], [
|
|
|
+- ax_compiler_flags_as_needed_option="-Wl,--no-as-needed"
|
|
|
+- ], [
|
|
|
+- ax_compiler_flags_as_needed_option=""
|
|
|
+- ])
|
|
|
+-
|
|
|
+- # macOS linker speaks with a different accent
|
|
|
+- ax_compiler_flags_fatal_warnings_option=""
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,--fatal-warnings], [
|
|
|
+- ax_compiler_flags_fatal_warnings_option="-Wl,--fatal-warnings"
|
|
|
+- ])
|
|
|
+- AX_CHECK_LINK_FLAG([-Wl,-fatal_warnings], [
|
|
|
+- ax_compiler_flags_fatal_warnings_option="-Wl,-fatal_warnings"
|
|
|
+- ])
|
|
|
+-
|
|
|
+- # Base flags
|
|
|
+- AX_APPEND_LINK_FLAGS([ dnl
|
|
|
+- $ax_compiler_flags_as_needed_option dnl
|
|
|
+- $3 dnl
|
|
|
+- ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
|
|
|
+-
|
|
|
+- AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
|
+- # "yes" flags
|
|
|
+- AX_APPEND_LINK_FLAGS([$4 $5 $6 $7],
|
|
|
+- ax_warn_ldflags_variable,
|
|
|
+- [$ax_compiler_flags_test])
|
|
|
+- ])
|
|
|
+- AS_IF([test "$ax_enable_compile_warnings" = "error"],[
|
|
|
+- # "error" flags; -Werror has to be appended unconditionally because
|
|
|
+- # it's not possible to test for
|
|
|
+- #
|
|
|
+- # suggest-attribute=format is disabled because it gives too many false
|
|
|
+- # positives
|
|
|
+- AX_APPEND_LINK_FLAGS([ dnl
|
|
|
+- $ax_compiler_flags_fatal_warnings_option dnl
|
|
|
+- ],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
|
|
|
+- ])
|
|
|
+-
|
|
|
+- # Substitute the variables
|
|
|
+- AC_SUBST(ax_warn_ldflags_variable)
|
|
|
+-])dnl AX_COMPILER_FLAGS
|