1
# manywarnings.m4 serial 3
2
dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
1
# manywarnings.m4 serial 6
2
dnl Copyright (C) 2008-2014 Free Software Foundation, Inc.
3
3
dnl This file is free software; the Free Software Foundation
4
4
dnl gives unlimited permission to copy and/or distribute it,
5
5
dnl with or without modifications, as long as this notice is preserved.
35
35
# make sure your gcc understands it.
36
36
AC_DEFUN([gl_MANYWARN_ALL_GCC],
38
dnl First, check if -Wno-missing-field-initializers is needed.
39
dnl -Wmissing-field-initializers is implied by -W, but that issues
40
dnl warnings with GCC version before 4.7, for the common idiom
41
dnl of initializing types on the stack to zero, using { 0, }
38
dnl First, check for some issues that only occur when combining multiple
39
dnl gcc warning categories.
42
40
AC_REQUIRE([AC_PROG_CC])
43
41
if test -n "$GCC"; then
45
dnl First, check -W -Werror -Wno-missing-field-initializers is supported
43
dnl Check if -W -Werror -Wno-missing-field-initializers is supported
46
44
dnl with the current $CC $CFLAGS $CPPFLAGS.
47
45
AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
48
46
AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
78
76
AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
79
dnl Next, check if -Werror -Wuninitialized is useful with the
80
dnl user's choice of $CFLAGS; some versions of gcc warn that it
81
dnl has no effect if -O is not also used
82
AC_MSG_CHECKING([whether -Wuninitialized is supported])
83
AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [
84
gl_save_CFLAGS="$CFLAGS"
85
CFLAGS="$CFLAGS -Werror -Wuninitialized"
87
[AC_LANG_PROGRAM([[]], [[]])],
88
[gl_cv_cc_uninitialized_supported=yes],
89
[gl_cv_cc_uninitialized_supported=no])
90
CFLAGS="$gl_save_CFLAGS"])
91
AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported])
95
# List all gcc warning categories.
83
97
for gl_manywarn_item in \
101
-Waggressive-loop-optimizations \
90
-Wmissing-include-dirs \
100
-Wtraditional-conversion \
101
-Wdeclaration-after-statement \
104
-Wunsafe-loop-optimizations \
106
105
-Wbad-function-cast \
106
-Wbuiltin-macro-redefined \
115
-Wstrict-prototypes \
116
-Wold-style-definition \
117
-Wmissing-prototypes \
118
-Wmissing-declarations \
120
-Wmissing-format-attribute \
130
-Wvolatile-register-var \
131
-Wdisabled-optimization \
133
-Woverlength-strings \
134
-Wbuiltin-macro-redefined \
136
-Wpacked-bitfield-compat \
139
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
141
# The following are not documented in the manual but are included in
142
# output from gcc --help=warnings.
143
for gl_manywarn_item in \
145
112
-Wcoverage-mismatch \
149
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
151
# More warnings from gcc 4.6.2 --help=warnings.
152
for gl_manywarn_item in \
156
115
-Wdeprecated-declarations \
116
-Wdisabled-optimization \
158
118
-Wdouble-promotion \
161
123
-Wformat-contains-nul \
162
124
-Wformat-extra-args \
125
-Wformat-nonliteral \
163
128
-Wformat-zero-length \
129
-Wfree-nonheap-object \
130
-Wignored-qualifiers \
132
-Wimplicit-function-declaration \
136
-Wint-to-pointer-cast \
137
-Winvalid-memory-model \
142
-Wmaybe-uninitialized \
144
-Wmissing-declarations \
145
-Wmissing-field-initializers \
146
-Wmissing-include-dirs \
147
-Wmissing-parameter-type \
148
-Wmissing-prototypes \
166
153
-Wnormalized=nfc \
154
-Wold-style-declaration \
155
-Wold-style-definition \
157
-Woverlength-strings \
160
-Wpacked-bitfield-compat \
168
164
-Wpointer-to-int-cast \
166
-Wreturn-local-addr \
170
-Wsizeof-pointer-memaccess \
174
-Wstrict-prototypes \
170
175
-Wsuggest-attribute=const \
176
-Wsuggest-attribute=format \
171
177
-Wsuggest-attribute=noreturn \
172
178
-Wsuggest-attribute=pure \
188
-Wunsafe-loop-optimizations \
190
-Wunused-but-set-parameter \
191
-Wunused-but-set-variable \
194
-Wunused-local-typedefs \
202
-Wvector-operation-performance \
204
-Wvolatile-register-var \
206
-fdiagnostics-show-option \
175
210
gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
178
# Disable the missing-field-initializers warning if needed
213
# Disable specific options as needed.
179
214
if test "$gl_cv_cc_nomfi_needed" = yes; then
180
215
gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
218
if test "$gl_cv_cc_uninitialized_supported" = no; then
219
gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
183
222
$1=$gl_manywarn_set