From 5c600f4c16ba420233331d035a3bae7f86ada649 Mon Sep 17 00:00:00 2001
From: Lev Walkin <vlm@lionet.info>
Date: Fri, 15 Sep 2017 21:57:29 -0700
Subject: [PATCH] add fuzzer detection

---
 configure.ac | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 885871a7..cc22adb7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,6 +18,9 @@ m4_ifdef([AM_PROG_AR],
          [AM_PROG_AR],
          [AC_PATH_PROG(AR, ar, ar, $PATH:/usr/ucb:/usr/ccs/bin)])
 
+AC_PROG_CXX
+CXXFLAGS="-std=c++11"
+
 LT_INIT
 
 dnl If you need to see the details, just run make V=1.
@@ -125,7 +128,7 @@ AS_IF([test "x$disable_test_ubsan" != xno], [
       [
         AS_IF([test "x$disable_test_ubsan" != xmaybe], [
             AC_MSG_FAILURE(
-[--disable-test-ubsan=$disable_test_ubsan is given, but not supported on target.
+[--disable-test-ubsan=$disable_test_ubsan is not supported on a target system.
 https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#how-to-build])])
       ])
 ])
@@ -142,7 +145,7 @@ AS_IF([test "x$disable_test_asan" != xno], [
       [
         AS_IF([test "x$disable_test_asan" != xmaybe], [
             AC_MSG_FAILURE(
-[--disable-test-asan=$disable_test_asan is given, but not supported on target.
+[--disable-test-asan=$disable_test_asan is not supported on a target system.
 Check out https://clang.llvm.org/docs/AddressSanitizer.html#how-to-build])])
       ])
     dnl Keep error messages nice. Also consider:
@@ -153,10 +156,27 @@ Check out https://clang.llvm.org/docs/AddressSanitizer.html#how-to-build])])
 ])
 
 
+dnl Enable LibFuzzer, if supported.
+LIBFUZZER_CFLAGS=""
+AC_ARG_ENABLE([test-fuzzer],
+    [AS_HELP_STRING([--enable-test-fuzzer],
+        [Enable LLVM LibFuzzer for randomized testing])],
+    [enable_test_fuzzer=$enableval], [enable_test_fuzzer=no])
+AS_IF([test "x$enable_test_fuzzer" != xno], [
+    AX_CHECK_COMPILE_FLAG([-fsanitize=fuzzer],
+      [LIBFUZZER_CFLAGS="${FUZZER_CFLAGS} -fsanitize=fuzzer"],
+      [
+            AC_MSG_FAILURE(
+[--enable-test-fuzzer=$enable_test_fuzzer is not supported on a target system.
+Check out http://llvm.org/docs/LibFuzzer.html])
+      ])
+])
+
 TESTSUITE_CFLAGS="${TESTSUICE_CFLAGS} ${SANITIZER_CFLAGS}"
 SKELETONS_CFLAGS="${SKELETONS_CFLAGS} ${SANITIZER_CFLAGS}"
 
 AC_SUBST(ADD_CFLAGS)
+AC_SUBST(LIBFUZZER_CFLAGS)
 AC_SUBST(SANITIZER_CFLAGS)
 AC_SUBST(TESTSUITE_CFLAGS)
 AC_SUBST(SKELETONS_CFLAGS)
-- 
2.26.2