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.
50
# We do not test for c99 or c++11, that is out of scope.
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])
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.
78
78
AC_DEFUN([_HARDEN_LINKER_FLAGS],
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])])])
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])])
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])])
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])])
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])
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])
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])
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])
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])
236
238
[_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas])
237
239
_APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])])
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])])
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])
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])
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])
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])