summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac45
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
162 AC_DEFINE([HAVE_FVISIBILITY], [1], [Define if compiled with -fvisibility=hidden]) 162 AC_DEFINE([HAVE_FVISIBILITY], [1], [Define if compiled with -fvisibility=hidden])
163esac 163esac
164 164
165AC_ARG_WITH([sanitizers],
166 [AS_HELP_STRING([--with-sanitizers],
167 [build libplist with sanitizers (default is no)])],
168 [build_sanitizers=${withval}],
169 [])
170
165AC_ARG_WITH([fuzzers], 171AC_ARG_WITH([fuzzers],
166 [AS_HELP_STRING([--with-fuzzers], 172 [AS_HELP_STRING([--with-fuzzers],
167 [build fuzzers and libplist with sanitizers (default is no)])], 173 [build fuzzers (implies --with-sanitizers, default is no)])],
168 [build_fuzzers=true], 174 [build_fuzzers=${withval}],
169 [build_fuzzers=false]) 175 [build_fuzzers=no])
170if test "x$build_fuzzers" = "xtrue"; then 176
171 if test "$CXX" != "clang++"; then 177if test "x$build_fuzzers" = "xyes"; then
172 AC_MSG_WARN([building fuzzers requires clang/clang++ (continuing anyway)]) 178 if test "x$build_sanitizers" = "xno"; then
179 AC_MSG_ERROR([--with-fuzzers implies --with-sanitizers, but --without-sanitizers was given. This does not work.])
173 fi 180 fi
181 build_sanitizers=yes
182fi
183
184if test "x$build_sanitizers" = "xyes"; then
174 AS_COMPILER_FLAG([-fsanitize=address], [ 185 AS_COMPILER_FLAG([-fsanitize=address], [
175 SANITIZER_FLAGS+=" -fsanitize=address" 186 SANITIZER_FLAGS+=" -fsanitize=address"
176 ASAN_AVAILABLE=yes 187 ASAN_AVAILABLE=yes
@@ -207,6 +218,7 @@ if test "x$build_fuzzers" = "xtrue"; then
207 done 218 done
208 if test -n "$SAN_COV_FLAGS"; then 219 if test -n "$SAN_COV_FLAGS"; then
209 SANITIZER_FLAGS+=" -fsanitize-coverage=$SAN_COV_FLAGS" 220 SANITIZER_FLAGS+=" -fsanitize-coverage=$SAN_COV_FLAGS"
221 SANITIZERS+="+coverage "
210 else 222 else
211 AC_MSG_WARN([No sanitizer coverage supported by compiler]) 223 AC_MSG_WARN([No sanitizer coverage supported by compiler])
212 fi 224 fi
@@ -224,16 +236,29 @@ if test "x$build_fuzzers" = "xtrue"; then
224 CFLAGS+=" -g" 236 CFLAGS+=" -g"
225 ]) 237 ])
226 238
227 CFLAGS+=" -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" 239 EXTRA_CONF+=" Enabled sanitizers ......: $SANITIZERS
240"
241
228 CFLAGS+=" $SANITIZER_FLAGS" 242 CFLAGS+=" $SANITIZER_FLAGS"
229 CXXFLAGS="$CFLAGS -std=c++11" 243 CXXFLAGS="$CFLAGS -std=c++11"
244fi
245
246if test "x$build_fuzzers" = "xyes"; then
247 if test "$CXX" != "clang++"; then
248 AC_MSG_WARN([building fuzzers requires clang/clang++ (continuing anyway)])
249 fi
250
251 CFLAGS+=" -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
252
230 EXTRA_CONF+=" Build fuzzers ...........: yes 253 EXTRA_CONF+=" Build fuzzers ...........: yes
231" 254"
232 EXTRA_CONF+=" Enabled sanitizers ......: $SANITIZERS 255fi
233" 256
257AM_CONDITIONAL([BUILD_FUZZERS],[test "x$build_fuzzers" = "xyes"])
258
259if test "x$build_fuzzers" = "xyes" || test "x$build_sanitizers" = "xyes"; then
234 AS_COMPILER_FLAGS(TEST_CFLAGS, [$CFLAGS]) 260 AS_COMPILER_FLAGS(TEST_CFLAGS, [$CFLAGS])
235fi 261fi
236AM_CONDITIONAL([BUILD_FUZZERS],[test "x$build_fuzzers" = "xtrue"])
237 262
238m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) 263m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
239 264