From 0e60bc9b152a3414c04c50523b5bf555665a6cea Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 6 Jun 2012 12:10:41 +0200 Subject: build-sys: add compiler warnings Signed-off-by: Karel Zak --- .gitignore | 1 + config/include-Makefile.am | 2 +- configure.ac | 15 +++++++++++++++ m4/warnings.m4 | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 m4/warnings.m4 diff --git a/.gitignore b/.gitignore index 8b078deaa..21a68f3ed 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ config/ltmain.sh # util-linux specific macros !m4/ul.m4 +!m4/warnings.m4 diff --git a/config/include-Makefile.am b/config/include-Makefile.am index 9c769a9dd..4983b3c19 100644 --- a/config/include-Makefile.am +++ b/config/include-Makefile.am @@ -2,7 +2,7 @@ AM_CPPFLAGS = \ -include $(top_builddir)/config.h \ -I$(top_srcdir)/include \ -DLOCALEDIR=\"$(localedir)\" -AM_CFLAGS = -fsigned-char +AM_CFLAGS = -fsigned-char $(WARN_CFLAGS) AM_LDFLAGS = # Automake (at least up to 1.10) mishandles dist_man_MANS inside conditionals. diff --git a/configure.ac b/configure.ac index 74b3ad303..2280e7e51 100644 --- a/configure.ac +++ b/configure.ac @@ -81,6 +81,21 @@ AC_C_CONST AC_C_VOLATILE AC_C_BIGENDIAN +dnl Compiler warnings +UL_WARN_ADD([-Wextra]) +UL_WARN_ADD([-Wno-missing-field-initializers]) +UL_WARN_ADD([-Wsign-compare]) +UL_WARN_ADD([-Wtype-limits]) +UL_WARN_ADD([-Wuninitialized]) +UL_WARN_ADD([-Werror=sequence-point]) +UL_WARN_ADD([-Wunused-parameter]) +UL_WARN_ADD([-fno-common]) +UL_WARN_ADD([-Wmissing-parameter-type]) +UL_WARN_ADD([-Wunused-result]) +UL_WARN_ADD([-Wunused-but-set-parameter]) +UL_WARN_ADD([-Wunused-but-set-variable]) +AC_SUBST([WARN_CFLAGS]) + dnl libtool-2 LT_INIT diff --git a/m4/warnings.m4 b/m4/warnings.m4 new file mode 100644 index 000000000..33160a960 --- /dev/null +++ b/m4/warnings.m4 @@ -0,0 +1,38 @@ +# warnings.m4 serial 5 +dnl Copyright (C) 2008-2011 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Simon Josefsson +dnl -- derivated from coreutils + +# UL_AS_VAR_APPEND(VAR, VALUE) +# ---------------------------- +# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it. +m4_ifdef([AS_VAR_APPEND], +[m4_copy([AS_VAR_APPEND], [UL_AS_VAR_APPEND])], +[m4_define([UL_AS_VAR_APPEND], +[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])]) + +# UL_WARN_ADD(PARAMETER, [VARIABLE = WARN_CFLAGS]) +# ------------------------------------------------ +# Adds parameter to WARN_CFLAGS if the compiler supports it. For example, +# UL_WARN_ADD([-Wparentheses]). +AC_DEFUN([UL_WARN_ADD], +dnl FIXME: ul_Warn must be used unquoted until we can assume +dnl autoconf 2.64 or newer. +[AS_VAR_PUSHDEF([ul_Warn], [ul_cv_warn_$1])dnl +AC_CACHE_CHECK([whether compiler handles $1], m4_defn([ul_Warn]), [ + ul_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="${CPPFLAGS} $1" + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])], + [AS_VAR_SET(ul_Warn, [yes])], + [AS_VAR_SET(ul_Warn, [no])]) + CPPFLAGS="$ul_save_CPPFLAGS" +]) +AS_VAR_IF(ul_Warn, [yes], + [UL_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])]) +AS_VAR_POPDEF([ul_Warn])dnl +m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])], [])])dnl +]) -- cgit v1.2.3-55-g7522