~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to m4/pandora_warnings.m4

Split out warnings - start using the pandora build system.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
4
 
 
5
AC_DEFUN([PANDORA_WARNINGS],[
 
6
  PW_FULL_WARNINGS=yes
 
7
  PW_VC_WARN_OFF=yes
 
8
  for arg in $@ ; do
 
9
    case "$arg" in
 
10
      less-warnings)
 
11
        PW_FULL_WARNINGS=no
 
12
        ;;
 
13
      warnings-always-on)
 
14
        PW_VC_WARN_OFF=no
 
15
        ;;
 
16
    esac
 
17
  done
 
18
 
 
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])
 
23
 
 
24
  AC_ARG_ENABLE([profiling],
 
25
      [AS_HELP_STRING([--enable-profiling],
 
26
         [Toggle profiling @<:@default=off@:>@])],
 
27
      [ac_profiling="$enableval"],
 
28
      [ac_profiling="no"])
 
29
 
 
30
  AC_ARG_ENABLE([coverage],
 
31
      [AS_HELP_STRING([--enable-coverage],
 
32
         [Toggle coverage @<:@default=off@:>@])],
 
33
      [ac_coverage="$enableval"],
 
34
      [ac_coverage="no"])
 
35
 
 
36
  AS_IF([test "$GCC" = "yes"],[
 
37
 
 
38
    AS_IF([test "$ac_profiling" = "yes"],[
 
39
      CC_PROFILING="-pg"
 
40
      save_LIBS="${LIBS}"
 
41
      LIBS=""
 
42
      AC_CHECK_LIB(c_p, read)
 
43
      LIBC_P="${LIBS}"
 
44
      LIBS="${save_LIBS}"
 
45
      AC_SUBST(LIBC_P)
 
46
    ],[
 
47
      CC_PROFILING=" "
 
48
    ])
 
49
 
 
50
    AS_IF([test "$ac_coverage" = "yes"],
 
51
          [CC_COVERAGE="-fprofile-arcs -ftest-coverage"])
 
52
         
 
53
    AS_IF([test "$ac_cv_warnings_as_errors" = "yes"],
 
54
          [W_FAIL="-Werror"])
 
55
 
 
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}"
 
60
       AC_COMPILE_IFELSE(
 
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"])
 
65
 
 
66
    AS_IF([test "$ac_cv_safe_to_use_fdiagnostics_show_option_" = "yes"],
 
67
          [
 
68
            F_DIAGNOSTICS_SHOW_OPTION="-fdiagnostics-show-option"
 
69
          ])
 
70
 
 
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}"
 
75
       AC_COMPILE_IFELSE(
 
76
         [AC_LANG_PROGRAM([[
 
77
#include <stdbool.h>
 
78
void foo(bool a)
 
79
{
 
80
  (void)a;
 
81
}
 
82
         ]],[[
 
83
foo(0);
 
84
         ]])],
 
85
         [ac_cv_safe_to_use_wconversion_=yes],
 
86
         [ac_cv_safe_to_use_wconversion_=no])
 
87
       CFLAGS="$save_CFLAGS"])
 
88
 
 
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}"
 
95
         AC_COMPILE_IFELSE(
 
96
           [AC_LANG_PROGRAM(
 
97
             [[
 
98
#include <netinet/in.h>
 
99
             ]],[[
 
100
uint16_t x= htons(80);
 
101
             ]])],
 
102
           [ac_cv_safe_to_use_Wconversion_=yes],
 
103
           [ac_cv_safe_to_use_Wconversion_=no])
 
104
         CFLAGS="$save_CFLAGS"])
 
105
 
 
106
      AS_IF([test "$ac_cv_safe_to_use_Wconversion_" = "no"],
 
107
            [NO_CONVERSION="-Wno-conversion"])
 
108
    ])
 
109
 
 
110
    NO_STRICT_ALIASING="-fno-strict-aliasing -Wno-strict-aliasing"
 
