[niepce] Better compiler warning support



commit 573ccd94e965db62b9a5e698a745b8d97f78b8c7
Author: Hubert Figuière <hub figuiere net>
Date:   Fri Jul 29 23:23:06 2016 -0400

    Better compiler warning support

 configure.ac                  |   33 +++++-
 m4/ax_append_compile_flags.m4 |   67 ++++++++++++
 m4/ax_cflags_gcc_option.m4    |  230 -----------------------------------------
 3 files changed, 96 insertions(+), 234 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 0677b13..1574336 100644
--- a/configure.ac
+++ b/configure.ac
@@ -113,12 +113,37 @@ BOOST_CONVERSION
 BOOST_FORMAT
 BOOST_TEST([s])
 
-AX_CFLAGS_GCC_OPTION([-Wextra -Wall -Wsign-compare -Wpointer-arith -Wchar-subscripts -Wwrite-strings 
-Wunused -Wpointer-arith])
-AX_CXXFLAGS_GCC_OPTION([-Wextra -Wall -Wsign-compare -Wpointer-arith -Wchar-subscripts -Wwrite-strings 
-Wunused -Wpointer-arith])
+dnl ***************************************************************
+dnl Excessive warnings
+dnl ***************************************************************
+AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option], [
+       ax_compiler_flags_test="-Werror=unknown-warning-option"
+], [
+       ax_compiler_flags_test=""
+])
+AX_APPEND_COMPILE_FLAGS([ \
+   -Wchar-subscripts \
+   -Wcast-align \
+   -Wextra \
+   -Wheader-guard \
+   -Wformat-nonliteral \
+   -Wformat-security \
+   -Wlogical-not-parentheses \
+   -Wmisleading-indentation \
+   -Wmissing-noreturn \
+dnl   -Wno-overloaded-virtual \
+   -Wpointer-arith \
+dnl   -Wredundant-decls \
+   -Wpointer-bool-conversion \
+   -Wshadow \
+   -Wsign-compare \
+   -Wunreachable-code \
+   -Wunused \
+   -Wwrite-strings \
+], [], [$ax_compiler_flags_test])
 
 AC_ARG_ENABLE(asan,[  --enable-asan    Turn on address sanitizer],[
-    AX_CFLAGS_GCC_OPTION([-fsanitize=address -fno-omit-frame-pointer])
-    AX_CXXFLAGS_GCC_OPTION([-fsanitize=address -fno-omit-frame-pointer])
+    AX_APPEND_COMPILE_FLAGS([-fsanitize=address -fno-omit-frame-pointer])
 ]
 ,
 [
diff --git a/m4/ax_append_compile_flags.m4 b/m4/ax_append_compile_flags.m4
new file mode 100644
index 0000000..2bb27ef
--- /dev/null
+++ b/m4/ax_append_compile_flags.m4
@@ -0,0 +1,67 @@
+# ===========================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   For every FLAG1, FLAG2 it is checked whether the compiler works with the
+#   flag.  If it does, the flag is added FLAGS-VARIABLE
+#
+#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+#   CFLAGS) is used.  During the check the flag is always added to the
+#   current language's flags.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+#   NOTE: This macro depends on the AX_APPEND_FLAG and
+#   AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
+#   AX_APPEND_LINK_FLAGS.
+#
+# LICENSE
+#
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans gmail com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 5
+
+AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
+[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+for flag in $1; do
+  AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4])
+done
+])dnl AX_APPEND_COMPILE_FLAGS


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