]> granicus.if.org Git - llvm/commitdiff
[cmake] Allow building fuzzers with OSS-Fuzz flags.
authorMatt Morehouse <mascasa@google.com>
Thu, 12 Oct 2017 21:58:41 +0000 (21:58 +0000)
committerMatt Morehouse <mascasa@google.com>
Thu, 12 Oct 2017 21:58:41 +0000 (21:58 +0000)
Reviewers: kcc, bogner

Reviewed By: bogner

Subscribers: mgorny, llvm-commits

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

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

CMakeLists.txt
cmake/modules/AddLLVM.cmake

index 47c15e73ff26738a07a0c36746e093348f9d5acf..bf9e4f4985f40d166ab4bfbd7daffc5f3d3ca051 100644 (file)
@@ -435,6 +435,8 @@ endif( LLVM_USE_OPROFILE )
 
 set(LLVM_USE_SANITIZER "" CACHE STRING
   "Define the sanitizer used to build binaries and tests.")
+set(LLVM_LIB_FUZZING_ENGINE "" CACHE PATH
+  "Path to fuzzing library for linking with fuzz targets")
 
 option(LLVM_USE_SPLIT_DWARF
   "Use -gsplit-dwarf when compiling llvm." OFF)
index 81e7211ef9749272ac6af01268e8ce50ab10bb84..43341d388f8bd654de8902d73d5cb53d7dd0036a 100644 (file)
@@ -894,7 +894,12 @@ endmacro(add_llvm_utility name)
 
 macro(add_llvm_fuzzer name)
   cmake_parse_arguments(ARG "" "DUMMY_MAIN" "" ${ARGN})
-  if( LLVM_USE_SANITIZE_COVERAGE )
+  if( LLVM_LIB_FUZZING_ENGINE )
+    set(LLVM_OPTIONAL_SOURCES ${ARG_DUMMY_MAIN})
+    add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS})
+    target_link_libraries(${name} ${LLVM_LIB_FUZZING_ENGINE})
+    set_target_properties(${name} PROPERTIES FOLDER "Fuzzers")
+  elseif( LLVM_USE_SANITIZE_COVERAGE )
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=fuzzer")
     set(LLVM_OPTIONAL_SOURCES ${ARG_DUMMY_MAIN})
     add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS})
@@ -902,7 +907,7 @@ macro(add_llvm_fuzzer name)
   elseif( ARG_DUMMY_MAIN )
     add_llvm_executable(${name} ${ARG_DUMMY_MAIN} ${ARG_UNPARSED_ARGUMENTS})
     set_target_properties(${name} PROPERTIES FOLDER "Fuzzers")
-endif()
+  endif()
 endmacro()
 
 macro(add_llvm_target target_name)