diff options
author | Nikias Bassen | 2017-06-08 03:14:18 +0200 |
---|---|---|
committer | Nikias Bassen | 2017-06-08 03:14:18 +0200 |
commit | ec9ba8bff6a4469aa75f6d570ab5109c061c6a9e (patch) | |
tree | d38d880dda9503b2466230808eb980f1396a6923 | |
parent | be567b3ac81caee2fc6a2e91317d4fe9e3f95a7c (diff) | |
download | libplist-ec9ba8bff6a4469aa75f6d570ab5109c061c6a9e.tar.gz libplist-ec9ba8bff6a4469aa75f6d570ab5109c061c6a9e.tar.bz2 |
configure: Allow building with sanitizers (without fuzzers)
Passing --with-sanitizers will enable building with available sanitizers.
Passing --with-fuzzers will enable building fuzzers which will also imply
--with-sanitizers.
-rw-r--r-- | configure.ac | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/configure.ac b/configure.ac index 187ab11..0bf6687 100644 --- a/configure.ac +++ b/configure.ac @@ -162,15 +162,26 @@ case "$GLOBAL_CFLAGS" in AC_DEFINE([HAVE_FVISIBILITY], [1], [Define if compiled with -fvisibility=hidden]) esac +AC_ARG_WITH([sanitizers], + [AS_HELP_STRING([--with-sanitizers], + [build libplist with sanitizers (default is no)])], + [build_sanitizers=${withval}], + []) + AC_ARG_WITH([fuzzers], [AS_HELP_STRING([--with-fuzzers], - [build fuzzers and libplist with sanitizers (default is no)])], - [build_fuzzers=true], - [build_fuzzers=false]) -if test "x$build_fuzzers" = "xtrue"; then - if test "$CXX" != "clang++"; then - AC_MSG_WARN([building fuzzers requires clang/clang++ (continuing anyway)]) + [build fuzzers (implies --with-sanitizers, default is no)])], + [build_fuzzers=${withval}], + [build_fuzzers=no]) + +if test "x$build_fuzzers" = "xyes"; then + if test "x$build_sanitizers" = "xno"; then + AC_MSG_ERROR([--with-fuzzers implies --with-sanitizers, but --without-sanitizers was given. This does not work.]) fi + build_sanitizers=yes +fi + +if test "x$build_sanitizers" = "xyes"; then AS_COMPILER_FLAG([-fsanitize=address], [ SANITIZER_FLAGS+=" -fsanitize=address" ASAN_AVAILABLE=yes @@ -207,6 +218,7 @@ if test "x$build_fuzzers" = "xtrue"; then done if test -n "$SAN_COV_FLAGS"; then SANITIZER_FLAGS+=" -fsanitize-coverage=$SAN_COV_FLAGS" + SANITIZERS+="+coverage " else AC_MSG_WARN([No sanitizer coverage supported by compiler]) fi @@ -224,16 +236,29 @@ if test "x$build_fuzzers" = "xtrue"; then CFLAGS+=" -g" ]) - CFLAGS+=" -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" + EXTRA_CONF+=" Enabled sanitizers ......: $SANITIZERS +" + CFLAGS+=" $SANITIZER_FLAGS" CXXFLAGS="$CFLAGS -std=c++11" +fi + +if test "x$build_fuzzers" = "xyes"; then + if test "$CXX" != "clang++"; then + AC_MSG_WARN([building fuzzers requires clang/clang++ (continuing anyway)]) + fi + + CFLAGS+=" -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" + EXTRA_CONF+=" Build fuzzers ...........: yes " - EXTRA_CONF+=" Enabled sanitizers ......: $SANITIZERS -" +fi + +AM_CONDITIONAL([BUILD_FUZZERS],[test "x$build_fuzzers" = "xyes"]) + +if test "x$build_fuzzers" = "xyes" || test "x$build_sanitizers" = "xyes"; then AS_COMPILER_FLAGS(TEST_CFLAGS, [$CFLAGS]) fi -AM_CONDITIONAL([BUILD_FUZZERS],[test "x$build_fuzzers" = "xtrue"]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) |