]> granicus.if.org Git - llvm/commitdiff
[libFuzzer] Always build libFuzzer
authorKuba Mracek <mracek@apple.com>
Fri, 21 Apr 2017 17:47:44 +0000 (17:47 +0000)
committerKuba Mracek <mracek@apple.com>
Fri, 21 Apr 2017 17:47:44 +0000 (17:47 +0000)
There are two reasons why users might want to build libfuzzer:
- To fuzz LLVM itself
- To get the libFuzzer.a archive file, so that they can attach it to their code
This change always builds libfuzzer, and supports the second use case if the specified flag is set.

The point of this patch is to have something that can potentially be shipped with the compiler, and this also ensures that the version of libFuzzer is correct to use with that compiler.

Patch by George Karpenkov.

Differential Revision: https://reviews.llvm.org/D32096

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301010 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Fuzzer/CMakeLists.txt

index d44c12de3e16913a940ec1be65427d8faf59f8da..c8d5d02771edc9f7b65032b9cb35e951a001fcd9 100644 (file)
@@ -11,17 +11,14 @@ if( NOT HAS_THREAD_LOCAL )
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dthread_local=__thread")
 endif()
 
-set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}")
-# Disable the coverage and sanitizer instrumentation for the fuzzer itself.
-set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters -Werror")
 if( LLVM_USE_SANITIZE_COVERAGE )
-  if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address")
-    message(FATAL_ERROR
-      "LibFuzzer and its tests require LLVM_USE_SANITIZER=Address and "
-      "LLVM_USE_SANITIZE_COVERAGE=YES to be set."
-      )
-  endif()
-  add_library(LLVMFuzzerNoMainObjects OBJECT
+  set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}")
+
+  # Disable the coverage and sanitizer instrumentation for the fuzzer itself.
+  set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters -Werror")
+endif()
+
+add_library(LLVMFuzzerNoMainObjects OBJECT
     FuzzerCrossOver.cpp
     FuzzerDriver.cpp
     FuzzerExtFunctionsDlsym.cpp
@@ -45,15 +42,24 @@ if( LLVM_USE_SANITIZE_COVERAGE )
     FuzzerUtilPosix.cpp
     FuzzerUtilWindows.cpp
     )
-  add_library(LLVMFuzzerNoMain STATIC
+add_library(LLVMFuzzerNoMain STATIC
     $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
     )
-  target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
-  add_library(LLVMFuzzer STATIC
+target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
+add_library(LLVMFuzzer STATIC
     FuzzerMain.cpp
     $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
     )
-  target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
+target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
+
+if( LLVM_USE_SANITIZE_COVERAGE )
+
+  if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address")
+    message(FATAL_ERROR
+      "LibFuzzer tests require LLVM_USE_SANITIZER=Address and "
+      "LLVM_USE_SANITIZE_COVERAGE=YES to be set."
+      )
+  endif()
 
   if( LLVM_INCLUDE_TESTS )
     add_subdirectory(test)