~brianaker/libmemcached/merge-of-1.0

« back to all changes in this revision

Viewing changes to m4/ax_harden_compiler_flags.m4

  • Committer: Continuous Integration
  • Date: 2013-05-04 09:21:59 UTC
  • mfrom: (1102.1.1 libmemcached-1.2)
  • Revision ID: ci@tangent.org-20130504092159-z0z9cm0gnu15wxs0
Merge lp:~tangent-org/libmemcached/1.2-build/ Build: jenkins-Libmemcached-297

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
#
16
16
# LICENSE
17
17
#
18
 
#  Copyright (C) 2012 Brian Aker
 
18
#  Copyright (C) 2012-2013 Brian Aker
19
19
#  All rights reserved.
20
20
#
21
21
#  Redistribution and use in source and binary forms, with or without
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
 
54
# _APPEND_COMPILE_FLAGS_ERROR([-pedantic])
55
55
 
56
 
#serial 9
 
56
#serial 10
57
57
 
58
58
AC_DEFUN([_WARNINGS_AS_ERRORS],
59
59
    [AC_CACHE_CHECK([if all warnings into errors],[ac_cv_warnings_as_errors],
76
76
# Everything above this does the heavy lifting, while what follows does the specifics.
77
77
 
78
78
AC_DEFUN([_HARDEN_LINKER_FLAGS],
79
 
         [
80
 
         AS_IF([test "$CC" != "clang"],
81
 
           [_APPEND_LINK_FLAGS_ERROR([-z relro -z now])
82
 
#_APPEND_LINK_FLAGS_ERROR([-pie])
83
 
           AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],
84
 
             [AX_APPEND_LINK_FLAGS([-Werror])])])
85
 
         ])
 
79
        [AS_IF([test "$CC" != "clang"],
 
80
          [_APPEND_LINK_FLAGS_ERROR([-z relro -z now])
 
81
          AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],[AX_APPEND_LINK_FLAGS([-Werror])])
 
82
          AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[_APPEND_LINK_FLAGS_ERROR([-rdynamic])])
 
83
          ])
 
84
        ])
86
85
 
87
86
AC_DEFUN([_HARDEN_CC_COMPILER_FLAGS],
88
87
         [AC_LANG_PUSH([C])dnl
106
105
           [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas])
107
106
           _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])])
108
107
 
109
 
         AS_IF([test "$CC" = "clang"],
110
 
           [_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
 
108
         AS_IF([test "$CC" = "clang"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
111
109
 
112
110
         _APPEND_COMPILE_FLAGS_ERROR([-Wall])
113
111
         _APPEND_COMPILE_FLAGS_ERROR([-Wextra])
 
112
         _APPEND_COMPILE_FLAGS_ERROR([-Weverything])
114
113
         _APPEND_COMPILE_FLAGS_ERROR([-Wthis-test-should-fail])
115
 
         _APPEND_COMPILE_FLAGS_ERROR([-std=c99])
116
114
# Anything below this comment please keep sorted.
117
115
# _APPEND_COMPILE_FLAGS_ERROR([-Wmissing-format-attribute])
118
116
          _APPEND_COMPILE_FLAGS_ERROR([-Wunsuffixed-float-constants])
147
145
                _APPEND_COMPILE_FLAGS_ERROR([-Wno-suggest-attribute=pure])
148
146
                _APPEND_COMPILE_FLAGS_ERROR([-Wno-redundant-decls])],
149
147
                [_APPEND_COMPILE_FLAGS_ERROR([-Wredundant-decls])])
150
 
 
151
148
          _APPEND_COMPILE_FLAGS_ERROR([-Wshadow])
152
149
          _APPEND_COMPILE_FLAGS_ERROR([-Wshorten-64-to-32])
153
150
          _APPEND_COMPILE_FLAGS_ERROR([-Wsign-compare])
158
155
          _APPEND_COMPILE_FLAGS_ERROR([-Wundef])
159
156
          _APPEND_COMPILE_FLAGS_ERROR([-Wunsafe-loop-optimizations])
160
157
          _APPEND_COMPILE_FLAGS_ERROR([-funsafe-loop-optimizations])
161
 
          AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[
162
 
            _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
163
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])
164
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
165
 
            AS_IF([test "x$enable_shared" = "xyes"],[
 
158
          AS_IF([test "x$MINGW" != xyes],[
 
159
            AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[
 
160
              AS_IF([test "x$enable_shared" = "xyes"],[
 
161
                _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
 
162
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])
 
163
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
166
164
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=thread])
167
 
                ])
168
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
169
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
170
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
171
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
172
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
173
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
174
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
175
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
176
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
177
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
178
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
179
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
180
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
181
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
182
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
183
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
184
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
 
165
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
 
166
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
 
167
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
 
168
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
 
169
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
 
170
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
 
171
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
 
172
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
 
173
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
 
174
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
 
175
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
 
176
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
 
177
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
 
178
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
 
179
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
 
180
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
 
181
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
 
182
              ])
 
183
            ])
185
184
          ])
186
185
          _APPEND_COMPILE_FLAGS_ERROR([-Wclobbered])
187
186
          _APPEND_COMPILE_FLAGS_ERROR([-Wunused])
