-# AX_APPEND_COMPILE_FLAGS_ERROR([-std=c++11]) -- Not ready yet
-# AX_APPEND_COMPILE_FLAGS_ERROR([-pedantic]) -- ?
-# AX_APPEND_COMPILE_FLAGS_ERROR([-Wstack-protector]) -- Issues on 32bit compile
-# AX_APPEND_COMPILE_FLAGS_ERROR([-fstack-protector-all]) -- Issues on 32bit compile
-# AX_APPEND_COMPILE_FLAGS_ERROR([-Wlong-long]) -- Don't turn on for compatibility issues memcached_stat_st
-
-#serial 5
-
-AC_DEFUN([AX_APPEND_LINK_FLAGS_ERROR],
- [AC_PREREQ([2.63])dnl
- AX_APPEND_LINK_FLAGS([$1],[LIB],[-Werror])])
-
-AC_DEFUN([AX_APPEND_COMPILE_FLAGS_ERROR],
- [AC_PREREQ([2.63])dnl
- AX_APPEND_COMPILE_FLAGS([$1])])
-
-AC_DEFUN([AX_HARDEN_LINKER_FLAGS],
- [AC_PREREQ([2.63])dnl
- AC_REQUIRE([AX_CHECK_LINK_FLAG])
- AC_REQUIRE([AX_VCS_CHECKOUT])
- AC_REQUIRE([AX_DEBUG])
- AC_REQUIRE([AX_CXX_COMPILER_VERSION])
- AX_APPEND_LINK_FLAGS_ERROR([-z relro -z now])
- AX_APPEND_LINK_FLAGS_ERROR([-pie])
- AS_IF([test "x$ac_cv_vcs_checkout" = xyes],[AX_APPEND_LINK_FLAGS_ERROR([-Werror])])
- ])
-
-AC_DEFUN([AX_HARDEN_CC_COMPILER_FLAGS],
- [AC_PREREQ([2.63])dnl
- AC_LANG_PUSH([C])dnl
- AC_REQUIRE([AX_APPEND_COMPILE_FLAGS_ERROR])
- AC_REQUIRE([AX_HARDEN_LINKER_FLAGS])
-
- ac_cv_warnings_as_errors=no
- AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
- [AX_APPEND_COMPILE_FLAGS_ERROR([-Werror])
- ac_cv_warnings_as_errors=yes],
- [AX_APPEND_COMPILE_FLAGS_ERROR([-Werror])])
-
- AX_APPEND_LINK_FLAGS_ERROR([-g])
- AS_IF([test "x$ax_enable_debug" = xyes],
- [AX_APPEND_LINK_FLAGS_ERROR([-ggdb])
- AX_APPEND_LINK_FLAGS_ERROR([-O0])],
- [AX_APPEND_LINK_FLAGS_ERROR([-O2])])
-
- AX_APPEND_COMPILE_FLAGS_ERROR([-fstack-check])
- AX_APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])
- AX_APPEND_COMPILE_FLAGS_ERROR([-Wall])
- AX_APPEND_COMPILE_FLAGS_ERROR([-Wextra])
- AX_APPEND_COMPILE_FLAGS_ERROR([-Wunknown-pragmas])
- AX_APPEND_COMPILE_FLAGS_ERROR([-Wthis-test-should-fail])
- AX_APPEND_COMPILE_FLAGS_ERROR([-std=c99])
+# _APPEND_COMPILE_FLAGS_ERROR([-pedantic])
+
+#serial 17
+
+AC_DEFUN([_SET_SANITIZE_FLAGS],
+ [AS_IF([test "x$MINGW" != xyes],[
+ AS_IF([test "x$enable_shared" = "xyes"],
+ [AS_CASE([$ax_harden_sanitize],
+ [thread],[
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=thread])],
+ [address],[
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=address])],
+ [rest],[
+ _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=memory])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=alignment])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bool])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=bounds])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=enum])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-cast-overflow])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=float-divide-by-zero])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=integer-divide-by-zero])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=null])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=return])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=shift])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=signed-integer-overflow])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unreachable])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=unsigned-integer-overflow])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vla-bound])
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=vptr])
+ AS_IF([test "$ax_cv_c_compiler_vendor" != "clang"],[
+ _APPEND_COMPILE_FLAGS_ERROR([-fsanitize=object-size])
+ ])
+ ])
+ ])
+ ])
+ ])
+
+# Note: Should this be LIBS or LDFLAGS?
+AC_DEFUN([_APPEND_LINK_FLAGS_ERROR],
+ [AX_APPEND_LINK_FLAGS([$1],[LDFLAGS],[-Werror])
+ ])
+
+AC_DEFUN([_APPEND_COMPILE_FLAGS_ERROR],
+ [AX_APPEND_COMPILE_FLAGS([$1],,[-Werror])
+ ])
+
+# Everything above this does the heavy lifting, while what follows does the specifics.
+
+AC_DEFUN([_HARDEN_LINKER_FLAGS],
+ [AS_IF([test "$ax_cv_c_compiler_vendor" != "clang"],
+ [_APPEND_LINK_FLAGS_ERROR(["-z relro" "-z now"])
+ AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
+ [_APPEND_LINK_FLAGS_ERROR([-rdynamic])
+# AX_APPEND_LINK_FLAGS([--coverage])])
+ AS_IF([test "x$ac_cv_warnings_as_errors" = xyes],[AX_APPEND_LINK_FLAGS([-Werror])])
+ ])
+ ])
+
+AC_DEFUN([_AX_HARDEN_SANITIZE],
+ [AC_REQUIRE([AX_DEBUG])
+ AC_ARG_WITH([sanitize],
+ [AS_HELP_STRING([--with-sanitize],
+ [Enable sanitize flag for compiler if it supports them @<:@default=no@:>@])],
+ [AS_CASE([$with_sanitize],
+ [thread],[
+ ax_harden_sanitize='thread'],
+ [address],[
+ ax_harden_sanitize='address'],
+ [ax_harden_sanitize='rest'])
+ ],
+ [AS_IF([test "x$ax_enable_debug" = xyes],[ax_harden_sanitize='rest'])])
+ ])
+
+AC_DEFUN([_HARDEN_CC_COMPILER_FLAGS],
+ [AC_LANG_PUSH([C])dnl
+
+ AS_IF([test "x$ax_enable_debug" = xyes],
+ [
+ #_APPEND_COMPILE_FLAGS_ERROR([-H])
+ _APPEND_COMPILE_FLAGS_ERROR([-g])
+ _APPEND_COMPILE_FLAGS_ERROR([-g3])
+ _APPEND_COMPILE_FLAGS_ERROR([-fno-eliminate-unused-debug-types])
+ _APPEND_COMPILE_FLAGS_ERROR([-fno-omit-frame-pointer])
+ ],[
+ _APPEND_COMPILE_FLAGS_ERROR([-g])
+ _APPEND_COMPILE_FLAGS_ERROR([-O2])
+ ])
+
+ AS_IF([test "x$ac_cv_vcs_checkout" = xyes],
+ [_APPEND_COMPILE_FLAGS_ERROR([-fstack-check])
+# _APPEND_COMPILE_FLAGS_ERROR([--coverage])
+ _APPEND_COMPILE_FLAGS_ERROR([-Wpragmas])
+ _APPEND_COMPILE_FLAGS_ERROR([-Wunknown-pragmas])],
+ [_APPEND_COMPILE_FLAGS_ERROR([-Wno-unknown-pragmas])
+ _APPEND_COMPILE_FLAGS_ERROR([-Wno-pragmas])])
+
+ AS_IF([test "$ax_cv_c_compiler_vendor" = "clang"],[_APPEND_COMPILE_FLAGS_ERROR([-Qunused-arguments])])
+
+ _APPEND_COMPILE_FLAGS_ERROR([-Wall])
+ _APPEND_COMPILE_FLAGS_ERROR([-Wextra])
+ _APPEND_COMPILE_FLAGS_ERROR([-Weverything])
+ _APPEND_COMPILE_FLAGS_ERROR([-Wthis-test-should-fail])