LDFLAGS="$bird_tmp_ldflags"
])
-
AC_DEFUN([BIRD_CHECK_GCC_OPTION],
[
bird_tmp_cflags="$CFLAGS"
BIRD_ADD_GCC_OPTION($1,$2)
])
+AC_DEFUN([BIRD_CHECK_GCC_OPTION_LINK],
+[
+ bird_tmp_cflags="$CFLAGS"
+ CFLAGS="$3 $2"
+
+ AC_CACHE_CHECK(
+ [whether CC supports $2],
+ [$1],
+ [
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM()],
+ [$1=yes],
+ [$1=no]
+ )
+ ]
+ )
+
+ CFLAGS="$bird_tmp_cflags"
+])
+
+AC_DEFUN([BIRD_ADD_GCC_OPTION_LINK],
+[
+ if test "$$1" = yes ; then
+ CFLAGS="$CFLAGS $2"
+ LDFLAGS="$LDFLAGS $2"
+ fi
+])
+
+AC_DEFUN([BIRD_CHECK_AND_ADD_GCC_OPTION_LINK],
+[
+ BIRD_CHECK_GCC_OPTION_LINK($@)
+ BIRD_ADD_GCC_OPTION_LINK($1,$2)
+])
+
# BIRD_CHECK_PROG_FLAVOR_GNU(PROGRAM-PATH, IF-SUCCESS, [IF-FAILURE])
# copied from autoconf internal _AC_PATH_PROG_FLAVOR_GNU
AC_DEFUN([BIRD_CHECK_PROG_FLAVOR_GNU],
[enable_memcheck=yes]
)
+AC_ARG_ENABLE([satan],
+ [AS_HELP_STRING([--enable-satan], [enable memory and undefined bahaviour sanitization @<:@no@:>@])],
+ [],
+ [enable_satan=no]
+)
+
AC_ARG_ENABLE([compact-tries],
[AS_HELP_STRING([--enable-compact-tries], [use 4-way tries instead of 16-way ones @<:@no@:>@])],
[],
fi
fi
+if test "$enable_satan" = yes; then
+ BIRD_CHECK_AND_ADD_GCC_OPTION_LINK([bird_cv_c_option_satan_address], [-fsanitize=address], [])
+ BIRD_CHECK_AND_ADD_GCC_OPTION_LINK([bird_cv_c_option_satan_undefined], [-fsanitize=undefined], [])
+ BIRD_CHECK_AND_ADD_GCC_OPTION_LINK([bird_cv_c_option_satan_memory], [-fsanitize=memory], [])
+fi
+
+
if test "$enable_compact_tries" = yes ; then
AC_DEFINE([ENABLE_COMPACT_TRIES], [1], [Define to 1 if you want 4-way tries instead of 16-way ones.])
fi