From 278b662e566995fb67c48a71d5f2fbc374fccf29 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Sun, 27 Dec 2020 00:02:50 +0300 Subject: [PATCH] Removed global CMAKE_MODULE_PATH in IE DevPackage (#3747) * Cleanup * Added CMAKE_MODULE_LINKER_FLAGS for onecoreuap toolchain * Fixed ENABLE_FASTER_BUILD mode on Android * Cosmetic fix * Fixed fuzzing * Enabled fuzzing --- .../IEDevScriptsConfig.cmake | 5 +++ .../compile_flags/fuzzing.cmake | 25 +++++++++++++++ .../download/download_and_check.cmake | 2 +- cmake/developer_package/features.cmake | 2 ++ cmake/developer_package/fuzzing.cmake | 31 ------------------- cmake/toolchains/onecoreuap.toolchain.cmake | 1 + inference-engine/CMakeLists.txt | 4 --- inference-engine/cmake/features.cmake | 2 -- ...renceEngineDeveloperPackageConfig.cmake.in | 5 --- .../common/opencv_c_wraper/CMakeLists.txt | 3 +- .../ie_bridges/c/tests/CMakeLists.txt | 2 +- inference-engine/samples/CMakeLists.txt | 2 +- .../common/format_reader/CMakeLists.txt | 2 +- .../common_layers_params.hpp | 1 + .../unit/inference_engine/CMakeLists.txt | 2 +- tests/fuzz/CMakeLists.txt | 15 +++++---- tests/fuzz/fuzz-testhelper/CMakeLists.txt | 4 +++ 17 files changed, 53 insertions(+), 55 deletions(-) create mode 100644 cmake/developer_package/compile_flags/fuzzing.cmake delete mode 100644 cmake/developer_package/fuzzing.cmake diff --git a/cmake/developer_package/IEDevScriptsConfig.cmake b/cmake/developer_package/IEDevScriptsConfig.cmake index c8caf92f57b..52eba81c1f5 100644 --- a/cmake/developer_package/IEDevScriptsConfig.cmake +++ b/cmake/developer_package/IEDevScriptsConfig.cmake @@ -204,6 +204,7 @@ endif() include(compile_flags/sdl) include(compile_flags/os_flags) include(compile_flags/sanitizer) +include(compile_flags/fuzzing) include(download/dependency_solver) include(cross_compile/cross_compiled_func) include(faster_build) @@ -216,6 +217,10 @@ include(vs_version/vs_version) include(plugins/plugins) include(add_ie_target) +if(ENABLE_FUZZING) + enable_fuzzing() +endif() + # Code style utils include(cpplint/cpplint) diff --git a/cmake/developer_package/compile_flags/fuzzing.cmake b/cmake/developer_package/compile_flags/fuzzing.cmake new file mode 100644 index 00000000000..cb60203fb46 --- /dev/null +++ b/cmake/developer_package/compile_flags/fuzzing.cmake @@ -0,0 +1,25 @@ +# Copyright (C) 2018-2020 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 +# + +macro(enable_fuzzing) + # Enable (libFuzzer)[https://llvm.org/docs/LibFuzzer.html] if supported. + set(FUZZING_COMPILER_FLAGS "-fsanitize=fuzzer-no-link -fprofile-instr-generate -fcoverage-mapping") + set(FUZZING_LINKER_FLAGS "-fsanitize-coverage=trace-pc-guard -fprofile-instr-generate") + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FUZZING_COMPILER_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FUZZING_COMPILER_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FUZZING_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FUZZING_LINKER_FLAGS}") + + unset(FUZZING_COMPILER_FLAGS) + unset(FUZZING_LINKER_FLAGS) +endmacro() + +function(add_fuzzer FUZZER_EXE_NAME FUZZER_SOURCES) + add_executable(${FUZZER_EXE_NAME} ${FUZZER_SOURCES}) + target_link_libraries(${FUZZER_EXE_NAME} PRIVATE fuzz-testhelper) + if(ENABLE_FUZZING) + set_target_properties(${FUZZER_EXE_NAME} PROPERTIES LINK_FLAGS "-fsanitize=fuzzer") + endif() +endfunction(add_fuzzer) diff --git a/cmake/developer_package/download/download_and_check.cmake b/cmake/developer_package/download/download_and_check.cmake index 19f4c16da03..a8fa59c8aa6 100644 --- a/cmake/developer_package/download/download_and_check.cmake +++ b/cmake/developer_package/download/download_and_check.cmake @@ -18,7 +18,7 @@ function (DownloadAndCheck from to fatal result sha256) message(STATUS "Downloading from ${from} to ${to} ...") find_program(aria2c "aria2c") if (${aria2c} STREQUAL "aria2c-NOTFOUND") - if (NOT ${WGET_FOUND}) + if (NOT WGET_FOUND) Download(${from} ${to} ${fatal} ${result} output ${sha256}) list(GET output 0 status_code) else() diff --git a/cmake/developer_package/features.cmake b/cmake/developer_package/features.cmake index a5400b33c00..88ea61973b7 100644 --- a/cmake/developer_package/features.cmake +++ b/cmake/developer_package/features.cmake @@ -48,6 +48,8 @@ ie_option (ENABLE_UNSAFE_LOCATIONS "skip check for MD5 for dependency" OFF) ie_option (ENABLE_ALTERNATIVE_TEMP "in case of dependency conflict, to avoid modification in master, use local copy of dependency" ON) +ie_dependent_option (ENABLE_FUZZING "instrument build for fuzzing" OFF "CMAKE_CXX_COMPILER_ID MATCHES ^(Apple)?Clang$; NOT WIN32" OFF) + # # Check features # diff --git a/cmake/developer_package/fuzzing.cmake b/cmake/developer_package/fuzzing.cmake deleted file mode 100644 index 50ca1c1b6ae..00000000000 --- a/cmake/developer_package/fuzzing.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (C) 2018-2020 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 -# - -function(enable_fuzzing) - # Enable (libFuzzer)[https://llvm.org/docs/LibFuzzer.html] if supported. - if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$" AND NOT WIN32) - # Communicate libfuzzer is enabled - set(WITH_LIBFUZZER ON PARENT_SCOPE) - add_compile_definitions(WITH_LIBFUZZER) - - # Enable libfuzzer and code coverage - set(FUZZING_COMPILER_FLAGS "-fsanitize=fuzzer-no-link -fprofile-instr-generate -fcoverage-mapping") - set(FUZZING_LINKER_FLAGS "-fsanitize-coverage=trace-pc-guard -fprofile-instr-generate") - - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FUZZING_COMPILER_FLAGS}" PARENT_SCOPE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FUZZING_COMPILER_FLAGS}" PARENT_SCOPE) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FUZZING_LINKER_FLAGS}" PARENT_SCOPE) - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${FUZZING_LINKER_FLAGS}" PARENT_SCOPE) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${FUZZING_LINKER_FLAGS}") - endif() -endfunction(enable_fuzzing) - - -function(add_fuzzer FUZZER_EXE_NAME FUZZER_SOURCES) - add_executable(${FUZZER_EXE_NAME} ${FUZZER_SOURCES}) - if(WITH_LIBFUZZER) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=fuzzer" PARENT_SCOPE) - endif() - target_link_libraries(${FUZZER_EXE_NAME} PRIVATE fuzz-testhelper) -endfunction(add_fuzzer) diff --git a/cmake/toolchains/onecoreuap.toolchain.cmake b/cmake/toolchains/onecoreuap.toolchain.cmake index 3c1ad25c606..8902d6b9acc 100644 --- a/cmake/toolchains/onecoreuap.toolchain.cmake +++ b/cmake/toolchains/onecoreuap.toolchain.cmake @@ -63,6 +63,7 @@ foreach(lib kernel32 user32 advapi32 ole32 mscoree combase) endforeach() set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${linker_flags}") +set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${linker_flags}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${linker_flags}") unset(linker_flags) diff --git a/inference-engine/CMakeLists.txt b/inference-engine/CMakeLists.txt index 44f061e5515..95c657222ef 100644 --- a/inference-engine/CMakeLists.txt +++ b/inference-engine/CMakeLists.txt @@ -13,10 +13,6 @@ include(cmake/features.cmake) # resolving dependencies for the project include(cmake/dependencies.cmake) -if (ENABLE_FUZZING) - enable_fuzzing() -endif() - find_package(Threads REQUIRED) function(ie_developer_export_targets) diff --git a/inference-engine/cmake/features.cmake b/inference-engine/cmake/features.cmake index 1c8c26339c9..8c83eaf2453 100644 --- a/inference-engine/cmake/features.cmake +++ b/inference-engine/cmake/features.cmake @@ -81,8 +81,6 @@ ie_dependent_option (ENABLE_SAMPLES "console samples are part of inference engin ie_dependent_option (ENABLE_SPEECH_DEMO "enable speech demo integration" ON "NOT APPLE;NOT ANDROID;X86 OR X86_64" OFF) -ie_option (ENABLE_FUZZING "instrument build for fuzzing" OFF) - ie_option (ENABLE_OPENCV "enables OpenCV" ON) ie_option (ENABLE_PYTHON "enables ie python bridge build" OFF) diff --git a/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in b/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in index 4772b299d0a..31dd6bb422e 100644 --- a/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in +++ b/inference-engine/cmake/templates/InferenceEngineDeveloperPackageConfig.cmake.in @@ -47,11 +47,6 @@ set(InferenceEngine_LIBRARIES IE::inference_engine) # Common cmake includes # -# TODO: remove after private plugin change -list(APPEND CMAKE_MODULE_PATH "@OpenVINO_MAIN_SOURCE_DIR@/cmake/developer_package" # KMB - "@OpenVINO_MAIN_SOURCE_DIR@/cmake/developer_package/download" # KMB, HDDL - "@IE_MAIN_SOURCE_DIR@/cmake") # HDDL - # Inference Engine Developer Scripts package find_package(IEDevScripts REQUIRED diff --git a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt index b8d5ddf6228..aff7229c9f0 100644 --- a/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/samples/common/opencv_c_wraper/CMakeLists.txt @@ -5,7 +5,6 @@ project(OpenCV_C_Wraper) set(TARGET_NAME opencv_c_wraper) -#set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--exclude-libs,ALL") file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) @@ -15,7 +14,7 @@ add_library(${TARGET_NAME} SHARED ${HEADERS} ${SOURCES}) # Find OpenCV components if exist find_package(OpenCV COMPONENTS imgcodecs videoio QUIET) if(NOT OpenCV_FOUND) - message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " is built without OPENCV support") + message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} is built without OPENCV support") else() add_definitions(-DUSE_OPENCV) endif() diff --git a/inference-engine/ie_bridges/c/tests/CMakeLists.txt b/inference-engine/ie_bridges/c/tests/CMakeLists.txt index 761c23aee9c..fa5514db0a2 100644 --- a/inference-engine/ie_bridges/c/tests/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/tests/CMakeLists.txt @@ -7,7 +7,7 @@ set(TARGET_NAME "InferenceEngineCAPITests") # Find OpenCV components if exist find_package(OpenCV COMPONENTS imgcodecs videoio imgproc QUIET) if(NOT OpenCV_FOUND) - message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " is disabled") + message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} is disabled") return() endif() diff --git a/inference-engine/samples/CMakeLists.txt b/inference-engine/samples/CMakeLists.txt index 3665310b971..b08c1ae7815 100644 --- a/inference-engine/samples/CMakeLists.txt +++ b/inference-engine/samples/CMakeLists.txt @@ -198,7 +198,7 @@ macro(ie_add_sample) if(IE_SAMPLE_OPENCV_DEPENDENCIES) find_package(OpenCV COMPONENTS ${IE_SAMPLE_OPENCV_DEPENDENCIES} QUIET) if(NOT OpenCV_FOUND) - message(WARNING "OPENCV is disabled or not found, " ${IE_SAMPLE_NAME} " skipped") + message(WARNING "OPENCV is disabled or not found, ${IE_SAMPLE_NAME} skipped") return() endif() endif() diff --git a/inference-engine/samples/common/format_reader/CMakeLists.txt b/inference-engine/samples/common/format_reader/CMakeLists.txt index 48dbed9f2b5..c5c54496775 100644 --- a/inference-engine/samples/common/format_reader/CMakeLists.txt +++ b/inference-engine/samples/common/format_reader/CMakeLists.txt @@ -23,7 +23,7 @@ add_library(${TARGET_NAME} SHARED ${MAIN_SRC} ${LIBRARY_HEADERS}) # Find OpenCV components if exist find_package(OpenCV COMPONENTS imgcodecs videoio imgproc QUIET) if(NOT OpenCV_FOUND) - message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " will be built without OPENCV support") + message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} will be built without OPENCV support") else() target_link_libraries(${TARGET_NAME} PRIVATE ${OpenCV_LIBRARIES}) if(UNIX AND NOT APPLE) diff --git a/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp b/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp index 1b010622f9f..391d93d09e3 100644 --- a/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp +++ b/inference-engine/tests/ie_test_utils/common_test_utils/common_layers_params.hpp @@ -7,6 +7,7 @@ #include #include +#include // to allow putting vector into exception string stream #include "details/ie_exception.hpp" #include #include "ie_blob.h" diff --git a/inference-engine/tests/unit/inference_engine/CMakeLists.txt b/inference-engine/tests/unit/inference_engine/CMakeLists.txt index 76cc67cca18..1d9515f540f 100644 --- a/inference-engine/tests/unit/inference_engine/CMakeLists.txt +++ b/inference-engine/tests/unit/inference_engine/CMakeLists.txt @@ -7,7 +7,7 @@ set(TARGET_NAME ieUnitTests) # Find OpenCV components if exist find_package(OpenCV COMPONENTS imgcodecs videoio imgproc QUIET) if(NOT OpenCV_FOUND) - message(WARNING "OPENCV is disabled or not found, " ${TARGET_NAME} " needs OpenCV for its build") + message(WARNING "OPENCV is disabled or not found, ${TARGET_NAME} needs OpenCV for its build") else() add_definitions(-DUSE_OPENCV) endif() diff --git a/tests/fuzz/CMakeLists.txt b/tests/fuzz/CMakeLists.txt index 285d813fd8d..f4075c16e86 100644 --- a/tests/fuzz/CMakeLists.txt +++ b/tests/fuzz/CMakeLists.txt @@ -2,22 +2,25 @@ # SPDX-License-Identifier: Apache-2.0 # -cmake_minimum_required(VERSION 3.13 FATAL_ERROR) +project(openvino_fuzzing) -set(OpenVINO_MAIN_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../..) -set(CMAKE_MODULE_PATH "${OpenVINO_MAIN_SOURCE_DIR}/cmake/developer_package" ${CMAKE_MODULE_PATH}) +cmake_minimum_required(VERSION 3.13 FATAL_ERROR) if (CMAKE_BUILD_TYPE STREQUAL "") message(STATUS "CMAKE_BUILD_TYPE not defined, 'Release' will be used") set(CMAKE_BUILD_TYPE "Release") endif() +set(OpenVINO_MAIN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../") + if (NOT TARGET IE::inference_engine) - find_package(InferenceEngineDeveloperPackage REQUIRED) + find_package(IEDevScripts REQUIRED + PATHS "${OpenVINO_MAIN_SOURCE_DIR}/cmake/developer_package" + NO_CMAKE_FIND_ROOT_PATH + NO_DEFAULT_PATH) endif() -include(compile_flags/sanitizer) -include(fuzzing) +find_package(InferenceEngine REQUIRED) if (NOT ENABLE_FUZZING) message(STATUS diff --git a/tests/fuzz/fuzz-testhelper/CMakeLists.txt b/tests/fuzz/fuzz-testhelper/CMakeLists.txt index eefa61b0a20..84155cdfec5 100644 --- a/tests/fuzz/fuzz-testhelper/CMakeLists.txt +++ b/tests/fuzz/fuzz-testhelper/CMakeLists.txt @@ -13,3 +13,7 @@ add_library( ${SRC_FILES}) target_include_directories(${TARGET_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") + +if(ENABLE_FUZZING) + target_compile_definitions(${TARGET_NAME} PRIVATE WITH_LIBFUZZER) +endif()