111
    NO_SHADOW="-Wno-shadow"
 
112
 
 
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"
 
117
    ],[
 
118
      BASE_WARNINGS_FULL="-Wformat ${NO_STRICT_ALIASING}"
 
119
    ])
 
120
 
 
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}"
 
124
 
 
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}"
 
129
       AC_COMPILE_IFELSE([
 
130
         AC_LANG_PROGRAM(
 
131
         [[
 
132
#include <stdio.h>
 
133
         ]], [[]])
 
134
      ],
 
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"])
 
140
 
 
141
    AC_CACHE_CHECK([whether it is safe to use -Wredundant-decls from C++],
 
142
      [ac_cv_safe_to_use_Wredundant_decls_],
 
143
      [AC_LANG_PUSH(C++)
 
144
       save_CXXFLAGS="${CXXFLAGS}"
 
145
       CXXFLAGS="-Wredundant-decls ${W_FAIL} -pedantic -Wredundant-decls"
 
146
       AC_COMPILE_IFELSE(
 
147
         [AC_LANG_PROGRAM([
 
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}"
 
155
        AC_LANG_POP()])
 
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"])
 
159
 
 
160
    NO_REDUNDANT_DECLS="-Wno-redundant-decls"
 
161
    PROTOSKIP_WARNINGS="-Wno-effc++ -Wno-shadow"
 
162
    
 
163
  ])
 
164
 
 
165
  AS_IF([test "$SUNCC" = "yes"],[
 
166
 
 
167
    AS_IF([test "$ac_profiling" = "yes"],
 
168
          [CC_PROFILING="-xinstrument=datarace"])
 
169
 
 
170
    AS_IF([test "$ac_cv_warnings_as_errors" = "yes"],
 
171
          [W_FAIL="-errwarn=%all"])
 
172
 
 
173
    AC_CACHE_CHECK([whether E_PASTE_RESULT_NOT_TOKEN is usable],
 
174
      [ac_cv_paste_result],
 
175
      [
 
176
        save_CFLAGS="${CFLAGS}"
 
177
        CFLAGS="-errwarn=%all -erroff=E_PASTE_RESULT_NOT_TOKEN ${CFLAGS}"
 
178
        AC_COMPILE_IFELSE(
 
179
          [AC_LANG_PROGRAM([
 
180
            AC_INCLUDES_DEFAULT
 
181
          ],[
 
182
            int x= 0;])],
 
183
          [ac_cv_paste_result=yes],
 
184
          [ac_cv_paste_result=no])
 
185
        CFLAGS="${save_CFLAGS}"
 
186
      ])
 
187
    AS_IF([test $ac_cv_paste_result = yes],
 
188
      [W_PASTE_RESULT=",E_PASTE_RESULT_NOT_TOKEN"])
 
189
 
 
190
 
 
191
    AS_IF([test "${PW_FULL_WARNINGS}" = "yes"],[
 
192
      CC_WARNINGS_FULL="-erroff=E_INTEGER_OVERFLOW_DETECTED${W_PASTE_RESULT}"
 
193
    ],[
 
194
      CC_WARNINGS_FULL="-erroff=E_ATTRIBUTE_NOT_VAR"
 
195
      CXX_WARNINGS_FULL="-erroff=attrskipunsup,doubunder,reftotemp,inllargeuse,truncwarn1,signextwarn,inllargeint"
 
196
    ])
 
197
 
 
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"
 
202
 
 
203
  ])
 
204
 
 
205
  AC_SUBST(NO_CONVERSION)
 
206
  AC_SUBST(NO_REDUNDANT_DECLS)
 
207
  AC_SUBST(NO_UNREACHED)
 
208
  AC_SUBST(NO_SHADOW)
 
209
  AC_SUBST(NO_STRICT_ALIASING)
 
210
  AC_SUBST(PROTOSKIP_WARNINGS)
 
211
 
 
212
 
 
213
])