aboutsummaryrefslogtreecommitdiff
path: root/c/dependencies
diff options
context:
space:
mode:
authorsilvanshade <[email protected]>2025-02-08 05:28:20 -0700
committerJack O'Connor <[email protected]>2025-03-13 12:16:50 -0700
commit4a885fcaeeb4c79414f9b0433ab417faaacf3066 (patch)
treebbe89de41475e9fb7e4d70bf10aece3585db2b3f /c/dependencies
parenta31e519869d5751370f50c39a99340660ee95bf7 (diff)
Implement TBB-based parallelism for C lib
Diffstat (limited to 'c/dependencies')
-rw-r--r--c/dependencies/CMakeLists.txt3
-rw-r--r--c/dependencies/tbb/CMakeLists.txt33
2 files changed, 36 insertions, 0 deletions
diff --git a/c/dependencies/CMakeLists.txt b/c/dependencies/CMakeLists.txt
new file mode 100644
index 0000000..4382353
--- /dev/null
+++ b/c/dependencies/CMakeLists.txt
@@ -0,0 +1,3 @@
+if(BLAKE3_USE_TBB)
+ add_subdirectory(tbb)
+endif()
diff --git a/c/dependencies/tbb/CMakeLists.txt b/c/dependencies/tbb/CMakeLists.txt
new file mode 100644
index 0000000..0f51395
--- /dev/null
+++ b/c/dependencies/tbb/CMakeLists.txt
@@ -0,0 +1,33 @@
+if(WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ message(FATAL_ERROR "BLAKE3_USE_TBB requires building with Clang or MSVC on Windows")
+ set(BLAKE3_USE_TBB OFF)
+endif()
+
+find_package(TBB 2021.11.0 QUIET)
+
+if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.11)
+ include(FetchContent)
+
+ if(NOT TBB_FOUND AND BLAKE3_FETCH_TBB)
+ set(CMAKE_C_STANDARD 99)
+ set(CMAKE_C_EXTENSIONS OFF)
+
+ set(CMAKE_CXX_STANDARD 20)
+ set(CMAKE_CXX_EXTENSIONS ON)
+
+ option(TBB_TEST OFF "")
+ option(TBBMALLOC_BUILD OFF "")
+
+ mark_as_advanced(TBB_TEST)
+ mark_as_advanced(TBBMALLOC_BUILD)
+
+ FetchContent_Declare(
+ TBB
+ GIT_REPOSITORY https://github.com/uxlfoundation/oneTBB
+ GIT_TAG 0c0ff192a2304e114bc9e6557582dfba101360ff # v2022.0.0
+ GIT_SHALLOW TRUE
+ )
+
+ FetchContent_MakeAvailable(TBB)
+ endif()
+endif()