xref: /openbsd-src/gnu/llvm/lldb/tools/lldb-fuzzer/lldb-commandinterpreter-fuzzer/CMakeLists.txt (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1*f6aab3d8Srobertset(LLVM_LINK_COMPONENTS
2*f6aab3d8Srobert  Support
3*f6aab3d8Srobert  )
4*f6aab3d8Srobert
5*f6aab3d8Srobertadd_llvm_fuzzer(lldb-commandinterpreter-fuzzer
6*f6aab3d8Srobert  EXCLUDE_FROM_ALL
7*f6aab3d8Srobert  lldb-commandinterpreter-fuzzer.cpp
8*f6aab3d8Srobert  )
9*f6aab3d8Srobert
10*f6aab3d8Srobertif(TARGET lldb-commandinterpreter-fuzzer)
11*f6aab3d8Srobert  target_include_directories(lldb-commandinterpreter-fuzzer PRIVATE ..)
12*f6aab3d8Srobert  target_link_libraries(lldb-commandinterpreter-fuzzer
13*f6aab3d8Srobert    PRIVATE
14*f6aab3d8Srobert    liblldb
15*f6aab3d8Srobert    )
16*f6aab3d8Srobert
17*f6aab3d8Srobert  # A directory in the build directory is created to hold the fuzzer's
18*f6aab3d8Srobert  # artifacts as a pre-build command for the command interpreter's executable
19*f6aab3d8Srobert  # target. When the fuzzer exits the input artifact that caused it to exit
20*f6aab3d8Srobert  # will be written to this directory.
21*f6aab3d8Srobert
22*f6aab3d8Srobert  add_custom_command(TARGET lldb-commandinterpreter-fuzzer PRE_BUILD
23*f6aab3d8Srobert    COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/fuzzer-artifacts/commandinterpreter-artifacts
24*f6aab3d8Srobert    )
25*f6aab3d8Srobert
26*f6aab3d8Srobert  add_custom_target(fuzz-lldb-commandinterpreter
27*f6aab3d8Srobert    COMMENT "Running the LLDB command interpreter fuzzer..."
28*f6aab3d8Srobert    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/fuzzer-artifacts/commandinterpreter-artifacts
29*f6aab3d8Srobert    COMMAND  $<TARGET_FILE:lldb-commandinterpreter-fuzzer> -dict=${CMAKE_CURRENT_SOURCE_DIR}/inputdictionary.txt  -only_ascii=1 -artifact_prefix=commandinterpreter-
30*f6aab3d8Srobert    USES_TERMINAL
31*f6aab3d8Srobert    )
32*f6aab3d8Srobertendif()
33