Skip to content

Commit fc572e8

Browse files
authored
Add an opportunity to use system TBB (#620)
1 parent 2728645 commit fc572e8

File tree

1 file changed

+53
-41
lines changed

1 file changed

+53
-41
lines changed

cmake/onetbb.cmake

Lines changed: 53 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,47 @@
11
include(ExternalProject)
22

3-
if(WIN32)
4-
set(ppc_onetbb_TEST_COMMAND
5-
"${CMAKE_COMMAND}" -E copy_directory
6-
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/bin"
7-
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
8-
else()
9-
set(ppc_onetbb_TEST_COMMAND "")
10-
endif()
3+
option(ENABLE_SYSTEM_TBB "Use system TBB instead of bundled version" OFF)
4+
5+
if(NOT ENABLE_SYSTEM_TBB)
6+
if(WIN32)
7+
set(ppc_onetbb_TEST_COMMAND
8+
"${CMAKE_COMMAND}" -E copy_directory
9+
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/bin"
10+
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
11+
else()
12+
set(ppc_onetbb_TEST_COMMAND "")
13+
endif()
1114

12-
ExternalProject_Add(
13-
ppc_onetbb
14-
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb"
15-
PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb"
16-
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
17-
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
18-
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
19-
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
20-
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
21-
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
22-
-DCMAKE_C_FLAGS=-w
23-
-DCMAKE_CXX_FLAGS=-w
24-
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
25-
-DCMAKE_CXX_STANDARD_REQUIRED=ON
26-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
27-
-DTBB_TEST=OFF
28-
BUILD_COMMAND
29-
"${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
30-
--config ${CMAKE_BUILD_TYPE} --parallel
31-
INSTALL_COMMAND
32-
"${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
33-
--prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
34-
TEST_COMMAND ${ppc_onetbb_TEST_COMMAND})
15+
ExternalProject_Add(
16+
ppc_onetbb
17+
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb"
18+
PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb"
19+
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
20+
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
21+
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
22+
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
23+
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
24+
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
25+
-DCMAKE_C_FLAGS=-w
26+
-DCMAKE_CXX_FLAGS=-w
27+
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
28+
-DCMAKE_CXX_STANDARD_REQUIRED=ON
29+
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
30+
-DTBB_TEST=OFF
31+
BUILD_COMMAND
32+
"${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
33+
--config ${CMAKE_BUILD_TYPE} --parallel
34+
INSTALL_COMMAND
35+
"${CMAKE_COMMAND}" --install
36+
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix
37+
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
38+
TEST_COMMAND ${ppc_onetbb_TEST_COMMAND})
3539

36-
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/"
37-
DESTINATION "${CMAKE_INSTALL_PREFIX}")
40+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/"
41+
DESTINATION "${CMAKE_INSTALL_PREFIX}")
42+
else()
43+
find_package(TBB REQUIRED)
44+
endif()
3845

3946
string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower)
4047
if(cmake_build_type_lower STREQUAL "debug")
@@ -44,14 +51,19 @@ else()
4451
endif()
4552

4653
function(ppc_link_tbb exec_func_lib)
47-
# Add external project include directories
48-
target_include_directories(${exec_func_lib}
49-
PUBLIC ${CMAKE_SOURCE_DIR}/3rdparty/onetbb/include)
54+
if(NOT ENABLE_SYSTEM_TBB)
55+
# Add external project include directories
56+
target_include_directories(
57+
${exec_func_lib} PUBLIC ${CMAKE_SOURCE_DIR}/3rdparty/onetbb/include)
5058

51-
add_dependencies(${exec_func_lib} ppc_onetbb)
52-
target_link_directories(${exec_func_lib} PUBLIC
53-
${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib)
54-
if(NOT MSVC)
55-
target_link_libraries(${exec_func_lib} PUBLIC ${PPC_TBB_LIB_NAME})
59+
add_dependencies(${exec_func_lib} ppc_onetbb)
60+
target_link_directories(${exec_func_lib} PUBLIC
61+
${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib)
62+
if(NOT MSVC)
63+
target_link_libraries(${exec_func_lib} PUBLIC ${PPC_TBB_LIB_NAME})
64+
endif()
65+
else()
66+
# Use system TBB
67+
target_link_libraries(${exec_func_lib} PUBLIC TBB::tbb)
5668
endif()
5769
endfunction()

0 commit comments

Comments
 (0)