194
193
          _APPEND_COMPILE_FLAGS_ERROR([-fwrapv])
195
194
          _APPEND_COMPILE_FLAGS_ERROR([-fmudflapt])
196
195
          _APPEND_COMPILE_FLAGS_ERROR([-pipe])
 
196
          _APPEND_COMPILE_FLAGS_ERROR([-fPIE -pie])
197
197
          _APPEND_COMPILE_FLAGS_ERROR([-Wsizeof-pointer-memaccess])
 
198
          _APPEND_COMPILE_FLAGS_ERROR([-Wpacked])
 
199
#         _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long])
 
200
          _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code])
198
201
 
199
202
          AS_IF([test "x$ax_enable_debug" = xno],
200
203
            [AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
202
205
                [AS_IF([test "x$ac_c_gcc_recent" = xyes],
203
206
                  [_APPEND_COMPILE_FLAGS_ERROR([-D_FORTIFY_SOURCE=2])
204
207
                  #_APPEND_COMPILE_FLAGS_ERROR([-Wstack-protector])
205
 
                  #_APPEND_COMPILE_FLAGS_ERROR([-fstack-protector])
206
 
                  #_APPEND_COMPILE_FLAGS_ERROR([--param=ssp-buffer-size=1])
 
208
                  #_APPEND_COMPILE_FLAGS_ERROR([-fstack-protector --param=ssp-buffer-size=4])
207
209
                  _APPEND_COMPILE_FLAGS_ERROR([-fstack-protector-all])
208
210
                  ])])])])
209
211
 
236
238
           [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas])
237
239
           _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])])
238
240
 
239
 
         AS_IF([test "$CXX" = "clang++"],
240
 
           [_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
 
241
         AS_IF([test "$CXX" = "clang++"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
241
242
 
242
243
         _APPEND_COMPILE_FLAGS_ERROR([-Wall])
243
244
         _APPEND_COMPILE_FLAGS_ERROR([-Wextra])
 
245
         _APPEND_COMPILE_FLAGS_ERROR([-Weverything])
244
246
         _APPEND_COMPILE_FLAGS_ERROR([-Wthis-test-should-fail])
245
247
# Anything below this comment please keep sorted.
246
248
# _APPEND_COMPILE_FLAGS_ERROR([-Wmissing-format-attribute])
280
282
          _APPEND_COMPILE_FLAGS_ERROR([-funsafe-loop-optimizations])
281
283
          _APPEND_COMPILE_FLAGS_ERROR([-Wc++11-compat])
282
284
#         _APPEND_COMPILE_FLAGS_ERROR([-Weffc++])
283
 
          AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[
284
 
            _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
285
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])
286
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
287
 
            AS_IF([test "x$enable_shared" = "xyes"],[
 
285
          AS_IF([test "x$MINGW" != xyes],[
 
286
            AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[
 
287
              AS_IF([test "x$enable_shared" = "xyes"],[
 
288
                _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
 
289
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])
 
290
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
288
291
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=thread])
289
 
                ])
290
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
291
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
292
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
293
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
294
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
295
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
296
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
297
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
298
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
299
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
300
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
301
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
302
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
303
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
304
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
305
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
306
 
            _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
 
292
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
 
293
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
 
294
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
 
295
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
 
296
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
 
297
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
 
298
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
 
299
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
 
300
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
 
301
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
 
302
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
 
303
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
 
304
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
 
305
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
 
306
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
 
307
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
 
308
                _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
 
309
              ])
 
310
            ])
307
311
          ])
308
312
#         _APPEND_COMPILE_FLAGS_ERROR([-Wold-style-cast])
309
313
          _APPEND_COMPILE_FLAGS_ERROR([-Wclobbered])
318
322
          _APPEND_COMPILE_FLAGS_ERROR([-fwrapv])
319
323
          _APPEND_COMPILE_FLAGS_ERROR([-fmudflapt])
320
324
          _APPEND_COMPILE_FLAGS_ERROR([-pipe])
 
325
          _APPEND_COMPILE_FLAGS_ERROR([-fPIE -pie])
321
326
          _APPEND_COMPILE_FLAGS_ERROR([-Wsizeof-pointer-memaccess])
 
327
          _APPEND_COMPILE_FLAGS_ERROR([-Wpacked])
 
328
#         _APPEND_COMPILE_FLAGS_ERROR([-Wlong-long])
 
329
          _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code])
322
330
 
323
331
          AS_IF([test "x$ax_enable_debug" = xno],
324
332
          [AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
326
334
              [AS_IF([test "x$ac_c_gcc_recent" = xyes],
327
335
                [_APPEND_COMPILE_FLAGS_ERROR([-D_FORTIFY_SOURCE=2])
328
336
                #_APPEND_COMPILE_FLAGS_ERROR([-Wstack-protector])
329
 
                #_APPEND_COMPILE_FLAGS_ERROR([-fstack-protector])
330
 
                #_APPEND_COMPILE_FLAGS_ERROR([--param=ssp-buffer-size=1])
 
337
                #_APPEND_COMPILE_FLAGS_ERROR([-fstack-protector --param=ssp-buffer-size=4])
331
338
                _APPEND_COMPILE_FLAGS_ERROR([-fstack-protector-all])
332
339
                ])])])])
333
340