CXX_FAST_TLS calling convention: performance improvement for x86-64.
[oota-llvm.git] / lib / Fuzzer / CMakeLists.txt
index 499cf98a6b9ab7ce84064506fca909975fad402e..d4d85041d218d39a7f12a51e1f572c0d48f81ec2 100644 (file)
@@ -1,15 +1,32 @@
-# Disable the coverage instrumentation for the fuzzer itself.
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fsanitize-coverage=0")
-if( LLVM_USE_SANITIZE_COVERAGE  )
-  add_library(LLVMFuzzer STATIC
-    EXCLUDE_FROM_ALL  # Do not build if you are not building fuzzers.
+set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS_RELEASE}")
+# Disable the coverage and sanitizer instrumentation for the fuzzer itself.
+set(CMAKE_CXX_FLAGS_RELEASE "${LIBFUZZER_FLAGS_BASE} -O2 -fno-sanitize=all")
+if( LLVM_USE_SANITIZE_COVERAGE )
+  add_library(LLVMFuzzerNoMainObjects OBJECT
     FuzzerCrossOver.cpp
+    FuzzerInterface.cpp
+    FuzzerTraceState.cpp
+    FuzzerDriver.cpp
     FuzzerIO.cpp
     FuzzerLoop.cpp
-    FuzzerMain.cpp
     FuzzerMutate.cpp
+    FuzzerSanitizerOptions.cpp
+    FuzzerSHA1.cpp
     FuzzerUtil.cpp
     )
+  add_library(LLVMFuzzerNoMain STATIC
+    $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
+    )
+  if( HAVE_LIBPTHREAD )
+    target_link_libraries(LLVMFuzzerNoMain pthread)
+  endif()
+  add_library(LLVMFuzzer STATIC
+    FuzzerMain.cpp
+    $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
+    )
+  if( HAVE_LIBPTHREAD )
+    target_link_libraries(LLVMFuzzer pthread)
+  endif()
 
   if( LLVM_INCLUDE_TESTS )
     add_subdirectory(test)