mirror of
https://github.com/opencv/opencv.git
synced 2024-11-27 20:50:25 +08:00
cmake: support searching for TBB via cmake package mechanism
This commit is contained in:
parent
403c3c3d03
commit
34a9ce6eb3
@ -18,7 +18,24 @@
|
|||||||
# - HAVE_TBB set to TRUE
|
# - HAVE_TBB set to TRUE
|
||||||
# - "tbb" target exists and added to OPENCV_LINKER_LIBS
|
# - "tbb" target exists and added to OPENCV_LINKER_LIBS
|
||||||
|
|
||||||
function(ocv_tbb_verify)
|
function(ocv_tbb_cmake_guess _found)
|
||||||
|
find_package(TBB QUIET COMPONENTS tbb PATHS "$ENV{TBBROOT}/cmake")
|
||||||
|
if(TBB_FOUND)
|
||||||
|
if(NOT TARGET TBB::tbb)
|
||||||
|
message(WARNING "No TBB::tbb target found!")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
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)
|
||||||
|
target_link_libraries(tbb INTERFACE TBB::tbb)
|
||||||
|
set(${_found} TRUE PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(ocv_tbb_env_verify)
|
||||||
if (NOT "$ENV{TBBROOT}" STREQUAL "")
|
if (NOT "$ENV{TBBROOT}" STREQUAL "")
|
||||||
# check that library and include dir are inside TBBROOT location
|
# check that library and include dir are inside TBBROOT location
|
||||||
get_filename_component(_root "$ENV{TBBROOT}" ABSOLUTE)
|
get_filename_component(_root "$ENV{TBBROOT}" ABSOLUTE)
|
||||||
@ -46,7 +63,7 @@ function(ocv_tbb_env_guess _found)
|
|||||||
find_library(TBB_ENV_LIB_DEBUG NAMES "tbb_debug" PATHS ENV LIBRARY_PATH NO_DEFAULT_PATH)
|
find_library(TBB_ENV_LIB_DEBUG NAMES "tbb_debug" PATHS ENV LIBRARY_PATH NO_DEFAULT_PATH)
|
||||||
find_library(TBB_ENV_LIB_DEBUG NAMES "tbb_debug")
|
find_library(TBB_ENV_LIB_DEBUG NAMES "tbb_debug")
|
||||||
if (TBB_ENV_INCLUDE AND (TBB_ENV_LIB OR TBB_ENV_LIB_DEBUG))
|
if (TBB_ENV_INCLUDE AND (TBB_ENV_LIB OR TBB_ENV_LIB_DEBUG))
|
||||||
ocv_tbb_verify()
|
ocv_tbb_env_verify()
|
||||||
ocv_tbb_read_version("${TBB_ENV_INCLUDE}")
|
ocv_tbb_read_version("${TBB_ENV_INCLUDE}")
|
||||||
add_library(tbb UNKNOWN IMPORTED)
|
add_library(tbb UNKNOWN IMPORTED)
|
||||||
set_target_properties(tbb PROPERTIES
|
set_target_properties(tbb PROPERTIES
|
||||||
@ -54,7 +71,7 @@ function(ocv_tbb_env_guess _found)
|
|||||||
IMPORTED_LOCATION_DEBUG "${TBB_ENV_LIB_DEBUG}"
|
IMPORTED_LOCATION_DEBUG "${TBB_ENV_LIB_DEBUG}"
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${TBB_ENV_INCLUDE}"
|
INTERFACE_INCLUDE_DIRECTORIES "${TBB_ENV_INCLUDE}"
|
||||||
)
|
)
|
||||||
message(STATUS "Found TBB: ${TBB_ENV_LIB}")
|
message(STATUS "Found TBB (env): ${TBB_ENV_LIB}")
|
||||||
set(${_found} TRUE PARENT_SCOPE)
|
set(${_found} TRUE PARENT_SCOPE)
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
@ -74,6 +91,10 @@ if(BUILD_TBB)
|
|||||||
set(HAVE_TBB TRUE)
|
set(HAVE_TBB TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(NOT HAVE_TBB)
|
||||||
|
ocv_tbb_cmake_guess(HAVE_TBB)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(NOT HAVE_TBB)
|
if(NOT HAVE_TBB)
|
||||||
ocv_tbb_env_guess(HAVE_TBB)
|
ocv_tbb_env_guess(HAVE_TBB)
|
||||||
endif()
|
endif()
|
||||||
|
@ -1238,7 +1238,7 @@ macro(ocv_get_all_libs _modules _extra _3rdparty)
|
|||||||
endif()
|
endif()
|
||||||
if (TARGET ${dep})
|
if (TARGET ${dep})
|
||||||
get_target_property(_type ${dep} TYPE)
|
get_target_property(_type ${dep} TYPE)
|
||||||
if(_type STREQUAL "STATIC_LIBRARY" AND BUILD_SHARED_LIBS)
|
if(_type STREQUAL "STATIC_LIBRARY" AND BUILD_SHARED_LIBS OR _type STREQUAL "INTERFACE_LIBRARY")
|
||||||
# nothing
|
# nothing
|
||||||
else()
|
else()
|
||||||
get_target_property(_output ${dep} IMPORTED_LOCATION)
|
get_target_property(_output ${dep} IMPORTED_LOCATION)
|
||||||
|
Loading…
Reference in New Issue
Block a user