OpenVINO requires TBB 2017.0 or higher (#12934)
* Added a error message if cmake < 3.16 is used with tbb.pc * TBB * Updates * Ignore old TBBs * Handle minimal version via pkg-config as well
This commit is contained in:
parent
53319e60fc
commit
9d55355daf
@ -118,7 +118,7 @@ function(ov_download_tbb)
|
|||||||
ENVIRONMENT "TBBROOT"
|
ENVIRONMENT "TBBROOT"
|
||||||
SHA256 "ad9cf52e657660058aa6c6844914bc0fc66241fec89a392d8b79a7ff69c3c7f6")
|
SHA256 "ad9cf52e657660058aa6c6844914bc0fc66241fec89a392d8b79a7ff69c3c7f6")
|
||||||
else()
|
else()
|
||||||
message(WARNING "TBB is not available on current platform")
|
message(WARNING "Prebuilt TBB is not available on current platform")
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -27,9 +27,9 @@ unset(TBB_DIR)
|
|||||||
unset(TBB_DIR CACHE)
|
unset(TBB_DIR CACHE)
|
||||||
|
|
||||||
find_package(TBB
|
find_package(TBB
|
||||||
|
2017.0
|
||||||
CONFIG
|
CONFIG
|
||||||
PATHS ${TBBROOT}/cmake
|
PATHS "${IEDevScripts_DIR}/${IE_OWN_TBB_CONFIG}"
|
||||||
${IEDevScripts_DIR}/${IE_OWN_TBB_CONFIG}
|
|
||||||
NO_DEFAULT_PATH
|
NO_DEFAULT_PATH
|
||||||
NO_CMAKE_FIND_ROOT_PATH)
|
NO_CMAKE_FIND_ROOT_PATH)
|
||||||
|
|
45
cmake/developer_package/tbb/lnx/TBBConfig-version.cmake
Normal file
45
cmake/developer_package/tbb/lnx/TBBConfig-version.cmake
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# Copyright (C) 2018-2022 Intel Corporation
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
if (NOT TBBROOT)
|
||||||
|
if(DEFINED ENV{TBBROOT})
|
||||||
|
set (TBBROOT $ENV{TBBROOT})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_tbb_root ${TBBROOT})
|
||||||
|
|
||||||
|
# detect version
|
||||||
|
find_file(_tbb_def_header tbb_stddef.h HINTS "${_tbb_root}/include/tbb")
|
||||||
|
|
||||||
|
if (_tbb_def_header)
|
||||||
|
file(READ "${_tbb_def_header}" _tbb_def_content)
|
||||||
|
string(REGEX MATCH "TBB_VERSION_MAJOR[ ]*[0-9]*" _tbb_version_major ${_tbb_def_content})
|
||||||
|
string(REGEX MATCH "[0-9][0-9]*" _tbb_version_major ${_tbb_version_major})
|
||||||
|
|
||||||
|
string(REGEX MATCH "TBB_VERSION_MINOR[ ]*[0-9]" _tbb_version_minor ${_tbb_def_content})
|
||||||
|
string(REGEX MATCH "[0-9][0-9]*" _tbb_version_minor ${_tbb_version_minor})
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION_MAJOR ${_tbb_version_major})
|
||||||
|
set(PACKAGE_VERSION_MINOR ${_tbb_version_minor})
|
||||||
|
set(PACKAGE_VERSION_PATCH 0)
|
||||||
|
else()
|
||||||
|
set(PACKAGE_VERSION_MAJOR 0)
|
||||||
|
set(PACKAGE_VERSION_MINOR 0)
|
||||||
|
set(PACKAGE_VERSION_PATCH 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION_EXACT False)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE False)
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
|
||||||
|
set(PACKAGE_VERSION_EXACT True)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION_MAJOR VERSION_LESS_EQUAL PACKAGE_VERSION_MAJOR)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||||
|
endif()
|
45
cmake/developer_package/tbb/mac/TBBConfig-version.cmake
Normal file
45
cmake/developer_package/tbb/mac/TBBConfig-version.cmake
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# Copyright (C) 2018-2022 Intel Corporation
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
if (NOT TBBROOT)
|
||||||
|
if(DEFINED ENV{TBBROOT})
|
||||||
|
set (TBBROOT $ENV{TBBROOT})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_tbb_root ${TBBROOT})
|
||||||
|
|
||||||
|
# detect version
|
||||||
|
find_file(_tbb_def_header tbb_stddef.h HINTS "${_tbb_root}/include/tbb")
|
||||||
|
|
||||||
|
if (_tbb_def_header)
|
||||||
|
file(READ "${_tbb_def_header}" _tbb_def_content)
|
||||||
|
string(REGEX MATCH "TBB_VERSION_MAJOR[ ]*[0-9]*" _tbb_version_major ${_tbb_def_content})
|
||||||
|
string(REGEX MATCH "[0-9][0-9]*" _tbb_version_major ${_tbb_version_major})
|
||||||
|
|
||||||
|
string(REGEX MATCH "TBB_VERSION_MINOR[ ]*[0-9]" _tbb_version_minor ${_tbb_def_content})
|
||||||
|
string(REGEX MATCH "[0-9][0-9]*" _tbb_version_minor ${_tbb_version_minor})
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION_MAJOR ${_tbb_version_major})
|
||||||
|
set(PACKAGE_VERSION_MINOR ${_tbb_version_minor})
|
||||||
|
set(PACKAGE_VERSION_PATCH 0)
|
||||||
|
else()
|
||||||
|
set(PACKAGE_VERSION_MAJOR 0)
|
||||||
|
set(PACKAGE_VERSION_MINOR 0)
|
||||||
|
set(PACKAGE_VERSION_PATCH 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION_EXACT False)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE False)
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
|
||||||
|
set(PACKAGE_VERSION_EXACT True)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION_MAJOR VERSION_LESS_EQUAL PACKAGE_VERSION_MAJOR)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||||
|
endif()
|
45
cmake/developer_package/tbb/win/TBBConfig-version.cmake
Normal file
45
cmake/developer_package/tbb/win/TBBConfig-version.cmake
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# Copyright (C) 2018-2022 Intel Corporation
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
if (NOT TBBROOT)
|
||||||
|
if(DEFINED ENV{TBBROOT})
|
||||||
|
set (TBBROOT $ENV{TBBROOT})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_tbb_root ${TBBROOT})
|
||||||
|
|
||||||
|
# detect version
|
||||||
|
find_file(_tbb_def_header tbb_stddef.h HINTS "${_tbb_root}/include/tbb")
|
||||||
|
|
||||||
|
if (_tbb_def_header)
|
||||||
|
file(READ "${_tbb_def_header}" _tbb_def_content)
|
||||||
|
string(REGEX MATCH "TBB_VERSION_MAJOR[ ]*[0-9]*" _tbb_version_major ${_tbb_def_content})
|
||||||
|
string(REGEX MATCH "[0-9][0-9]*" _tbb_version_major ${_tbb_version_major})
|
||||||
|
|
||||||
|
string(REGEX MATCH "TBB_VERSION_MINOR[ ]*[0-9]" _tbb_version_minor ${_tbb_def_content})
|
||||||
|
string(REGEX MATCH "[0-9][0-9]*" _tbb_version_minor ${_tbb_version_minor})
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION_MAJOR ${_tbb_version_major})
|
||||||
|
set(PACKAGE_VERSION_MINOR ${_tbb_version_minor})
|
||||||
|
set(PACKAGE_VERSION_PATCH 0)
|
||||||
|
else()
|
||||||
|
set(PACKAGE_VERSION_MAJOR 0)
|
||||||
|
set(PACKAGE_VERSION_MINOR 0)
|
||||||
|
set(PACKAGE_VERSION_PATCH 0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION "${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}.${PACKAGE_VERSION_PATCH}")
|
||||||
|
|
||||||
|
set(PACKAGE_VERSION_EXACT False)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE False)
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
|
||||||
|
set(PACKAGE_VERSION_EXACT True)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(PACKAGE_FIND_VERSION_MAJOR VERSION_LESS_EQUAL PACKAGE_VERSION_MAJOR)
|
||||||
|
set(PACKAGE_VERSION_COMPATIBLE True)
|
||||||
|
endif()
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
macro(ov_find_package_tbb)
|
macro(ov_find_package_tbb)
|
||||||
if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO" AND NOT TBB_FOUND)
|
if(THREADING STREQUAL "TBB" OR THREADING STREQUAL "TBB_AUTO" AND NOT TBB_FOUND)
|
||||||
|
set(_ov_minimal_tbb_version 2017.0)
|
||||||
|
|
||||||
if(NOT ENABLE_SYSTEM_TBB)
|
if(NOT ENABLE_SYSTEM_TBB)
|
||||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
|
||||||
@ -24,7 +25,7 @@ macro(ov_find_package_tbb)
|
|||||||
unset(_no_cmake_install_prefix)
|
unset(_no_cmake_install_prefix)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(TBB QUIET COMPONENTS tbb tbbmalloc
|
find_package(TBB ${_ov_minimal_tbb_version} QUIET COMPONENTS tbb tbbmalloc
|
||||||
${_find_package_no_args})
|
${_find_package_no_args})
|
||||||
|
|
||||||
if(NOT TBB_FOUND)
|
if(NOT TBB_FOUND)
|
||||||
@ -36,19 +37,27 @@ macro(ov_find_package_tbb)
|
|||||||
if(NOT ANDROID AND ENABLE_SYSTEM_TBB)
|
if(NOT ANDROID AND ENABLE_SYSTEM_TBB)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
if(PkgConfig_FOUND)
|
if(PkgConfig_FOUND)
|
||||||
|
macro(_ov_pkg_config_tbb_unset)
|
||||||
|
# unset since it affects OpenVINOConfig.cmake.in
|
||||||
|
unset(tbb_FOUND)
|
||||||
|
unset(tbb_FOUND CACHE)
|
||||||
|
endmacro()
|
||||||
pkg_search_module(tbb QUIET
|
pkg_search_module(tbb QUIET
|
||||||
IMPORTED_TARGET GLOBAL
|
IMPORTED_TARGET GLOBAL
|
||||||
tbb)
|
tbb)
|
||||||
if(tbb_FOUND)
|
if(tbb_FOUND)
|
||||||
if(TARGET PkgConfig::tbb)
|
# parse version
|
||||||
|
string(REGEX REPLACE "~.*" "" tbb_VERSION_PATCHED "${tbb_VERSION}")
|
||||||
|
if(tbb_VERSION_PATCHED VERSION_LESS _ov_minimal_tbb_version)
|
||||||
|
_ov_pkg_config_tbb_unset()
|
||||||
|
message(WARNING "Found TBB ${tbb_VERSION} via ${PKG_CONFIG_EXECUTABLE} while OpenVINO requies ${_ov_minimal_tbb_version} at least")
|
||||||
|
elseif(TARGET PkgConfig::tbb)
|
||||||
add_library(TBB::tbb ALIAS PkgConfig::tbb)
|
add_library(TBB::tbb ALIAS PkgConfig::tbb)
|
||||||
set(TBB_VERSION ${tbb_VERSION})
|
set(TBB_VERSION ${tbb_VERSION})
|
||||||
set(TBB_FOUND ${tbb_FOUND})
|
set(TBB_FOUND ${tbb_FOUND})
|
||||||
message(STATUS "${PKG_CONFIG_EXECUTABLE}: tbb (${tbb_VERSION}) is found at ${tbb_PREFIX}")
|
message(STATUS "${PKG_CONFIG_EXECUTABLE}: tbb (${tbb_VERSION}) is found at ${tbb_PREFIX}")
|
||||||
else()
|
else()
|
||||||
# unset since it affects OpenVINOConfig.cmake.in
|
_ov_pkg_config_tbb_unset()
|
||||||
unset(tbb_FOUND)
|
|
||||||
unset(tbb_FOUND CACHE)
|
|
||||||
|
|
||||||
if(CPACK_GENERATOR STREQUAL "DEB")
|
if(CPACK_GENERATOR STREQUAL "DEB")
|
||||||
# debian cpack generator requires system TBB
|
# debian cpack generator requires system TBB
|
||||||
@ -72,15 +81,18 @@ macro(ov_find_package_tbb)
|
|||||||
|
|
||||||
# fallback variant for TBB 2018 and older where TBB have not had cmake interface
|
# fallback variant for TBB 2018 and older where TBB have not had cmake interface
|
||||||
if(DEFINED TBBROOT OR DEFINED ENV{TBBROOT})
|
if(DEFINED TBBROOT OR DEFINED ENV{TBBROOT})
|
||||||
set(_tbb_paths PATHS ${IEDevScripts_DIR})
|
# note: if TBB older than 2017.0 is passed, cmake will skip it and THREADING=SEQ will be used
|
||||||
|
set(_tbb_paths PATHS "${IEDevScripts_DIR}/tbb")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# try to find one more time
|
# try to find one more time
|
||||||
find_package(TBB QUIET COMPONENTS tbb tbbmalloc
|
find_package(TBB QUIET COMPONENTS tbb tbbmalloc
|
||||||
# can be provided by ov_download_tbb
|
# TBB_DIR can be provided by ov_download_tbb
|
||||||
HINTS ${TBB_DIR}
|
HINTS ${TBB_DIR}
|
||||||
${_tbb_paths}
|
${_tbb_paths}
|
||||||
${_find_package_no_args})
|
${_find_package_no_args}
|
||||||
|
NO_CMAKE_PATH
|
||||||
|
NO_CMAKE_ENVIRONMENT_PATH)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user