* Enable LTO for oneDNN GPU * Use importer target for onednn_gpu * Fixed install of OpenCL, ittapi * Try to enable samples build * Fixed ie_wheel build * Disabled samples * Fixed incorrect install of pugixml in dynamic build * Fixed clDNN_unit_tests64 link * Minimized a number of hardcoded paths * Switched off ITT * Disable TBBBind for static Windows * Fixed link on Windows * Fixes * Static build for Window * Disable unit-tests * Disabled TF * Fixed add dependency for PDPD unit tests * Disabled GNA * Enabled ngraph test utils * Fixes * Fixes * Disable clDNN for static build on Windows * Dynamic MCVS runtime for OpenCL * Disable ITT traces for static libs * Ability to switch TBBBind_2_5 OFF * Disabled GPU on Windows build * Fixed libGNA link * Disabled some GNA tests * Fixed multiple definitions issue * Hide FrontEnd::load in DLL * Install libGNAStubs * Trying to fix Windows * Trying to fix frontends * Passed compilation on Windows * Updated install rules for ngraph backends * Try CPU, TEMPLATE tests * Enabled unit-tests * Enabled ngraph tests * Try to fix unit-test * Fixed unit-test on Linux * Fixed compilation with ENABLE_IR_V7_READER=OFF * Fixed tests on Linux * Enable cpuFuncTests only in static build * Try to fix testMockPluginFrontEnd test * Try to enable TF * Fixed python tests * Partial revert * Removed OV_FRONTEND_PATH
311 lines
13 KiB
CMake
311 lines
13 KiB
CMake
# Copyright (C) 2018-2021 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
cmake_policy(SET CMP0054 NEW)
|
|
|
|
# TODO: fix it
|
|
set_temp_directory(TEMP "${IE_MAIN_SOURCE_DIR}")
|
|
|
|
if(ENABLE_SAME_BRANCH_FOR_MODELS)
|
|
branchName(MODELS_BRANCH)
|
|
else()
|
|
set(MODELS_BRANCH "master")
|
|
endif()
|
|
|
|
if(ENABLE_DATA)
|
|
add_models_repo(${ENABLE_DATA} "data:https://github.com/openvinotoolkit/testdata.git")
|
|
set(MODELS_PATH "${TEMP}/models/src/data")
|
|
set(DATA_PATH "${MODELS_PATH}")
|
|
endif()
|
|
|
|
message(STATUS "MODELS_PATH=" ${MODELS_PATH})
|
|
|
|
fetch_models_and_validation_set()
|
|
|
|
if(COMMAND get_linux_name)
|
|
get_linux_name(LINUX_OS_NAME)
|
|
endif()
|
|
|
|
if(CMAKE_CROSSCOMPILING AND CMAKE_HOST_SYSTEM_NAME MATCHES Linux AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
|
|
set(protoc_version "3.9.2")
|
|
|
|
RESOLVE_DEPENDENCY(SYSTEM_PROTOC_ROOT
|
|
ARCHIVE_LIN "protoc-${protoc_version}-linux-x86_64.tar.gz"
|
|
TARGET_PATH "${TEMP}/protoc-${protoc_version}-linux-x86_64"
|
|
SHA256 "1d6da1d97d0cbfcd333558afe24533eb3cb48dc1e0ab5e971aa1e50ede8bcf45"
|
|
)
|
|
debug_message(STATUS "host protoc-${protoc_version} root path = " ${SYSTEM_PROTOC_ROOT})
|
|
|
|
reset_deps_cache(SYSTEM_PROTOC)
|
|
|
|
find_host_program(
|
|
SYSTEM_PROTOC
|
|
NAMES protoc
|
|
PATHS "${SYSTEM_PROTOC_ROOT}/bin"
|
|
NO_DEFAULT_PATH)
|
|
if(NOT SYSTEM_PROTOC)
|
|
message(FATAL_ERROR "[ONNX IMPORTER] Missing host protoc binary")
|
|
endif()
|
|
|
|
update_deps_cache(SYSTEM_PROTOC "${SYSTEM_PROTOC}" "Path to host protoc for ONNX Importer")
|
|
endif()
|
|
|
|
if(ENABLE_MYRIAD)
|
|
include(${IE_MAIN_SOURCE_DIR}/cmake/vpu_dependencies.cmake)
|
|
endif()
|
|
|
|
## Intel OMP package
|
|
if(THREADING STREQUAL "OMP")
|
|
reset_deps_cache(OMP)
|
|
if(WIN32 AND X86_64)
|
|
RESOLVE_DEPENDENCY(OMP
|
|
ARCHIVE_WIN "iomp.zip"
|
|
TARGET_PATH "${TEMP}/omp"
|
|
ENVIRONMENT "OMP"
|
|
VERSION_REGEX ".*_([a-z]*_([a-z0-9]+\\.)*[0-9]+).*"
|
|
SHA256 "62c68646747fb10f19b53217cb04a1e10ff93606f992e6b35eb8c31187c68fbf")
|
|
elseif(LINUX AND X86_64)
|
|
RESOLVE_DEPENDENCY(OMP
|
|
ARCHIVE_LIN "iomp.tgz"
|
|
TARGET_PATH "${TEMP}/omp"
|
|
ENVIRONMENT "OMP"
|
|
VERSION_REGEX ".*_([a-z]*_([a-z0-9]+\\.)*[0-9]+).*"
|
|
SHA256 "7832b16d82513ee880d97c27c7626f9525ebd678decf6a8fe6c38550f73227d9")
|
|
elseif(APPLE AND X86_64)
|
|
RESOLVE_DEPENDENCY(OMP
|
|
ARCHIVE_MAC "iomp_20190130_mac.tgz"
|
|
TARGET_PATH "${TEMP}/omp"
|
|
ENVIRONMENT "OMP"
|
|
VERSION_REGEX ".*_([a-z]*_([a-z0-9]+\\.)*[0-9]+).*"
|
|
SHA256 "591ea4a7e08bbe0062648916f42bded71d24c27f00af30a8f31a29b5878ea0cc")
|
|
else()
|
|
message(FATAL_ERROR "Intel OMP is not available on current platform")
|
|
endif()
|
|
update_deps_cache(OMP "${OMP}" "Path to OMP root folder")
|
|
debug_message(STATUS "intel_omp=" ${OMP})
|
|
|
|
ie_cpack_add_component(omp REQUIRED)
|
|
file(GLOB_RECURSE source_list "${OMP}/*${CMAKE_SHARED_LIBRARY_SUFFIX}*")
|
|
install(FILES ${source_list}
|
|
DESTINATION "runtime/3rdparty/omp/lib"
|
|
COMPONENT omp)
|
|
endif()
|
|
|
|
## TBB package
|
|
if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO")
|
|
reset_deps_cache(TBBROOT TBB_DIR)
|
|
|
|
if(DEFINED ENV{THIRDPARTY_SERVER_PATH})
|
|
set(IE_PATH_TO_DEPS "$ENV{THIRDPARTY_SERVER_PATH}")
|
|
elseif(DEFINED THIRDPARTY_SERVER_PATH)
|
|
set(IE_PATH_TO_DEPS "${THIRDPARTY_SERVER_PATH}")
|
|
endif()
|
|
|
|
if(WIN32 AND X86_64)
|
|
# TODO: add target_path to be platform specific as well, to avoid following if
|
|
RESOLVE_DEPENDENCY(TBB
|
|
ARCHIVE_WIN "tbb2020_20200415_win.zip"
|
|
TARGET_PATH "${TEMP}/tbb"
|
|
ENVIRONMENT "TBBROOT"
|
|
SHA256 "f1c9b9e2861efdaa01552bd25312ccbc5feeb45551e5f91ae61e29221c5c1479")
|
|
if(ENABLE_TBBBIND_2_5)
|
|
RESOLVE_DEPENDENCY(TBBBIND_2_5
|
|
ARCHIVE_WIN "tbbbind_2_5_static_win_v1.zip"
|
|
TARGET_PATH "${TEMP}/tbbbind_2_5"
|
|
ENVIRONMENT "TBBBIND_2_5_ROOT"
|
|
SHA256 "a67afeea8cf194f97968c800dab5b5459972908295242e282045d6b8953573c1")
|
|
else()
|
|
message(WARNING "prebuilt TBBBIND_2_5 is not available.
|
|
Build oneTBB from sources and set TBBROOT environment var before OpenVINO cmake configure")
|
|
endif()
|
|
elseif(ANDROID) # Should be before LINUX due LINUX is detected as well
|
|
RESOLVE_DEPENDENCY(TBB
|
|
ARCHIVE_ANDROID "tbb2020_20200404_android.tgz"
|
|
TARGET_PATH "${TEMP}/tbb"
|
|
ENVIRONMENT "TBBROOT"
|
|
SHA256 "f42d084224cc2d643314bd483ad180b081774608844000f132859fca3e9bf0ce")
|
|
elseif(LINUX AND X86_64)
|
|
RESOLVE_DEPENDENCY(TBB
|
|
ARCHIVE_LIN "tbb2020_20200415_lin_strip.tgz"
|
|
TARGET_PATH "${TEMP}/tbb"
|
|
ENVIRONMENT "TBBROOT"
|
|
SHA256 "95b2f3b0b70c7376a0c7de351a355c2c514b42c4966e77e3e34271a599501008")
|
|
if(ENABLE_TBBBIND_2_5)
|
|
RESOLVE_DEPENDENCY(TBBBIND_2_5
|
|
ARCHIVE_LIN "tbbbind_2_5_static_lin_v2.tgz"
|
|
TARGET_PATH "${TEMP}/tbbbind_2_5"
|
|
ENVIRONMENT "TBBBIND_2_5_ROOT"
|
|
SHA256 "865e7894c58402233caf0d1b288056e0e6ab2bf7c9d00c9dc60561c484bc90f4")
|
|
else()
|
|
message(WARNING "prebuilt TBBBIND_2_5 is not available.
|
|
Build oneTBB from sources and set TBBROOT environment var before OpenVINO cmake configure")
|
|
endif()
|
|
elseif(LINUX AND AARCH64)
|
|
RESOLVE_DEPENDENCY(TBB
|
|
ARCHIVE_LIN "keembay/tbb2020_38404_kmb_lic.tgz"
|
|
TARGET_PATH "${TEMP}/tbb_yocto"
|
|
ENVIRONMENT "TBBROOT"
|
|
SHA256 "321261ff2eda6d4568a473cb883262bce77a93dac599f7bd65d2918bdee4d75b")
|
|
elseif(APPLE AND X86_64)
|
|
RESOLVE_DEPENDENCY(TBB
|
|
ARCHIVE_MAC "tbb2020_20200404_mac.tgz"
|
|
TARGET_PATH "${TEMP}/tbb"
|
|
ENVIRONMENT "TBBROOT"
|
|
SHA256 "ad9cf52e657660058aa6c6844914bc0fc66241fec89a392d8b79a7ff69c3c7f6")
|
|
else()
|
|
message(FATAL_ERROR "TBB is not available on current platform")
|
|
endif()
|
|
|
|
update_deps_cache(TBBROOT "${TBB}" "Path to TBB root folder")
|
|
if(EXISTS "${TBBROOT}/lib/cmake/TBB/TBBConfig.cmake")
|
|
# oneTBB case
|
|
update_deps_cache(TBB_DIR "${TBB}/lib/cmake/TBB" "Path to TBB cmake folder")
|
|
else()
|
|
update_deps_cache(TBB_DIR "${TBB}/cmake" "Path to TBB cmake folder")
|
|
endif()
|
|
|
|
update_deps_cache(TBBBIND_2_5_DIR "${TBBBIND_2_5}/cmake" "Path to TBBBIND_2_5 cmake folder")
|
|
debug_message(STATUS "tbb=" ${TBB})
|
|
|
|
if(DEFINED IE_PATH_TO_DEPS)
|
|
unset(IE_PATH_TO_DEPS)
|
|
endif()
|
|
endif()
|
|
|
|
## OpenCV
|
|
if(ENABLE_OPENCV)
|
|
reset_deps_cache(OpenCV_DIR)
|
|
|
|
set(OPENCV_VERSION "4.5.2")
|
|
set(OPENCV_BUILD "076")
|
|
set(OPENCV_BUILD_YOCTO "772")
|
|
|
|
if(AARCH64)
|
|
if(DEFINED ENV{THIRDPARTY_SERVER_PATH})
|
|
set(IE_PATH_TO_DEPS "$ENV{THIRDPARTY_SERVER_PATH}")
|
|
elseif(DEFINED THIRDPARTY_SERVER_PATH)
|
|
set(IE_PATH_TO_DEPS "${THIRDPARTY_SERVER_PATH}")
|
|
else()
|
|
message(WARNING "OpenCV is not found!")
|
|
endif()
|
|
|
|
if(DEFINED IE_PATH_TO_DEPS)
|
|
set(OPENCV_SUFFIX "yocto_kmb")
|
|
set(OPENCV_BUILD "${OPENCV_BUILD_YOCTO}")
|
|
|
|
RESOLVE_DEPENDENCY(OPENCV
|
|
ARCHIVE_LIN "opencv/opencv_${OPENCV_VERSION}-${OPENCV_BUILD}_${OPENCV_SUFFIX}.txz"
|
|
TARGET_PATH "${TEMP}/opencv_${OPENCV_VERSION}_${OPENCV_SUFFIX}/opencv"
|
|
ENVIRONMENT "OpenCV_DIR"
|
|
VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*"
|
|
SHA256 "23c250796ad5fc9db810e1680ccdb32c45dc0e50cace5e0f02b30faf652fe343")
|
|
|
|
unset(IE_PATH_TO_DEPS)
|
|
endif()
|
|
else()
|
|
if(WIN32 AND X86_64)
|
|
RESOLVE_DEPENDENCY(OPENCV
|
|
ARCHIVE_WIN "opencv/opencv_${OPENCV_VERSION}-${OPENCV_BUILD}.txz"
|
|
TARGET_PATH "${TEMP}/opencv_${OPENCV_VERSION}/opencv"
|
|
ENVIRONMENT "OpenCV_DIR"
|
|
VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*"
|
|
SHA256 "a14f872e6b63b6ac12c7ff47fa49e578d14c14433b57f5d85ab5dd48a079938c")
|
|
elseif(APPLE AND X86_64)
|
|
RESOLVE_DEPENDENCY(OPENCV
|
|
ARCHIVE_MAC "opencv/opencv_${OPENCV_VERSION}-${OPENCV_BUILD}_osx.txz"
|
|
TARGET_PATH "${TEMP}/opencv_${OPENCV_VERSION}_osx/opencv"
|
|
ENVIRONMENT "OpenCV_DIR"
|
|
VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*"
|
|
SHA256 "3e162f96e86cba8836618134831d9cf76df0438778b3e27e261dedad9254c514")
|
|
elseif(LINUX)
|
|
if(AARCH64)
|
|
set(OPENCV_SUFFIX "yocto_kmb")
|
|
set(OPENCV_BUILD "${OPENCV_BUILD_YOCTO}")
|
|
elseif(ARM)
|
|
set(OPENCV_SUFFIX "debian9arm")
|
|
set(OPENCV_HASH "4274f8c40b17215f4049096b524e4a330519f3e76813c5a3639b69c48633d34e")
|
|
elseif((LINUX_OS_NAME STREQUAL "CentOS 7" OR
|
|
CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9") AND X86_64)
|
|
set(OPENCV_SUFFIX "centos7")
|
|
set(OPENCV_HASH "5fa76985c84fe7c64531682ef0b272510c51ac0d0565622514edf1c88b33404a")
|
|
elseif(LINUX_OS_NAME MATCHES "CentOS 8" AND X86_64)
|
|
set(OPENCV_SUFFIX "centos8")
|
|
set(OPENCV_HASH "db087dfd412eedb8161636ec083ada85ff278109948d1d62a06b0f52e1f04202")
|
|
elseif(LINUX_OS_NAME STREQUAL "Ubuntu 16.04" AND X86_64)
|
|
set(OPENCV_SUFFIX "ubuntu16")
|
|
set(OPENCV_HASH "cd46831b4d8d1c0891d8d22ff5b2670d0a465a8a8285243059659a50ceeae2c3")
|
|
elseif(LINUX_OS_NAME STREQUAL "Ubuntu 18.04" AND X86_64)
|
|
set(OPENCV_SUFFIX "ubuntu18")
|
|
set(OPENCV_HASH "db087dfd412eedb8161636ec083ada85ff278109948d1d62a06b0f52e1f04202")
|
|
elseif((LINUX_OS_NAME STREQUAL "Ubuntu 20.04" OR LINUX_OS_NAME STREQUAL "LinuxMint 20.1") AND X86_64)
|
|
set(OPENCV_SUFFIX "ubuntu20")
|
|
set(OPENCV_HASH "2fe7bbc40e1186eb8d099822038cae2821abf617ac7a16fadf98f377c723e268")
|
|
elseif(NOT DEFINED OpenCV_DIR AND NOT DEFINED ENV{OpenCV_DIR})
|
|
message(FATAL_ERROR "OpenCV is not available on current platform (${LINUX_OS_NAME})")
|
|
endif()
|
|
RESOLVE_DEPENDENCY(OPENCV
|
|
ARCHIVE_LIN "opencv/opencv_${OPENCV_VERSION}-${OPENCV_BUILD}_${OPENCV_SUFFIX}.txz"
|
|
TARGET_PATH "${TEMP}/opencv_${OPENCV_VERSION}_${OPENCV_SUFFIX}/opencv"
|
|
ENVIRONMENT "OpenCV_DIR"
|
|
VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+).*"
|
|
SHA256 ${OPENCV_HASH})
|
|
endif()
|
|
endif()
|
|
|
|
if(ANDROID)
|
|
set(ocv_cmake_path "${OPENCV}/sdk/native/jni/")
|
|
else()
|
|
set(ocv_cmake_path "${OPENCV}/cmake")
|
|
endif()
|
|
|
|
update_deps_cache(OpenCV_DIR "${ocv_cmake_path}" "Path to OpenCV package folder")
|
|
debug_message(STATUS "opencv=" ${OPENCV})
|
|
else()
|
|
reset_deps_cache(OpenCV_DIR)
|
|
endif()
|
|
|
|
include(${IE_MAIN_SOURCE_DIR}/cmake/ie_parallel.cmake)
|
|
|
|
if(ENABLE_GNA)
|
|
reset_deps_cache(
|
|
GNA
|
|
GNA_PLATFORM_DIR
|
|
GNA_KERNEL_LIB_NAME
|
|
GNA_LIBS_LIST
|
|
GNA_LIB_DIR
|
|
libGNA_INCLUDE_DIRS
|
|
libGNA_LIBRARIES_BASE_PATH)
|
|
if(GNA_LIBRARY_VERSION STREQUAL "GNA1")
|
|
RESOLVE_DEPENDENCY(GNA
|
|
ARCHIVE_UNIFIED "GNA/gna_20181120.zip"
|
|
TARGET_PATH "${TEMP}/gna"
|
|
SHA256 "b631d6cc5f6cca4a89a3f5dfa383066f3282fee25d633d9085c605bdd8090210")
|
|
else()
|
|
if(GNA_LIBRARY_VERSION STREQUAL "GNA1_1401")
|
|
set(GNA_VERSION "01.00.00.1401")
|
|
set(GNA_HASH "cc954e67525006bf8bd353a6682e38bf208f6d74e973e0fc292850e721f17452")
|
|
endif()
|
|
if(GNA_LIBRARY_VERSION STREQUAL "GNA2")
|
|
set(GNA_VERSION "03.00.00.1377")
|
|
set(GNA_HASH "d45fb48994d8c2803a16e88e29ae48851066325b97c1c6c4a5bf4f4573d55c65")
|
|
endif()
|
|
|
|
set(FILES_TO_EXTRACT_LIST gna_${GNA_VERSION}/include)
|
|
if(WIN32)
|
|
LIST(APPEND FILES_TO_EXTRACT_LIST gna_${GNA_VERSION}/win64)
|
|
else()
|
|
LIST(APPEND FILES_TO_EXTRACT_LIST gna_${GNA_VERSION}/linux)
|
|
endif()
|
|
|
|
RESOLVE_DEPENDENCY(GNA
|
|
ARCHIVE_UNIFIED "GNA/GNA_${GNA_VERSION}.zip"
|
|
TARGET_PATH "${TEMP}/gna_${GNA_VERSION}"
|
|
VERSION_REGEX ".*_([0-9]+.[0-9]+.[0-9]+.[0-9]+).*"
|
|
FILES_TO_EXTRACT FILES_TO_EXTRACT_LIST
|
|
SHA256 ${GNA_HASH})
|
|
endif()
|
|
update_deps_cache(GNA "${GNA}" "Path to GNA root folder")
|
|
debug_message(STATUS "gna=" ${GNA})
|
|
endif()
|