~drizzle-trunk/libdrizzle/jenkins-Libdrizzle-107

« back to all changes in this revision

Viewing changes to m4/ax_harden_compiler_flags.m4

  • Committer: Continuous Integration
  • Date: 2013-05-12 22:57:40 UTC
  • mfrom: (122.1.1 libdrizzle-5.1)
  • Revision ID: ci@drizzle.org-20130512225740-n9n9673m65kb4ogf
Merge lp:~brianaker/libdrizzle/ddm4-update-may Build: jenkins-Libdrizzle-107

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
46
46
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
47
47
#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
48
#
 
49
#  Notes:
 
50
#  We do not test for c99 or c++11, that is out of scope.
48
51
 
49
52
# The Following flags are not checked for
50
53
# -Wdeclaration-after-statement is counter to C99
51
 
# _APPEND_COMPILE_FLAGS_ERROR([-std=c++11]) -- Not ready yet
52
 
# _APPEND_COMPILE_FLAGS_ERROR([-pedantic]) --
53
 
# ?  _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long]) -- Don't turn on for
54
 
# compatibility issues memcached_stat_st
55
 
 
56
 
#serial 9
 
54
# _APPEND_COMPILE_FLAGS_ERROR([-pedantic])
 
55
 
 
56
#serial 11
 
57
 
 
58
AC_DEFUN([_SET_SANITIZE_FLAGS],
 
59
         [AS_IF([test "x$MINGW" != xyes],[
 
60
                AS_IF([test "x$enable_shared" = "xyes"],
 
61
                      [AS_CASE([$ax_harden_sanitize],
 
62
                               [thread],[
 
63
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=thread])],
 
64
                               [address],[
 
65
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])],
 
66
                               [rest],[
 
67
                               _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
 
68
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
 
69
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
 
70
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
 
71
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
 
72
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
 
73
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
 
74
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
 
75
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
 
76
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
 
77
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
 
78
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
 
79
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
 
80
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
 
81
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
 
82
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
 
83
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
 
84
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
 
85
                               _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])])
 
86
                      ])
 
87
                ])
 
88
          ])
57
89
 
58
90
AC_DEFUN([_WARNINGS_AS_ERRORS],
59
91
    [AC_CACHE_CHECK([if all warnings into errors],[ac_cv_warnings_as_errors],
76
108
# Everything above this does the heavy lifting, while what follows does the specifics.
77
109
 
78
110
AC_DEFUN([_HARDEN_LINKER_FLAGS],
79
 
         [
80
 
         AS_IF([test "$CC" != "clang"],
81
 
           [_APPEND_LINK_FLAGS_ERROR([-z relro -z now])
82
 
           AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],
83
 
             [AX_APPEND_LINK_FLAGS([-Werror])])])
84
 
         ])
 
111
        [AS_IF([test "$CC" != "clang"],
 
112
          [_APPEND_LINK_FLAGS_ERROR([-z relro -z now])
 
113
          AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],[AX_APPEND_LINK_FLAGS([-Werror])])
 
114
          AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[_APPEND_LINK_FLAGS_ERROR([-rdynamic])])
 
115
          ])
 
116
        ])
85
117
 
86
118
AC_DEFUN([_HARDEN_CC_COMPILER_FLAGS],
87
119
         [AC_LANG_PUSH([C])dnl
105
137
           [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas])
106
138
           _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])])
107
139
 
