diff --git a/3rdparty/tbb/CMakeLists.txt b/3rdparty/tbb/CMakeLists.txt index a085b0f3ca6d..50f3e6ccf150 100644 --- a/3rdparty/tbb/CMakeLists.txt +++ b/3rdparty/tbb/CMakeLists.txt @@ -170,4 +170,4 @@ ocv_install_target(tbb EXPORT OpenCVModules ocv_install_3rdparty_licenses(tbb "${tbb_src_dir}/LICENSE" "${tbb_src_dir}/README") -ocv_tbb_read_version("${tbb_src_dir}/include") +ocv_tbb_read_version("${tbb_src_dir}/include" tbb) diff --git a/cmake/OpenCVDetectTBB.cmake b/cmake/OpenCVDetectTBB.cmake index 38137f44f0ac..1154bb1d0f5d 100644 --- a/cmake/OpenCVDetectTBB.cmake +++ b/cmake/OpenCVDetectTBB.cmake @@ -19,7 +19,7 @@ # - "tbb" target exists and added to OPENCV_LINKER_LIBS function(ocv_tbb_cmake_guess _found) - find_package(TBB QUIET COMPONENTS tbb PATHS "$ENV{TBBROOT}/cmake") + find_package(TBB QUIET COMPONENTS tbb PATHS "$ENV{TBBROOT}/cmake" "$ENV{TBBROOT}/lib/cmake/tbb") if(TBB_FOUND) if(NOT TARGET TBB::tbb) message(WARNING "No TBB::tbb target found!") @@ -28,11 +28,11 @@ function(ocv_tbb_cmake_guess _found) get_target_property(_lib TBB::tbb IMPORTED_LOCATION_RELEASE) message(STATUS "Found TBB (cmake): ${_lib}") get_target_property(_inc TBB::tbb INTERFACE_INCLUDE_DIRECTORIES) - ocv_tbb_read_version("${_inc}") add_library(tbb INTERFACE IMPORTED) set_target_properties(tbb PROPERTIES INTERFACE_LINK_LIBRARIES TBB::tbb ) + ocv_tbb_read_version("${_inc}" tbb) set(${_found} TRUE PARENT_SCOPE) endif() endfunction() @@ -66,7 +66,6 @@ function(ocv_tbb_env_guess _found) find_library(TBB_ENV_LIB_DEBUG NAMES "tbb_debug") if (TBB_ENV_INCLUDE AND (TBB_ENV_LIB OR TBB_ENV_LIB_DEBUG)) ocv_tbb_env_verify() - ocv_tbb_read_version("${TBB_ENV_INCLUDE}") add_library(tbb UNKNOWN IMPORTED) set_target_properties(tbb PROPERTIES IMPORTED_LOCATION "${TBB_ENV_LIB}" @@ -82,12 +81,14 @@ function(ocv_tbb_env_guess _found) get_filename_component(_dir "${TBB_ENV_LIB}" DIRECTORY) set_target_properties(tbb PROPERTIES INTERFACE_LINK_LIBRARIES "-L${_dir}") endif() + ocv_tbb_read_version("${TBB_ENV_INCLUDE}" tbb) message(STATUS "Found TBB (env): ${TBB_ENV_LIB}") set(${_found} TRUE PARENT_SCOPE) endif() endfunction() -function(ocv_tbb_read_version _path) +function(ocv_tbb_read_version _path _tgt) + find_file(TBB_VER_FILE oneapi/tbb/version.h "${_path}" NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH) find_file(TBB_VER_FILE tbb/tbb_stddef.h "${_path}" NO_DEFAULT_PATH CMAKE_FIND_ROOT_PATH_BOTH) ocv_parse_header("${TBB_VER_FILE}" TBB_VERSION_LINES TBB_VERSION_MAJOR TBB_VERSION_MINOR TBB_INTERFACE_VERSION CACHE) endfunction() diff --git a/modules/core/src/parallel.cpp b/modules/core/src/parallel.cpp index 9432b225d339..3bd0addbc4ab 100644 --- a/modules/core/src/parallel.cpp +++ b/modules/core/src/parallel.cpp @@ -103,7 +103,6 @@ #endif #include "tbb/tbb.h" #include "tbb/task.h" - #include "tbb/tbb_stddef.h" #if TBB_INTERFACE_VERSION >= 8000 #include "tbb/task_arena.h" #endif diff --git a/modules/gapi/src/executor/gtbbexecutor.cpp b/modules/gapi/src/executor/gtbbexecutor.cpp index 03c6757dc644..4966ba114bff 100644 --- a/modules/gapi/src/executor/gtbbexecutor.cpp +++ b/modules/gapi/src/executor/gtbbexecutor.cpp @@ -6,7 +6,9 @@ #include "gtbbexecutor.hpp" -#if defined(HAVE_TBB) +#if defined(HAVE_TBB) && (TBB_INTERFACE_VERSION < 12000) +// TODO: TBB task API has been deprecated and removed in 12000 + #include "gapi_itt.hpp" #include @@ -442,4 +444,4 @@ std::ostream& cv::gimpl::parallel::operator<<(std::ostream& o, tile_node const& return o; } -#endif // HAVE_TBB +#endif // HAVE_TBB && TBB_INTERFACE_VERSION diff --git a/modules/gapi/src/executor/gtbbexecutor.hpp b/modules/gapi/src/executor/gtbbexecutor.hpp index 8a62266f66c3..db3ee5c13307 100644 --- a/modules/gapi/src/executor/gtbbexecutor.hpp +++ b/modules/gapi/src/executor/gtbbexecutor.hpp @@ -11,7 +11,11 @@ #include #endif -#if defined(HAVE_TBB) +#ifdef HAVE_TBB +#include +#include +#if TBB_INTERFACE_VERSION < 12000 +// TODO: TBB task API has been deprecated and removed in 12000 #include #include @@ -98,6 +102,7 @@ void execute(prio_items_queue_t& q, tbb::task_arena& arena); }}} // namespace cv::gimpl::parallel +#endif // TBB_INTERFACE_VERSION #endif // HAVE_TBB #endif // OPENCV_GAPI_TBB_EXECUTOR_HPP diff --git a/modules/gapi/test/executor/gtbbexecutor_internal_tests.cpp b/modules/gapi/test/executor/gtbbexecutor_internal_tests.cpp index bdc3bb236030..e1b93af98bca 100644 --- a/modules/gapi/test/executor/gtbbexecutor_internal_tests.cpp +++ b/modules/gapi/test/executor/gtbbexecutor_internal_tests.cpp @@ -7,10 +7,14 @@ // Deliberately include .cpp file instead of header as we use non exported function (execute) #include -#if defined(HAVE_TBB) +#ifdef HAVE_TBB +#include +#include +#if TBB_INTERFACE_VERSION < 12000 -#include "../test_precomp.hpp" #include + +#include "../test_precomp.hpp" #include namespace { @@ -169,4 +173,6 @@ TEST(TBBExecutor, Dependencies) { } } } // namespace opencv_test + +#endif //TBB_INTERFACE_VERSION #endif //HAVE_TBB