Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 53 additions & 41 deletions cmake/onetbb.cmake
Original file line number Diff line number Diff line change
@@ -1,40 +1,47 @@
include(ExternalProject)

if(WIN32)
set(ppc_onetbb_TEST_COMMAND
"${CMAKE_COMMAND}" -E copy_directory
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/bin"
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
else()
set(ppc_onetbb_TEST_COMMAND "")
endif()
option(ENABLE_SYSTEM_TBB "Use system TBB instead of bundled version" OFF)

if(NOT ENABLE_SYSTEM_TBB)
if(WIN32)
set(ppc_onetbb_TEST_COMMAND
"${CMAKE_COMMAND}" -E copy_directory
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/bin"
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
else()
set(ppc_onetbb_TEST_COMMAND "")
endif()

ExternalProject_Add(
ppc_onetbb
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb"
PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
-DCMAKE_C_FLAGS=-w
-DCMAKE_CXX_FLAGS=-w
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_CXX_STANDARD_REQUIRED=ON
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DTBB_TEST=OFF
BUILD_COMMAND
"${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
--config ${CMAKE_BUILD_TYPE} --parallel
INSTALL_COMMAND
"${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
--prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
TEST_COMMAND ${ppc_onetbb_TEST_COMMAND})
ExternalProject_Add(
ppc_onetbb
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/onetbb"
PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
-DCMAKE_C_FLAGS=-w
-DCMAKE_CXX_FLAGS=-w
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
-DCMAKE_CXX_STANDARD_REQUIRED=ON
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DTBB_TEST=OFF
BUILD_COMMAND
"${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build"
--config ${CMAKE_BUILD_TYPE} --parallel
INSTALL_COMMAND
"${CMAKE_COMMAND}" --install
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix
"${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install"
TEST_COMMAND ${ppc_onetbb_TEST_COMMAND})

install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/"
DESTINATION "${CMAKE_INSTALL_PREFIX}")
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/"
DESTINATION "${CMAKE_INSTALL_PREFIX}")
else()
find_package(TBB REQUIRED)
endif()

string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower)
if(cmake_build_type_lower STREQUAL "debug")
Expand All @@ -44,14 +51,19 @@ else()
endif()

function(ppc_link_tbb exec_func_lib)
# Add external project include directories
target_include_directories(${exec_func_lib}
PUBLIC ${CMAKE_SOURCE_DIR}/3rdparty/onetbb/include)
if(NOT ENABLE_SYSTEM_TBB)
# Add external project include directories
target_include_directories(
${exec_func_lib} PUBLIC ${CMAKE_SOURCE_DIR}/3rdparty/onetbb/include)

add_dependencies(${exec_func_lib} ppc_onetbb)
target_link_directories(${exec_func_lib} PUBLIC
${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib)
if(NOT MSVC)
target_link_libraries(${exec_func_lib} PUBLIC ${PPC_TBB_LIB_NAME})
add_dependencies(${exec_func_lib} ppc_onetbb)
target_link_directories(${exec_func_lib} PUBLIC
${CMAKE_BINARY_DIR}/ppc_onetbb/install/lib)
if(NOT MSVC)
target_link_libraries(${exec_func_lib} PUBLIC ${PPC_TBB_LIB_NAME})
endif()
else()
# Use system TBB
target_link_libraries(${exec_func_lib} PUBLIC TBB::tbb)
endif()
endfunction()
Loading