11include (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
3946string (TOLOWER "${CMAKE_BUILD_TYPE} " cmake_build_type_lower)
4047if (cmake_build_type_lower STREQUAL "debug" )
@@ -44,14 +51,19 @@ else()
4451endif ()
4552
4653function (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 ()
5769endfunction ()
0 commit comments