From 5858ff8e2c22beeadfc212682b3264dda4b4e159 Mon Sep 17 00:00:00 2001 From: pca006132 Date: Sat, 5 Aug 2023 16:45:28 +0800 Subject: [PATCH] try enable tbb for windows --- .github/workflows/manifold.yml | 2 +- src/utilities/CMakeLists.txt | 31 ++++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/.github/workflows/manifold.yml b/.github/workflows/manifold.yml index bbc606292..a4d082bb5 100644 --- a/.github/workflows/manifold.yml +++ b/.github/workflows/manifold.yml @@ -144,7 +144,7 @@ jobs: timeout-minutes: 30 strategy: matrix: - parallel_backend: [NONE] + parallel_backend: [NONE, TBB] cuda_support: [OFF] max-parallel: 1 runs-on: windows-2019 diff --git a/src/utilities/CMakeLists.txt b/src/utilities/CMakeLists.txt index 1e7d45db9..b0f96d0c7 100644 --- a/src/utilities/CMakeLists.txt +++ b/src/utilities/CMakeLists.txt @@ -29,11 +29,32 @@ if(MANIFOLD_PAR STREQUAL "OMP") target_compile_options(${PROJECT_NAME} PUBLIC -DMANIFOLD_PAR='O' -fopenmp) target_link_options(${PROJECT_NAME} PUBLIC -fopenmp) elseif(MANIFOLD_PAR STREQUAL "TBB") - find_package(PkgConfig REQUIRED) - pkg_check_modules(TBB REQUIRED tbb) - target_include_directories(${PROJECT_NAME} PUBLIC ${TBB_INCLUDE_DIRS}) + find_package(TBB QUIET) + if(NOT TBB_FOUND) + find_package(PkgConfig) + if (PKG_CONFIG_FOUND) + pkg_check_modules(TBB tbb) + endif() + endif() + if(NOT TBB_FOUND) + message(STATUS "tbb not found, downloading from source") + set(TBB_TEST off) + set(TBB_STRICT off) + include(FetchContent) + FetchContent_Declare(TBB + GIT_REPOSITORY https://github.com/oneapi-src/oneTBB.git + GIT_TAG v2021.10.0 + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + ) + FetchContent_MakeAvailable(TBB) + endif() target_compile_options(${PROJECT_NAME} PUBLIC -DMANIFOLD_PAR='T') - target_link_libraries(${PROJECT_NAME} PUBLIC ${TBB_LINK_LIBRARIES}) + if(DEFINED TBB::tbb) + target_link_libraries(${PROJECT_NAME} PUBLIC TBB::tbb) + else() + target_link_libraries(${PROJECT_NAME} PUBLIC ${TBB_LINK_LIBRARIES}) + endif() elseif(MANIFOLD_PAR STREQUAL "NONE") set(MANIFOLD_PAR "CPP") else() @@ -63,4 +84,4 @@ if(MANIFOLD_DEBUG) PUBLIC -DMANIFOLD_DEBUG) endif() -target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_17) \ No newline at end of file +target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_17)