1
dnl AC_PANDORA_WARNINGS([less-warnings|warnings-always-on])
2
dnl less-warnings turn on a limited set of warnings
3
dnl warnings-always-on always set warnings=error regardless of tarball/vc
5
AC_DEFUN([PANDORA_WARNINGS],[
19
AC_REQUIRE([PANDORA_BUILDING_FROM_VC])
20
AS_IF([test "${PW_VC_WARN_OFF}" = "no" -o "$ac_cv_building_from_vc" = "yes"],
21
[ac_cv_warnings_as_errors=yes],
22
[ac_cv_warnings_as_errors=no])
24
AC_ARG_ENABLE([profiling],
25
[AS_HELP_STRING([--enable-profiling],
26
[Toggle profiling @<:@default=off@:>@])],
27
[ac_profiling="$enableval"],
30
AC_ARG_ENABLE([coverage],
31
[AS_HELP_STRING([--enable-coverage],
32
[Toggle coverage @<:@default=off@:>@])],
33
[ac_coverage="$enableval"],
36
AS_IF([test "$GCC" = "yes"],[
38
AS_IF([test "$ac_profiling" = "yes"],[
42
AC_CHECK_LIB(c_p, read)
50
AS_IF([test "$ac_coverage" = "yes"],
51
[CC_COVERAGE="-fprofile-arcs -ftest-coverage"])
53
AS_IF([test "$ac_cv_warnings_as_errors" = "yes"],
56
AC_CACHE_CHECK([whether it is safe to use -fdiagnostics-show-option],
57
[ac_cv_safe_to_use_fdiagnostics_show_option_],
58
[save_CFLAGS="$CFLAGS"
59
CFLAGS="-fdiagnostics-show-option ${AM_CFLAGS}"
61
[AC_LANG_PROGRAM([],[])],
62
[ac_cv_safe_to_use_fdiagnostics_show_option_=yes],
63
[ac_cv_safe_to_use_fdiagnostics_show_option_=no])
64
CFLAGS="$save_CFLAGS"])
66
AS_IF([test "$ac_cv_safe_to_use_fdiagnostics_show_option_" = "yes"],
68
F_DIAGNOSTICS_SHOW_OPTION="-fdiagnostics-show-option"
71
AC_CACHE_CHECK([whether it is safe to use -Wconversion],
72
[ac_cv_safe_to_use_wconversion_],
73
[save_CFLAGS="$CFLAGS"
74
CFLAGS="-Wconversion ${W_FAIL} -pedantic ${AM_CFLAGS}"
85
[ac_cv_safe_to_use_wconversion_=yes],
86
[ac_cv_safe_to_use_wconversion_=no])
87
CFLAGS="$save_CFLAGS"])
89
AS_IF([test "$ac_cv_safe_to_use_wconversion_" = "yes"],
90
[W_CONVERSION="-Wconversion"
91
AC_CACHE_CHECK([whether it is safe to use -Wconversion with htons],
92
[ac_cv_safe_to_use_Wconversion_],
93
[save_CFLAGS="$CFLAGS"
94
CFLAGS="-Wconversion ${W_FAIL} -pedantic ${AM_CFLAGS}"
98
#include <netinet/in.h>
100
uint16_t x= htons(80);
102
[ac_cv_safe_to_use_Wconversion_=yes],
103
[ac_cv_safe_to_use_Wconversion_=no])
104
CFLAGS="$save_CFLAGS"])
106
AS_IF([test "$ac_cv_safe_to_use_Wconversion_" = "no"],
107
[NO_CONVERSION="-Wno-conversion"])
110
NO_STRICT_ALIASING="-fno-strict-aliasing -Wno-strict-aliasing"
111
NO_SHADOW="-Wno-shadow"
113
AS_IF([test "${PW_FULL_WARNINGS}" = "yes"],[
114
BASE_WARNINGS_FULL="-Wformat=2 ${W_CONVERSION} -Wstrict-aliasing"
115
CC_WARNINGS_FULL="-Wswitch-default -Wswitch-enum"
116
CXX_WARNINGS_FULL="-Weffc++ -Wold-style-cast"
118
BASE_WARNINGS_FULL="-Wformat ${NO_STRICT_ALIASING}"
121
BASE_WARNINGS="-pedantic -Wall -Wextra ${W_FAIL} -Wundef -Wshadow -Wmissing-declarations -Wstrict-aliasing ${F_DIAGNOSTICS_SHOW_OPTION} ${CFLAG_VISIBILITY} ${BASE_WARNINGS_FULL}"
122
CC_WARNINGS="${BASE_WARNINGS} -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls ${CC_WARNINGS_FULL} -Wcast-align"
123
CXX_WARNINGS="${BASE_WARNINGS} -Woverloaded-virtual -Wnon-virtual-dtor -Wctor-dtor-privacy -Wno-long-long ${CXX_WARNINGS_FULL}"
125
AC_CACHE_CHECK([whether it is safe to use -Wlogical-op],
126
[ac_cv_safe_to_use_Wlogical_op_],
127
[save_CFLAGS="$CFLAGS"
128
CFLAGS="-Wlogical-op -Werror -pedantic ${AM_CFLAGS}"
135
[ac_cv_safe_to_use_Wlogical_op_=yes],
136
[ac_cv_safe_to_use_Wlogical_op_=no])
137
CFLAGS="$save_CFLAGS"])
138
AS_IF([test "$ac_cv_safe_to_use_Wlogical_op_" = "yes"],
139
[CC_WARNINGS="${CC_WARNINGS} -Wlogical-op"])
141
AC_CACHE_CHECK([whether it is safe to use -Wredundant-decls from C++],
142
[ac_cv_safe_to_use_Wredundant_decls_],
144
save_CXXFLAGS="${CXXFLAGS}"
145
CXXFLAGS="-Wredundant-decls ${W_FAIL} -pedantic -Wredundant-decls"
148
template <typename E> struct C { void foo(); };
149
template <typename E> void C<E>::foo() { }
150
template <> void C<int>::foo();
151
AC_INCLUDES_DEFAULT])],
152
[ac_cv_safe_to_use_Wredundant_decls_=yes],
153
[ac_cv_safe_to_use_Wredundant_decls_=no])
154
CXXFLAGS="${save_CXXFLAGS}"
156
AS_IF([test "$ac_cv_safe_to_use_Wredundant_decls_" = "yes"],
157
[CXX_WARNINGS="${CXX_WARNINGS} -Wredundant-decls"],
158
[CXX_WARNINGS="${CXX_WARNINGS} -Wno-redundant-decls"])
160
NO_REDUNDANT_DECLS="-Wno-redundant-decls"
161
PROTOSKIP_WARNINGS="-Wno-effc++ -Wno-shadow"
165
AS_IF([test "$SUNCC" = "yes"],[
167
AS_IF([test "$ac_profiling" = "yes"],
168
[CC_PROFILING="-xinstrument=datarace"])
170
AS_IF([test "$ac_cv_warnings_as_errors" = "yes"],
171
[W_FAIL="-errwarn=%all"])
173
AC_CACHE_CHECK([whether E_PASTE_RESULT_NOT_TOKEN is usable],
174
[ac_cv_paste_result],
176
save_CFLAGS="${CFLAGS}"
177
CFLAGS="-errwarn=%all -erroff=E_PASTE_RESULT_NOT_TOKEN ${CFLAGS}"
183
[ac_cv_paste_result=yes],
184
[ac_cv_paste_result=no])
185
CFLAGS="${save_CFLAGS}"
187
AS_IF([test $ac_cv_paste_result = yes],
188
[W_PASTE_RESULT=",E_PASTE_RESULT_NOT_TOKEN"])
191
AS_IF([test "${PW_FULL_WARNINGS}" = "yes"],[
192
CC_WARNINGS_FULL="-erroff=E_INTEGER_OVERFLOW_DETECTED${W_PASTE_RESULT}"
194
CC_WARNINGS_FULL="-erroff=E_ATTRIBUTE_NOT_VAR"
195
CXX_WARNINGS_FULL="-erroff=attrskipunsup,doubunder,reftotemp,inllargeuse,truncwarn1,signextwarn,inllargeint"
198
CC_WARNINGS="-v -errtags=yes ${W_FAIL} ${CC_WARNINGS_FULL}"
199
CXX_WARNINGS="+w +w2 -xwe -xport64 -errtags=yes ${CXX_WARNINGS_FULL} ${W_FAIL}"
200
PROTOSKIP_WARNINGS="-erroff=attrskipunsup,doubunder,reftotemp,wbadinitl,identexpected,inllargeuse,truncwarn1,signextwarn"
201
NO_UNREACHED="-erroff=E_STATEMENT_NOT_REACHED"
205
AC_SUBST(NO_CONVERSION)
206
AC_SUBST(NO_REDUNDANT_DECLS)
207
AC_SUBST(NO_UNREACHED)
209
AC_SUBST(NO_STRICT_ALIASING)
210
AC_SUBST(PROTOSKIP_WARNINGS)