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)
# 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"
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)
# 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)
# 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()
#
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]
# [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)
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
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})
# 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)
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("")
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
find_package(TBB)
endif()
-find_package(Threads REQUIRED)
\ No newline at end of file
+find_package(Threads REQUIRED)
# 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)
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")
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)
${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"
set(TARGET_NAME "GNAPlugin")
-if(ENABLE_LTO)
- ie_enable_lto()
-endif()
-
file(GLOB_RECURSE SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
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 $<$<CXX_COMPILER_ID:MSVC>:/bigobj> )
- target_compile_options(${TARGET_NAME}_test_static PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/bigobj> )
-endif()
+set_target_properties(${TARGET_NAME} ${TARGET_NAME}_test_static
+ PROPERTIES INTERPROCEDURAL_OPTIMIZATION ${ENABLE_LTO})
# install
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"
)
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})
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
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")
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)
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")
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)
target_link_libraries(${TARGET_NAME} PRIVATE inference_engine openvino::itt)
target_include_directories(${TARGET_NAME} PUBLIC ${PUBLIC_HEADERS_DIR}
- $<TARGET_PROPERTY:inference_engine_plugin_api,INTERFACE_INCLUDE_DIRECTORIES>)
+ $<TARGET_PROPERTY:inference_engine_plugin_api,INTERFACE_INCLUDE_DIRECTORIES>)
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})
set(TARGET_NAME "MKLDNNPlugin")
-if(ENABLE_LTO)
- ie_enable_lto()
-endif()
-
if (WIN32)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX")
endif()
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")
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"
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
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)
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})
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)
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})
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)
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})
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)
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})
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)
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})
"${IE_MAIN_SOURCE_DIR}/thirdparty/movidius"
"${CMAKE_CURRENT_BINARY_DIR}/thirdparty/movidius")
- #
- # Build plugins
- #
+ #
+ # Build plugins
+ #
add_subdirectory(myriad_plugin)
# 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)
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
# 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)
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)
# SPDX-License-Identifier: Apache-2.0
#
-if(ENABLE_LTO)
- ie_enable_lto()
-endif()
-
set(TARGET_NAME "myriadPlugin")
file(GLOB_RECURSE SOURCES *.cpp *.hpp *.h)
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
# 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()
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()
# 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)
# 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"
+ $<TARGET_PROPERTY:ngraphFunctions,INTERFACE_INCLUDE_DIRECTORIES>
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
+)
# 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)
add_subdirectory(behavior)
endif()
-disable_deprecated_warnings()
-
if(ENABLE_TESTS)
add_subdirectory(unit)
endif()
set(TARGET_NAME InferenceEngineUnitTests)
+disable_deprecated_warnings()
+
# rpath enabled for unit tests only
SET (CMAKE_SKIP_RPATH OFF)
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 $<$<CXX_COMPILER_ID:Clang>: -Wno-error=inconsistent-missing-override >)
target_compile_options(${TARGET_NAME} PRIVATE $<$<CXX_COMPILER_ID:AppleClang>: -Wno-error=inconsistent-missing-override >)
# 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()
+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)
+ add_subdirectory(clDNN)
- # disable CLDNN docs build
- set_target_properties(docs PROPERTIES EXCLUDE_FROM_ALL ON
- FOLDER docs)
- endif()
+ # 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()
+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)
- else()
- ie_build_pugixml()
- target_include_directories(pugixml INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src>")
- endif()
- add_subdirectory(stb_lib)
- add_subdirectory(ade)
- add_subdirectory(fluid/modules/gapi)
+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 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/pugixml/src>")
+endif()
- set_target_properties(ade fluid stb_image
- PROPERTIES FOLDER thirdparty)
+add_subdirectory(stb_lib)
+add_subdirectory(ade)
+add_subdirectory(fluid/modules/gapi)
- # developer package
+set_target_properties(ade fluid stb_image PROPERTIES FOLDER thirdparty)
- ie_developer_export_targets(ade fluid)
+# developer package
- 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()
+ie_developer_export_targets(ade fluid)
- if(ENABLE_MKL_DNN)
- set(SDL_cmake_included ON)
- include(mkldnn.cmake)
+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()
-endfunction()
+endif()
-build_with_lto()
+if(ENABLE_MKL_DNN)
+ set(SDL_cmake_included ON)
+ include(mkldnn.cmake)
+endif()
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")
# 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.
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}")