diff --git a/CMakeLists.txt b/CMakeLists.txt index 64cfe8a..ed32e5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,12 @@ cmake_minimum_required(VERSION 2.8) enable_language(C) enable_language(CXX) +set(BUILD_LIBFUZZER "$ENV{BUILD_LIBFUZZER}") +if (BUILD_LIBFUZZER) + SET(CMAKE_C_COMPILER clang-6.0) + SET(CMAKE_CXX_COMPILER clang++-6.0) +endif () + set(CMAKE_POSITION_INDEPENDENT_CODE ON) if(NOT CMAKE_BUILD_TYPE) @@ -71,7 +77,7 @@ target_include_directories(${PROJECT_NAME}32 PUBLIC SYSTEM "${CMAKE_SOURCE_DIR}/src/include" ) -# Install the +# Install the library install( DIRECTORY "${CMAKE_SOURCE_DIR}/src/include/deepstate" DESTINATION include @@ -84,6 +90,28 @@ install( ARCHIVE DESTINATION lib ) +if (BUILD_LIBFUZZER) + add_library(${PROJECT_NAME}_LF STATIC + src/lib/DeepState.c + src/lib/Log.c + src/lib/Option.c + src/lib/Stream.c + ) + + target_compile_options(${PROJECT_NAME}_LF PUBLIC -mno-avx -fsanitize=fuzzer-no-link) + + target_include_directories(${PROJECT_NAME}_LF + PUBLIC SYSTEM "${CMAKE_SOURCE_DIR}/src/include" + ) + + install( + TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_LF + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + ) +endif () + + set(SETUP_PY_IN "${CMAKE_SOURCE_DIR}/bin/setup.py.in") set(SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py") configure_file(${SETUP_PY_IN} ${SETUP_PY})