From 82d0aaf1ddf17d8473f16ca0cd595ecd87ea8c91 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Wed, 14 Oct 2020 10:43:24 +0300 Subject: [PATCH] used native LTO support from cmake 3.9.6 (#2625) * used native LTO support from cmake 3.9.6 * Removed compilation flags push / pop * Fixes * Fixes for VPU unit tests * Temp WA for old gcc --- CMakeLists.txt | 9 +- cmake/developer_package.cmake | 18 +++ cmake/features.cmake | 2 +- cmake/os_flags.cmake | 35 +---- docs/template_plugin/CMakeLists.txt | 10 +- docs/template_plugin/src/CMakeLists.txt | 10 +- .../tests/functional/CMakeLists.txt | 4 - .../cmake/developer_package_config.cmake.in | 6 +- .../ie_bridges/c/src/CMakeLists.txt | 6 +- .../src/cldnn_engine/CMakeLists.txt | 6 +- .../src/gna_plugin/CMakeLists.txt | 11 +- .../src/hetero_plugin/CMakeLists.txt | 14 +- .../src/inference_engine/CMakeLists.txt | 9 +- .../src/legacy_api/CMakeLists.txt | 9 +- .../CMakeLists.txt | 10 +- .../src/mkldnn_plugin/CMakeLists.txt | 9 +- .../src/multi_device/CMakeLists.txt | 15 +- .../src/preprocessing/CMakeLists.txt | 9 +- .../src/readers/ir_reader/CMakeLists.txt | 6 +- .../src/readers/ir_reader_v7/CMakeLists.txt | 6 +- .../src/readers/onnx_reader/CMakeLists.txt | 6 +- .../src/transformations/CMakeLists.txt | 8 +- inference-engine/src/vpu/CMakeLists.txt | 6 +- .../src/vpu/common/CMakeLists.txt | 6 +- .../src/vpu/graph_transformer/CMakeLists.txt | 6 +- .../src/vpu/myriad_plugin/CMakeLists.txt | 8 +- inference-engine/tests/CMakeLists.txt | 4 - .../functional/plugin/myriad/CMakeLists.txt | 5 + inference-engine/tests/unit/CMakeLists.txt | 5 + .../tests/unit/vpu/CMakeLists.txt | 26 ++-- .../tests_deprecated/CMakeLists.txt | 6 - .../tests_deprecated/unit/CMakeLists.txt | 7 + inference-engine/thirdparty/CMakeLists.txt | 131 +++++++++--------- .../thirdparty/movidius/CMakeLists.txt | 2 +- ngraph/cmake/external_protobuf.cmake | 29 +--- 35 files changed, 194 insertions(+), 265 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90355091bc1..cf0c632e6fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,15 +89,8 @@ function(build_ngraph) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4308 /wd4146 /wd4703 /wd4244 /wd4819") endif() - # Preserve the original flags for further use - set(CMAKE_ORIGINAL_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - set(CMAKE_ORIGINAL_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - set(CMAKE_ORIGINAL_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") - set(CMAKE_ORIGINAL_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") - set(CMAKE_ORIGINAL_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}") - if(ENABLE_LTO) - ie_enable_lto() + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) endif() ie_cpack_add_component(ngraph) diff --git a/cmake/developer_package.cmake b/cmake/developer_package.cmake index 0c6a857c6c4..8a2178659cb 100644 --- a/cmake/developer_package.cmake +++ b/cmake/developer_package.cmake @@ -2,6 +2,8 @@ # SPDX-License-Identifier: Apache-2.0 # +cmake_minimum_required(VERSION 3.13) + list(APPEND CMAKE_MODULE_PATH "${OpenVINO_MAIN_SOURCE_DIR}/cmake/download" "${OpenVINO_MAIN_SOURCE_DIR}/cmake/cross_compile" @@ -214,6 +216,22 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_POLICY_DEFAULT_CMP0054 NEW) +# LTO + +set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) +include(CheckIPOSupported) + +check_ipo_supported(RESULT IPO_SUPPORTED + OUTPUT OUTPUT_MESSAGE + LANGUAGES C CXX) + +if(NOT IPO_SUPPORTED) + set(ENABLE_LTO "OFF" CACHE STRING "Enable Link Time Optmization" FORCE) + message(WARNING "IPO / LTO is not supported: ${OUTPUT_MESSAGE}") +endif() + +# General flags + include(sdl) include(os_flags) include(sanitizer) diff --git a/cmake/features.cmake b/cmake/features.cmake index 10a4d6684dc..804e75a3477 100644 --- a/cmake/features.cmake +++ b/cmake/features.cmake @@ -21,7 +21,7 @@ ie_dependent_option (ENABLE_CLDNN "clDnn based plugin for inference engine" ON " # FIXME: there are compiler failures with LTO and Cross-Compile toolchains. Disabling for now, but # this must be addressed in a proper way -ie_dependent_option (ENABLE_LTO "Enable Link Time Optimization" OFF "LINUX OR WIN32;NOT CMAKE_CROSSCOMPILING" OFF) +ie_dependent_option (ENABLE_LTO "Enable Link Time Optimization" OFF "LINUX OR WIN32;NOT CMAKE_CROSSCOMPILING; CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9" OFF) ie_option (OS_FOLDER "create OS dedicated folder in output" OFF) diff --git a/cmake/os_flags.cmake b/cmake/os_flags.cmake index 4387e137ae5..8353bd7fbd2 100644 --- a/cmake/os_flags.cmake +++ b/cmake/os_flags.cmake @@ -130,40 +130,7 @@ endfunction() # Enables Link Time Optimization compilation # macro(ie_enable_lto) - if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND OFF) - ProcessorCount(N) - if(UNIX) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ipo") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ipo") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -ipo-jobs${N}") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -ipo-jobs${N}") - set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -ipo-jobs${N}") - else() - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Qipo") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Qipo") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /Qipo-jobs:${N}") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /Qipo-jobs:${N}") - set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /Qipo-jobs:${N}") - endif() - elseif(UNIX) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto") - # LTO causes issues with gcc 4.8.5 during cmake pthread check - if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9) - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto") - endif() - - # modify runlib and ar tools - if(LINUX) - set(CMAKE_AR "gcc-ar") - set(CMAKE_RANLIB "gcc-ranlib") - endif() - elseif(MSVC AND OFF) - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GL") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GL") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG:STATUS") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG:STATUS") - set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG:STATUS") - endif() + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) endmacro() # diff --git a/docs/template_plugin/CMakeLists.txt b/docs/template_plugin/CMakeLists.txt index 088525d3541..9dc58d8f994 100644 --- a/docs/template_plugin/CMakeLists.txt +++ b/docs/template_plugin/CMakeLists.txt @@ -14,12 +14,12 @@ find_package(InferenceEngineDeveloperPackage REQUIRED) add_subdirectory(src) if(ENABLE_TESTS) - include(CTest) - enable_testing() + include(CTest) + enable_testing() - if(ENABLE_FUNCTIONAL_TESTS) - add_subdirectory(tests/functional) - endif() + if(ENABLE_FUNCTIONAL_TESTS) + add_subdirectory(tests/functional) + endif() endif() # [cmake:main] diff --git a/docs/template_plugin/src/CMakeLists.txt b/docs/template_plugin/src/CMakeLists.txt index ea3a1a31a6d..18f54493ef5 100644 --- a/docs/template_plugin/src/CMakeLists.txt +++ b/docs/template_plugin/src/CMakeLists.txt @@ -5,10 +5,6 @@ # [cmake:plugin] set(TARGET_NAME "templatePlugin") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) @@ -20,9 +16,7 @@ ie_add_plugin(NAME ${TARGET_NAME} VERSION_DEFINES_FOR template_plugin.cpp) target_include_directories(${TARGET_NAME} PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}") - -target_include_directories(${TARGET_NAME} PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}" "${IE_MAIN_TEMPLATE_PLUGIN_SOURCE_DIR}/include") # link common Inference Engine libraries @@ -36,6 +30,8 @@ target_link_libraries(${TARGET_NAME} PRIVATE IE::ngraph_backend IE::interpreter_backend) +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # ATTENTION: uncomment to register a plugin in the plugins.xml file # ie_register_plugins(MAIN_TARGET ${TARGET_NAME} # POSSIBLE_PLUGINS ${TARGET_NAME}) diff --git a/docs/template_plugin/tests/functional/CMakeLists.txt b/docs/template_plugin/tests/functional/CMakeLists.txt index e005539c220..627e112c4e2 100644 --- a/docs/template_plugin/tests/functional/CMakeLists.txt +++ b/docs/template_plugin/tests/functional/CMakeLists.txt @@ -3,10 +3,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO AND CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) - ie_enable_lto() -endif() - # [cmake:functional_tests] set(TARGET_NAME templateFuncTests) diff --git a/inference-engine/cmake/developer_package_config.cmake.in b/inference-engine/cmake/developer_package_config.cmake.in index a20b334cb0c..db157eb12f2 100644 --- a/inference-engine/cmake/developer_package_config.cmake.in +++ b/inference-engine/cmake/developer_package_config.cmake.in @@ -20,7 +20,7 @@ endforeach() message(STATUS "The following CMake options are exported from Inference Engine Developer package") message("") foreach(option IN LISTS ie_options) - message(" ${option}: ${${option}}") + message(" ${option}: ${${option}}") endforeach() message("") @@ -50,7 +50,7 @@ list(APPEND CMAKE_MODULE_PATH "${OpenVINO_MAIN_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${IE_MAIN_SOURCE_DIR}/cmake") # generic stuff from developer package -include(developer_package) +include(developer_package NO_POLICY_SCOPE) include(developer_package_ie) # Don't threat deprecated API warnings as errors in 3rd party apps @@ -68,4 +68,4 @@ if (THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO") find_package(TBB) endif() -find_package(Threads REQUIRED) \ No newline at end of file +find_package(Threads REQUIRED) diff --git a/inference-engine/ie_bridges/c/src/CMakeLists.txt b/inference-engine/ie_bridges/c/src/CMakeLists.txt index ef8527adf1c..4ebf7ccf2b4 100644 --- a/inference-engine/ie_bridges/c/src/CMakeLists.txt +++ b/inference-engine/ie_bridges/c/src/CMakeLists.txt @@ -2,10 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO) - ie_enable_lto() -endif() - set(TARGET_NAME inference_engine_c_api) file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) @@ -21,6 +17,8 @@ target_include_directories(${TARGET_NAME} PUBLIC "${InferenceEngine_C_API_SOURCE add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # export export(TARGETS ${TARGET_NAME} NAMESPACE IE:: APPEND FILE "${CMAKE_BINARY_DIR}/targets.cmake") diff --git a/inference-engine/src/cldnn_engine/CMakeLists.txt b/inference-engine/src/cldnn_engine/CMakeLists.txt index cdc0de406e0..03475ba6557 100644 --- a/inference-engine/src/cldnn_engine/CMakeLists.txt +++ b/inference-engine/src/cldnn_engine/CMakeLists.txt @@ -11,10 +11,6 @@ if (LINUX) endif() endif() -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB LIBRARY_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h) @@ -35,6 +31,8 @@ target_include_directories(${TARGET_NAME} PRIVATE ${CLDNN__IOCL_ICD_INCDIRS} ${CLDNN_TOP_FOLDER}) +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # install install(FILES "${clDNN_SOURCE_DIR}/kernel_selector/core/cache/cache.json" diff --git a/inference-engine/src/gna_plugin/CMakeLists.txt b/inference-engine/src/gna_plugin/CMakeLists.txt index 81649905502..ae0cbbd2876 100644 --- a/inference-engine/src/gna_plugin/CMakeLists.txt +++ b/inference-engine/src/gna_plugin/CMakeLists.txt @@ -3,10 +3,6 @@ set(TARGET_NAME "GNAPlugin") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) @@ -53,11 +49,8 @@ target_link_libraries(${TARGET_NAME}_test_static PUBLIC inference_engine_preproc target_include_directories(${TARGET_NAME}_test_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) set_target_properties(${TARGET_NAME}_test_static PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}_test_static) -if(WIN32) - # Correct 'jnl' macro/jit issue - target_compile_options(${TARGET_NAME} PRIVATE $<$:/bigobj> ) - target_compile_options(${TARGET_NAME}_test_static PRIVATE $<$:/bigobj> ) -endif() +set_target_properties(${TARGET_NAME} ${TARGET_NAME}_test_static + PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) # install diff --git a/inference-engine/src/hetero_plugin/CMakeLists.txt b/inference-engine/src/hetero_plugin/CMakeLists.txt index 7dabc8a8b5d..3777a0ece9b 100644 --- a/inference-engine/src/hetero_plugin/CMakeLists.txt +++ b/inference-engine/src/hetero_plugin/CMakeLists.txt @@ -4,16 +4,8 @@ set (TARGET_NAME "HeteroPlugin") -if(ENABLE_LTO) - ie_enable_lto() -endif() - -file(GLOB SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp -) - -file(GLOB_RECURSE HEADERS - ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) +file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +file(GLOB_RECURSE HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) ie_add_plugin(NAME ${TARGET_NAME} DEVICE_NAME "HETERO" @@ -25,3 +17,5 @@ ie_faster_build(${TARGET_NAME} ) target_link_libraries(${TARGET_NAME} PRIVATE inference_engine ade pugixml ${NGRAPH_LIBRARIES} inference_engine_transformations) + +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) diff --git a/inference-engine/src/inference_engine/CMakeLists.txt b/inference-engine/src/inference_engine/CMakeLists.txt index 7de2e760e53..ae0e2b0d7cb 100644 --- a/inference-engine/src/inference_engine/CMakeLists.txt +++ b/inference-engine/src/inference_engine/CMakeLists.txt @@ -4,10 +4,6 @@ set (TARGET_NAME "inference_engine") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file (GLOB LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/threading/*.cpp @@ -215,6 +211,11 @@ target_link_libraries(${TARGET_NAME}_s PRIVATE ${CMAKE_DL_LIBS} ${NGRAPH_LIBRARI target_compile_definitions(${TARGET_NAME}_s PUBLIC USE_STATIC_IE) +# LTO + +set_target_properties(${TARGET_NAME} ${TARGET_NAME}_obj ${TARGET_NAME}_s ${TARGET_NAME}_common_obj + PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # export targets export(TARGETS ${TARGET_NAME} NAMESPACE IE:: APPEND FILE "${CMAKE_BINARY_DIR}/targets.cmake") diff --git a/inference-engine/src/legacy_api/CMakeLists.txt b/inference-engine/src/legacy_api/CMakeLists.txt index 3cc4851d3bf..6ae6289969a 100644 --- a/inference-engine/src/legacy_api/CMakeLists.txt +++ b/inference-engine/src/legacy_api/CMakeLists.txt @@ -4,10 +4,6 @@ set(TARGET_NAME "inference_engine_legacy") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) file(GLOB_RECURSE PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h) @@ -58,6 +54,11 @@ target_link_libraries(${TARGET_NAME} PRIVATE ${CMAKE_DL_LIBS} ${NGRAPH_LIBRARIES add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) +# LTO + +set_target_properties(${TARGET_NAME} ${TARGET_NAME}_obj + PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # export targets export(TARGETS ${TARGET_NAME} NAMESPACE IE:: APPEND FILE "${CMAKE_BINARY_DIR}/targets.cmake") diff --git a/inference-engine/src/low_precision_transformations/CMakeLists.txt b/inference-engine/src/low_precision_transformations/CMakeLists.txt index 518c0e24120..fac16665b65 100644 --- a/inference-engine/src/low_precision_transformations/CMakeLists.txt +++ b/inference-engine/src/low_precision_transformations/CMakeLists.txt @@ -4,10 +4,6 @@ set (TARGET_NAME "inference_engine_lp_transformations") -if(ENABLE_LTO) - ie_enable_lto() -endif() - set(PUBLIC_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) @@ -35,10 +31,14 @@ target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_API target_link_libraries(${TARGET_NAME} PRIVATE inference_engine openvino::itt) target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR} - $) + $) add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) +# LTO + +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # developer package ie_developer_export_targets(${TARGET_NAME}) diff --git a/inference-engine/src/mkldnn_plugin/CMakeLists.txt b/inference-engine/src/mkldnn_plugin/CMakeLists.txt index 74efb3dfde9..5f19256dd46 100644 --- a/inference-engine/src/mkldnn_plugin/CMakeLists.txt +++ b/inference-engine/src/mkldnn_plugin/CMakeLists.txt @@ -4,10 +4,6 @@ set(TARGET_NAME "MKLDNNPlugin") -if(ENABLE_LTO) - ie_enable_lto() -endif() - if (WIN32) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX") endif() @@ -205,6 +201,11 @@ set_ie_threading_interface_for(${TARGET_NAME}_obj) target_compile_definitions(${TARGET_NAME}_obj PUBLIC -DMKLDNN_THR=${MKLDNN_THR} PRIVATE USE_STATIC_IE IMPLEMENT_INFERENCE_ENGINE_PLUGIN) +# LTO + +set_target_properties(${TARGET_NAME} ${TARGET_NAME}_obj + PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # install if(GEMM STREQUAL "MKL") diff --git a/inference-engine/src/multi_device/CMakeLists.txt b/inference-engine/src/multi_device/CMakeLists.txt index d38f95289ef..65fc8084190 100644 --- a/inference-engine/src/multi_device/CMakeLists.txt +++ b/inference-engine/src/multi_device/CMakeLists.txt @@ -4,17 +4,8 @@ set (TARGET_NAME "MultiDevicePlugin") -if(ENABLE_LTO) - ie_enable_lto() -endif() - -file(GLOB SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp -) - -file(GLOB HEADERS - ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp -) +file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) +file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) ie_add_plugin(NAME ${TARGET_NAME} DEVICE_NAME "MULTI" @@ -24,3 +15,5 @@ ie_add_plugin(NAME ${TARGET_NAME} target_link_libraries(${TARGET_NAME} PRIVATE inference_engine) set_ie_threading_interface_for(${TARGET_NAME}) + +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) \ No newline at end of file diff --git a/inference-engine/src/preprocessing/CMakeLists.txt b/inference-engine/src/preprocessing/CMakeLists.txt index edb3d4edb40..b39bf1bd4cd 100644 --- a/inference-engine/src/preprocessing/CMakeLists.txt +++ b/inference-engine/src/preprocessing/CMakeLists.txt @@ -4,10 +4,6 @@ set (TARGET_NAME "inference_engine_preproc") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) file(GLOB LIBRARY_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) @@ -187,6 +183,11 @@ target_link_libraries(${TARGET_NAME}_s PRIVATE fluid openvino::itt target_compile_definitions(${TARGET_NAME}_s INTERFACE USE_STATIC_IE) +# LTO + +set_target_properties(${TARGET_NAME} ${TARGET_NAME}_obj ${TARGET_NAME}_s + PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # developer package ie_developer_export_targets(${TARGET_NAME}) diff --git a/inference-engine/src/readers/ir_reader/CMakeLists.txt b/inference-engine/src/readers/ir_reader/CMakeLists.txt index 16e02491249..ff8ac49a8a0 100644 --- a/inference-engine/src/readers/ir_reader/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader/CMakeLists.txt @@ -4,10 +4,6 @@ set(TARGET_NAME "inference_engine_ir_reader") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) @@ -37,6 +33,8 @@ target_link_libraries(${TARGET_NAME} PRIVATE ${NGRAPH_LIBRARIES} pugixml openvino::itt) +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # code style add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) diff --git a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt index 5dda93ebe3a..f3e281ec2c6 100644 --- a/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt +++ b/inference-engine/src/readers/ir_reader_v7/CMakeLists.txt @@ -4,10 +4,6 @@ set(TARGET_NAME "inference_engine_ir_v7_reader") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) @@ -35,6 +31,8 @@ target_include_directories(${TARGET_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/" target_link_libraries(${TARGET_NAME} PRIVATE inference_engine_reader_api inference_engine_plugin_api inference_engine pugixml openvino::itt) +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # code style add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) diff --git a/inference-engine/src/readers/onnx_reader/CMakeLists.txt b/inference-engine/src/readers/onnx_reader/CMakeLists.txt index 084ae3b6679..5aaffa9b3e9 100644 --- a/inference-engine/src/readers/onnx_reader/CMakeLists.txt +++ b/inference-engine/src/readers/onnx_reader/CMakeLists.txt @@ -4,10 +4,6 @@ set(TARGET_NAME "inference_engine_onnx_reader") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp) @@ -26,6 +22,8 @@ target_compile_definitions(${TARGET_NAME} PRIVATE IMPLEMENT_INFERENCE_ENGINE_PLU target_link_libraries(${TARGET_NAME} PRIVATE inference_engine_reader_api onnx_importer inference_engine) +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # code style add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) diff --git a/inference-engine/src/transformations/CMakeLists.txt b/inference-engine/src/transformations/CMakeLists.txt index 7300d2a1ac8..f855db9db1d 100644 --- a/inference-engine/src/transformations/CMakeLists.txt +++ b/inference-engine/src/transformations/CMakeLists.txt @@ -4,10 +4,6 @@ set(TARGET_NAME "inference_engine_transformations") -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE LIBRARY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) file(GLOB_RECURSE PUBLIC_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp) @@ -36,6 +32,10 @@ target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR} add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME}) +# LTO + +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # developer package ie_developer_export_targets(${TARGET_NAME}) diff --git a/inference-engine/src/vpu/CMakeLists.txt b/inference-engine/src/vpu/CMakeLists.txt index db848a2f05c..3814c23988d 100644 --- a/inference-engine/src/vpu/CMakeLists.txt +++ b/inference-engine/src/vpu/CMakeLists.txt @@ -14,9 +14,9 @@ if(ENABLE_MYRIAD) "${IE_MAIN_SOURCE_DIR}/thirdparty/movidius" "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/movidius") - # - # Build plugins - # + # + # Build plugins + # add_subdirectory(myriad_plugin) diff --git a/inference-engine/src/vpu/common/CMakeLists.txt b/inference-engine/src/vpu/common/CMakeLists.txt index 996c83940ab..24c77401b25 100644 --- a/inference-engine/src/vpu/common/CMakeLists.txt +++ b/inference-engine/src/vpu/common/CMakeLists.txt @@ -2,10 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE SOURCES *.cpp *.hpp *.h) function(add_common_target TARGET_NAME STATIC_IE) @@ -51,6 +47,8 @@ function(add_common_target TARGET_NAME STATIC_IE) add_cpplint_target(${TARGET_NAME}_cpplint FOR_TARGETS ${TARGET_NAME} CUSTOM_FILTERS "+runtime/explicit") endif() + set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + ie_developer_export_targets(${TARGET_NAME}) target_link_libraries(${TARGET_NAME} PUBLIC ${NGRAPH_LIBRARIES} inference_engine_transformations diff --git a/inference-engine/src/vpu/graph_transformer/CMakeLists.txt b/inference-engine/src/vpu/graph_transformer/CMakeLists.txt index a45437453f0..546d3a69d13 100644 --- a/inference-engine/src/vpu/graph_transformer/CMakeLists.txt +++ b/inference-engine/src/vpu/graph_transformer/CMakeLists.txt @@ -2,10 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO) - ie_enable_lto() -endif() - file(GLOB_RECURSE SOURCES *.cpp *.hpp *.h *.inc) function(add_graph_transformer_target TARGET_NAME STATIC_IE) @@ -59,6 +55,8 @@ function(add_graph_transformer_target TARGET_NAME STATIC_IE) ie_developer_export_targets(${TARGET_NAME}) endif() + + set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) endfunction() add_graph_transformer_target("vpu_graph_transformer" FALSE) diff --git a/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt b/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt index aeebe4e040a..bbbf54633ea 100644 --- a/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt +++ b/inference-engine/src/vpu/myriad_plugin/CMakeLists.txt @@ -2,10 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO) - ie_enable_lto() -endif() - set(TARGET_NAME "myriadPlugin") file(GLOB_RECURSE SOURCES *.cpp *.hpp *.h) @@ -45,6 +41,10 @@ target_link_libraries(${TARGET_NAME} PRIVATE mvnc inference_engine vpu_graph_transformer) +# LTO + +set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) + # install install(FILES ${IE_MAIN_SOURCE_DIR}/thirdparty/movidius/mvnc/src/97-myriad-usbboot.rules diff --git a/inference-engine/tests/CMakeLists.txt b/inference-engine/tests/CMakeLists.txt index c9a336d578d..69942e3db2f 100644 --- a/inference-engine/tests/CMakeLists.txt +++ b/inference-engine/tests/CMakeLists.txt @@ -2,10 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO AND CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) - ie_enable_lto() -endif() - set(IE_TESTS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) enable_testing() diff --git a/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt b/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt index 19aba37651a..4bab584a8b7 100644 --- a/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt +++ b/inference-engine/tests/functional/plugin/myriad/CMakeLists.txt @@ -23,3 +23,8 @@ addIeTargetTest( VPU MYRIAD ) + +# because vpu_common_lib and vpu_graph_transformer are compiled with LTO +if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) + set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) +endif() diff --git a/inference-engine/tests/unit/CMakeLists.txt b/inference-engine/tests/unit/CMakeLists.txt index 853e53ad61e..7d5ed259213 100644 --- a/inference-engine/tests/unit/CMakeLists.txt +++ b/inference-engine/tests/unit/CMakeLists.txt @@ -5,6 +5,11 @@ # RPATH is always enabled for unit tests set(CMAKE_SKIP_RPATH OFF) +# because unit tests use plugins object files compiled with LTO +if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) +endif() + add_subdirectory(inference_engine) if (ENABLE_MKL_DNN) diff --git a/inference-engine/tests/unit/vpu/CMakeLists.txt b/inference-engine/tests/unit/vpu/CMakeLists.txt index a4106753d71..c213051f7f2 100644 --- a/inference-engine/tests/unit/vpu/CMakeLists.txt +++ b/inference-engine/tests/unit/vpu/CMakeLists.txt @@ -2,29 +2,35 @@ # SPDX-License-Identifier: Apache-2.0 # -disable_deprecated_warnings() - set(TARGET_NAME vpuUnitTests) +disable_deprecated_warnings() + include(${XLINK_DIR}/XLink.cmake) addIeTargetTest( NAME ${TARGET_NAME} ROOT ${CMAKE_CURRENT_SOURCE_DIR} + ADDITIONAL_SOURCE_DIRS + # because ngraphFunctions sources need to be compiled with LTO as well + "${IE_TESTS_ROOT}/ngraph_functions/src" INCLUDES - ${IE_MAIN_SOURCE_DIR}/src/vpu/myriad_plugin - ${IE_MAIN_SOURCE_DIR}/thirdparty/movidius - ${IE_MAIN_SOURCE_DIR}/thirdparty/movidius/mvnc/include/watchdog - ${XLINK_INCLUDE} - ${XLINK_PLATFORM_INCLUDE} - ${CMAKE_CURRENT_SOURCE_DIR}/base/ + "${IE_MAIN_SOURCE_DIR}/src/vpu/myriad_plugin" + "${IE_MAIN_SOURCE_DIR}/thirdparty/movidius" + "${IE_MAIN_SOURCE_DIR}/thirdparty/movidius/mvnc/include/watchdog" + "${XLINK_INCLUDE}" + "${XLINK_PLATFORM_INCLUDE}" + "${CMAKE_CURRENT_SOURCE_DIR}/base" + $ LINK_LIBRARIES vpu_graph_transformer_test_static unitTestUtils - ngraphFunctions mvnc + ${NGRAPH_LIBRARIES} + ngraph_backend + interpreter_backend ADD_CPPLINT LABELS VPU MYRIAD -) \ No newline at end of file +) diff --git a/inference-engine/tests_deprecated/CMakeLists.txt b/inference-engine/tests_deprecated/CMakeLists.txt index 3fa96a770a4..b369c1b630b 100644 --- a/inference-engine/tests_deprecated/CMakeLists.txt +++ b/inference-engine/tests_deprecated/CMakeLists.txt @@ -2,10 +2,6 @@ # SPDX-License-Identifier: Apache-2.0 # -if(ENABLE_LTO AND CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) - ie_enable_lto() -endif() - enable_testing() add_subdirectory(helpers) @@ -22,8 +18,6 @@ if (ENABLE_BEH_TESTS) add_subdirectory(behavior) endif() -disable_deprecated_warnings() - if(ENABLE_TESTS) add_subdirectory(unit) endif() diff --git a/inference-engine/tests_deprecated/unit/CMakeLists.txt b/inference-engine/tests_deprecated/unit/CMakeLists.txt index 6262795f70f..6f3b63d6b46 100644 --- a/inference-engine/tests_deprecated/unit/CMakeLists.txt +++ b/inference-engine/tests_deprecated/unit/CMakeLists.txt @@ -6,6 +6,8 @@ cmake_policy(SET CMP0054 NEW) set(TARGET_NAME InferenceEngineUnitTests) +disable_deprecated_warnings() + # rpath enabled for unit tests only SET (CMAKE_SKIP_RPATH OFF) @@ -118,6 +120,11 @@ target_include_directories(${TARGET_NAME} PRIVATE set_target_properties(${TARGET_NAME} PROPERTIES COMPILE_PDB_NAME ${TARGET_NAME}) +# because IE unit tests use plugin and IE object files compiled with LTO +if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) + set_target_properties(${TARGET_NAME} PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO}) +endif() + ## Mock macros doesn't use "override" specificator target_compile_options(${TARGET_NAME} PRIVATE $<$: -Wno-error=inconsistent-missing-override >) target_compile_options(${TARGET_NAME} PRIVATE $<$: -Wno-error=inconsistent-missing-override >) diff --git a/inference-engine/thirdparty/CMakeLists.txt b/inference-engine/thirdparty/CMakeLists.txt index 86b0dad7966..fa2a4d02d8c 100644 --- a/inference-engine/thirdparty/CMakeLists.txt +++ b/inference-engine/thirdparty/CMakeLists.txt @@ -2,90 +2,85 @@ # SPDX-License-Identifier: Apache-2.0 # -if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unknown-warning-option -Wno-error=inconsistent-missing-override -Wno-error=pass-failed") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=unknown-warning-option -Wno-error=inconsistent-missing-override -Wno-error=pass-failed") elseif(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 9.1) # On g++ 9.3.0 (Ubuntu 20.04) the ADE library raises "redundant-move" warnings set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=redundant-move") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=redundant-move") -elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") AND ("${MSVC_VERSION}" VERSION_GREATER_EQUAL "1920")) +elseif((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") AND (MSVC_VERSION VERSION_GREATER_EQUAL "1920")) # 1920 version of MSVC 2019 # This flagis needed for enabling SIMD vectorization with command '#pragma omp simd'. # Compilation with '/openmp:experimental' key allow us to enable vectorizatikon capability in MSVC. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp:experimental") endif() -function(build_with_lto) - if(ENABLE_LTO) - ie_enable_lto() - endif() +if(ENABLE_LTO) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON) +endif() - if (ENABLE_CLDNN) - set(CLDNN__OUTPUT_BIN_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - set(CLDNN__OUTPUT_LIB_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) - if (ENABLE_TESTS AND ENABLE_CLDNN_TESTS) - set(CLDNN__INCLUDE_TESTS ON CACHE BOOL "" FORCE) - set(CLDNN__INCLUDE_CORE_INTERNAL_TESTS ON CACHE BOOL "" FORCE) - else() - set(CLDNN__INCLUDE_TESTS OFF CACHE BOOL "" FORCE) - set(CLDNN__INCLUDE_CORE_INTERNAL_TESTS OFF CACHE BOOL "" FORCE) - endif() - set(CLDNN__INCLUDE_EXAMPLES OFF CACHE BOOL "" FORCE) - set(CLDNN__INCLUDE_TUTORIAL OFF CACHE BOOL "" FORCE) - if (WIN32) - set(CLDNN__ARCHITECTURE_TARGET "Windows64" CACHE STRING "" FORCE) - elseif (ANDROID) - set(CLDNN__ARCHITECTURE_TARGET "Android64" CACHE STRING "" FORCE) - else() - set(CLDNN__ARCHITECTURE_TARGET "Linux64" CACHE STRING "" FORCE) - endif() - - add_subdirectory(clDNN) - - # disable CLDNN docs build - set_target_properties(docs PROPERTIES EXCLUDE_FROM_ALL ON - FOLDER docs) - endif() - - function(ie_build_pugixml) - set(BUILD_TESTS_current ${BUILD_TESTS}) - set(BUILD_TESTS OFF CACHE BOOL "Build tests" FORCE) - add_subdirectory(pugixml) - set(BUILD_TESTS ${BUILD_TESTS_current} CACHE BOOL "Build tests" FORCE) - endfunction() - - if (USE_SYSTEM_PUGIXML) - find_package(PugiXML REQUIRED) - set_property(TARGET pugixml PROPERTY IMPORTED_GLOBAL TRUE) +if (ENABLE_CLDNN) + set(CLDNN__OUTPUT_BIN_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + set(CLDNN__OUTPUT_LIB_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + if (ENABLE_TESTS AND ENABLE_CLDNN_TESTS) + set(CLDNN__INCLUDE_TESTS ON CACHE BOOL "" FORCE) + set(CLDNN__INCLUDE_CORE_INTERNAL_TESTS ON CACHE BOOL "" FORCE) else() - ie_build_pugixml() - target_include_directories(pugixml INTERFACE "$") + set(CLDNN__INCLUDE_TESTS OFF CACHE BOOL "" FORCE) + set(CLDNN__INCLUDE_CORE_INTERNAL_TESTS OFF CACHE BOOL "" FORCE) endif() - add_subdirectory(stb_lib) - add_subdirectory(ade) - add_subdirectory(fluid/modules/gapi) - - set_target_properties(ade fluid stb_image - PROPERTIES FOLDER thirdparty) - - # developer package - - ie_developer_export_targets(ade fluid) - - if (NOT USE_SYSTEM_PUGIXML) - set_target_properties(pugixml PROPERTIES FOLDER thirdparty) - ie_developer_export_targets(pugixml) - if(TARGET pugixml_mt) - ie_developer_export_targets(pugixml_mt) - set_target_properties(pugixml_mt PROPERTIES FOLDER thirdparty) - endif() + set(CLDNN__INCLUDE_EXAMPLES OFF CACHE BOOL "" FORCE) + set(CLDNN__INCLUDE_TUTORIAL OFF CACHE BOOL "" FORCE) + if (WIN32) + set(CLDNN__ARCHITECTURE_TARGET "Windows64" CACHE STRING "" FORCE) + elseif (ANDROID) + set(CLDNN__ARCHITECTURE_TARGET "Android64" CACHE STRING "" FORCE) + else() + set(CLDNN__ARCHITECTURE_TARGET "Linux64" CACHE STRING "" FORCE) endif() - if(ENABLE_MKL_DNN) - set(SDL_cmake_included ON) - include(mkldnn.cmake) - endif() + add_subdirectory(clDNN) + + # disable CLDNN docs build + set_target_properties(docs PROPERTIES EXCLUDE_FROM_ALL ON FOLDER docs) +endif() + +function(ie_build_pugixml) + set(BUILD_TESTS_current ${BUILD_TESTS}) + set(BUILD_TESTS OFF CACHE BOOL "Build tests" FORCE) + add_subdirectory(pugixml) + set(BUILD_TESTS ${BUILD_TESTS_current} CACHE BOOL "Build tests" FORCE) endfunction() -build_with_lto() +if (USE_SYSTEM_PUGIXML) + find_package(PugiXML REQUIRED) + set_property(TARGET pugixml PROPERTY IMPORTED_GLOBAL TRUE) +else() + ie_build_pugixml() + target_include_directories(pugixml INTERFACE "$") +endif() + +add_subdirectory(stb_lib) +add_subdirectory(ade) +add_subdirectory(fluid/modules/gapi) + +set_target_properties(ade fluid stb_image PROPERTIES FOLDER thirdparty) + +# developer package + +ie_developer_export_targets(ade fluid) + +if (NOT USE_SYSTEM_PUGIXML) + set_target_properties(pugixml PROPERTIES FOLDER thirdparty) + ie_developer_export_targets(pugixml) + if(TARGET pugixml_mt) + ie_developer_export_targets(pugixml_mt) + set_target_properties(pugixml_mt PROPERTIES FOLDER thirdparty) + endif() +endif() + +if(ENABLE_MKL_DNN) + set(SDL_cmake_included ON) + include(mkldnn.cmake) +endif() diff --git a/inference-engine/thirdparty/movidius/CMakeLists.txt b/inference-engine/thirdparty/movidius/CMakeLists.txt index 8dacbc13fc9..e18cab65e15 100644 --- a/inference-engine/thirdparty/movidius/CMakeLists.txt +++ b/inference-engine/thirdparty/movidius/CMakeLists.txt @@ -10,7 +10,7 @@ if (ENABLE_MYRIAD) endif() # LTO usage leads to a linker fail on CentOS with the old 4.8.5 compiler during XLinkTests if(ENABLE_LTO AND NOT ENABLE_TESTS AND NOT XLINK_OLD_48_COMPILER) - ie_enable_lto() + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ${ENABLE_LTO}) endif() set(XLINK_DIR "${IE_MAIN_SOURCE_DIR}/thirdparty/movidius/XLink" CACHE PATH "path to Xlink") diff --git a/ngraph/cmake/external_protobuf.cmake b/ngraph/cmake/external_protobuf.cmake index 2059e8717ed..71406892453 100644 --- a/ngraph/cmake/external_protobuf.cmake +++ b/ngraph/cmake/external_protobuf.cmake @@ -20,27 +20,13 @@ include(FetchContent) # Download and install Google Protobuf ... #------------------------------------------------------------------------------ -# Since this file is going to be modifying CMAKE_*_FLAGS we need to preserve -# it so we won't overwrite the caller's CMAKE_*_FLAGS -set(PUSH_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) -set(PUSH_CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") -set(PUSH_CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") -set(PUSH_CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(PUSH_CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(PUSH_CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE}") - -set(CMAKE_CXX_FLAGS ${CMAKE_ORIGINAL_CXX_FLAGS}) -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_ORIGINAL_CXX_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_RELEASE "${CMAKE_ORIGINAL_C_FLAGS_RELEASE}") -set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_ORIGINAL_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_ORIGINAL_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_ORIGINAL_MODULE_LINKER_FLAGS_RELEASE}") +set(PUSH_CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE "${CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE}") +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF) if (MSVC) - string(REPLACE "/W3" "/W0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") set(protobuf_MSVC_STATIC_RUNTIME OFF CACHE BOOL "") else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -fno-lto") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error") endif() # This version of PROTOBUF is required by Microsoft ONNX Runtime. @@ -168,10 +154,5 @@ else() endif() endif() -# Now make sure we restore the original CMAKE_*_FLAGS for the caller -set(CMAKE_CXX_FLAGS ${PUSH_CMAKE_CXX_FLAGS}) -set(CMAKE_CXX_FLAGS_RELEASE "${PUSH_CMAKE_CXX_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_RELEASE "${PUSH_CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${PUSH_CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${PUSH_CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${PUSH_CMAKE_MODULE_LINKER_FLAGS_RELEASE}") +# Now make sure we restore the original flags +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE "${PUSH_CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE}")