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"
|
||||
SHA256 "ad9cf52e657660058aa6c6844914bc0fc66241fec89a392d8b79a7ff69c3c7f6")
|
||||
else()
|
||||
message(WARNING "TBB is not available on current platform")
|
||||
message(WARNING "Prebuilt TBB is not available on current platform")
|
||||
return()
|
||||
endif()
|
||||
|
||||
|
@ -27,9 +27,9 @@ unset(TBB_DIR)
|
||||
unset(TBB_DIR CACHE)
|
||||
|
||||
find_package(TBB
|
||||
2017.0
|
||||
CONFIG
|
||||
PATHS ${TBBROOT}/cmake
|
||||
${IEDevScripts_DIR}/${IE_OWN_TBB_CONFIG}
|
||||
PATHS "${IEDevScripts_DIR}/${IE_OWN_TBB_CONFIG}"
|
||||
NO_DEFAULT_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)
|
||||
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(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
|
||||
@ -24,7 +25,7 @@ macro(ov_find_package_tbb)
|
||||
unset(_no_cmake_install_prefix)
|
||||
endif()
|
||||
|
||||
find_package(TBB QUIET COMPONENTS tbb tbbmalloc
|
||||
find_package(TBB ${_ov_minimal_tbb_version} QUIET COMPONENTS tbb tbbmalloc
|
||||
${_find_package_no_args})
|
||||
|
||||
if(NOT TBB_FOUND)
|
||||
@ -36,19 +37,27 @@ macro(ov_find_package_tbb)
|
||||
if(NOT ANDROID AND ENABLE_SYSTEM_TBB)
|
||||
find_package(PkgConfig QUIET)
|
||||
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
|
||||
IMPORTED_TARGET GLOBAL
|
||||
tbb)
|
||||
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)
|
||||
set(TBB_VERSION ${tbb_VERSION})
|
||||
set(TBB_FOUND ${tbb_FOUND})
|
||||
message(STATUS "${PKG_CONFIG_EXECUTABLE}: tbb (${tbb_VERSION}) is found at ${tbb_PREFIX}")
|
||||
else()
|
||||
# unset since it affects OpenVINOConfig.cmake.in
|
||||
unset(tbb_FOUND)
|
||||
unset(tbb_FOUND CACHE)
|
||||
_ov_pkg_config_tbb_unset()
|
||||
|
||||
if(CPACK_GENERATOR STREQUAL "DEB")
|
||||
# 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
|
||||
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()
|
||||
|
||||
# try to find one more time
|
||||
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}
|
||||
${_tbb_paths}
|
||||
${_find_package_no_args})
|
||||
${_find_package_no_args}
|
||||
NO_CMAKE_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user