108
 
         AS_IF([test "$CC" = "clang"],
109
 
           [_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
 
140
         AS_IF([test "$CC" = "clang"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
110
141
 
111
142
         _APPEND_COMPILE_FLAGS_ERROR([-Wall])
112
143
         _APPEND_COMPILE_FLAGS_ERROR([-Wextra])
 
144
         _APPEND_COMPILE_FLAGS_ERROR([-Weverything])
113
145
         _APPEND_COMPILE_FLAGS_ERROR([-Wthis-test-should-fail])
114
 
         _APPEND_COMPILE_FLAGS_ERROR([-std=c99])
115
146
# Anything below this comment please keep sorted.
116
147
# _APPEND_COMPILE_FLAGS_ERROR([-Wmissing-format-attribute])
117
148
          _APPEND_COMPILE_FLAGS_ERROR([-Wunsuffixed-float-constants])
146
177
                _APPEND_COMPILE_FLAGS_ERROR([-Wno-suggest-attribute=pure])
147
178
                _APPEND_COMPILE_FLAGS_ERROR([-Wno-redundant-decls])],
148
179
                [_APPEND_COMPILE_FLAGS_ERROR([-Wredundant-decls])])
149
 
 
150
180
          _APPEND_COMPILE_FLAGS_ERROR([-Wshadow])
151
181
          _APPEND_COMPILE_FLAGS_ERROR([-Wshorten-64-to-32])
152
182
          _APPEND_COMPILE_FLAGS_ERROR([-Wsign-compare])
155
185
          _APPEND_COMPILE_FLAGS_ERROR([-Wswitch-enum])
156
186
          _APPEND_COMPILE_FLAGS_ERROR([-Wtrampolines])
157
187
          _APPEND_COMPILE_FLAGS_ERROR([-Wundef])
158
 
#          _APPEND_COMPILE_FLAGS_ERROR([-Wunsafe-loop-optimizations])
 
188
          _APPEND_COMPILE_FLAGS_ERROR([-Wunsafe-loop-optimizations])
159
189
          _APPEND_COMPILE_FLAGS_ERROR([-funsafe-loop-optimizations])
160
 
          AS_IF([test "x$ac_cv_vcs_checkout" = xyes && test "x$MINGW" != xyes],[
161
 
            _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
162
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])
163
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
164
 
            AS_IF([test "x$enable_shared" = "xyes"],[
165
 
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=thread])
166
 
                ])
167
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
168
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
169
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
170
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
171
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
172
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
173
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
174
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
175
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
176
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
177
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
178
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
179
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
180
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
181
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
182
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
183
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
184
 
          ])
 
190
 
185
191
          _APPEND_COMPILE_FLAGS_ERROR([-Wclobbered])
186
192
          _APPEND_COMPILE_FLAGS_ERROR([-Wunused])
187
193
          _APPEND_COMPILE_FLAGS_ERROR([-Wunused-result])
195
201
          _APPEND_COMPILE_FLAGS_ERROR([-pipe])
196
202
          _APPEND_COMPILE_FLAGS_ERROR([-fPIE -pie])
197
203
          _APPEND_COMPILE_FLAGS_ERROR([-Wsizeof-pointer-memaccess])
 
204
          _APPEND_COMPILE_FLAGS_ERROR([-Wpacked])
 
205
          _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long])
 
206
          _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code])
 
207
 
 
208
          _SET_SANITIZE_FLAGS
198
209
 
199
210
          AS_IF([test "x$ax_enable_debug" = xno],
200
211
            [AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
235
246
           [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas])
236
247
           _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])])
237
248
 
