]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
build-sys: add compiler warnings
authorKarel Zak <kzak@redhat.com>
Wed, 6 Jun 2012 10:10:41 +0000 (12:10 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 6 Jun 2012 10:10:41 +0000 (12:10 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
.gitignore
config/include-Makefile.am
configure.ac
m4/warnings.m4 [new file with mode: 0644]

index 8b078deaa65557e25bedc917fe6e60644f6c1c0b..21a68f3edf9eca00160054d9206f906e3f1400c9 100644 (file)
@@ -49,3 +49,4 @@ config/ltmain.sh
 
 # util-linux specific macros
 !m4/ul.m4
+!m4/warnings.m4
index 9c769a9ddafa8222973b67370db58a3fb4d8503d..4983b3c195fbfd4127449f37ea5a98badf6edcf9 100644 (file)
@@ -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.
index 74b3ad303fa5a2dc2c17b2aca92286451a7a852e..2280e7e51f67d2d6d6441d920d1dca963f37c44a 100644 (file)
@@ -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 (file)
index 0000000..33160a9
--- /dev/null
@@ -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
+])