238
 
         AS_IF([test "$CXX" = "clang++"],
239
 
           [_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
 
249
         AS_IF([test "$CXX" = "clang++"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
240
250
 
241
251
         _APPEND_COMPILE_FLAGS_ERROR([-Wall])
242
252
         _APPEND_COMPILE_FLAGS_ERROR([-Wextra])
 
253
         _APPEND_COMPILE_FLAGS_ERROR([-Weverything])
243
254
         _APPEND_COMPILE_FLAGS_ERROR([-Wthis-test-should-fail])
244
255
# Anything below this comment please keep sorted.
245
256
# _APPEND_COMPILE_FLAGS_ERROR([-Wmissing-format-attribute])
275
286
          _APPEND_COMPILE_FLAGS_ERROR([-Wswitch-enum])
276
287
          _APPEND_COMPILE_FLAGS_ERROR([-Wtrampolines])
277
288
          _APPEND_COMPILE_FLAGS_ERROR([-Wundef])
278
 
#          _APPEND_COMPILE_FLAGS_ERROR([-Wunsafe-loop-optimizations])
 
289
          _APPEND_COMPILE_FLAGS_ERROR([-Wunsafe-loop-optimizations])
279
290
          _APPEND_COMPILE_FLAGS_ERROR([-funsafe-loop-optimizations])
280
291
          _APPEND_COMPILE_FLAGS_ERROR([-Wc++11-compat])
281
292
#         _APPEND_COMPILE_FLAGS_ERROR([-Weffc++])
282
 
          AS_IF([test "x$ac_cv_vcs_checkout" = xyes && test "x$MINGW" != xyes],[
283
 
            _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
284
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])
285
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
286
 
            AS_IF([test "x$enable_shared" = "xyes"],[
287
 
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=thread])
288
 
                ])
289
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
290
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
291
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
292
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
293
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
294
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
295
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
296
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
297
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
298
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
299
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
300
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
301
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
302
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
303
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
304
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
305
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
306
 
          ])
307
293
#         _APPEND_COMPILE_FLAGS_ERROR([-Wold-style-cast])
308
294
          _APPEND_COMPILE_FLAGS_ERROR([-Wclobbered])
309
295
          _APPEND_COMPILE_FLAGS_ERROR([-Wunused])
319
305
          _APPEND_COMPILE_FLAGS_ERROR([-pipe])
320
306
          _APPEND_COMPILE_FLAGS_ERROR([-fPIE -pie])
321
307
          _APPEND_COMPILE_FLAGS_ERROR([-Wsizeof-pointer-memaccess])
 
308
          _APPEND_COMPILE_FLAGS_ERROR([-Wpacked])
 
309
          _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long])
 
310
          _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code])
322
311
 
323
312
          AS_IF([test "x$ax_enable_debug" = xno],
324
313
          [AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
330
319
                _APPEND_COMPILE_FLAGS_ERROR([-fstack-protector-all])
331
320
                ])])])])
332
321
 
 
322
          _SET_SANITIZE_FLAGS
 
323
 
333
324
          AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],
334
325
                [AX_APPEND_FLAG([-Werror])])
335
326
          AC_LANG_POP([C++])
344
335
           AC_REQUIRE([AX_COMPILER_VERSION])
345
336
           AC_REQUIRE([AX_DEBUG])
346
337
           AC_REQUIRE([AX_VCS_CHECKOUT])
 
338
           AC_REQUIRE([AX_HARDEN_SANITIZE])
347
339
 
348
340
           AC_REQUIRE([gl_VISIBILITY])
349
341
           AS_IF([test -n "$CFLAG_VISIBILITY"],[CPPFLAGS="$CPPFLAGS $CFLAG_VISIBILITY"])
352
344
           AC_REQUIRE([_HARDEN_CC_COMPILER_FLAGS])
353
345
           AC_REQUIRE([_HARDEN_CXX_COMPILER_FLAGS])
354
346
           ])
 
347
 
 
348
AC_DEFUN([AX_HARDEN_SANITIZE],
 
349
         [AC_REQUIRE([AX_DEBUG])
 
350
         AC_ARG_WITH([sanitize],
 
351
                     [AS_HELP_STRING([--with-sanitize],
 
352
                                     [Enable sanitize flag for compiler if it supports them @<:@default=no@:>@])],
 
353
                     [AS_CASE([$with_sanitize],
 
354
                              [thread],[
 
355
                              ax_harden_sanitize='thread'],
 
356
                              [address],[
 
357
                              ax_harden_sanitize='with_sanitize'],
 
358
                              [ax_harden_sanitize='rest'])
 
359
                     ],
 
360
                     [AS_IF([test "x$ax_enable_debug" = xyes],[ax_harden_sanitize='rest'])])
 
361
         ])