diff options
author | Marat Dukhan <maratek@gmail.com> | 2020-04-01 22:40:00 -0700 |
---|---|---|
committer | Marat Dukhan <maratek@gmail.com> | 2020-04-01 22:40:00 -0700 |
commit | be9c89379384a261026c8bf517ec3ed651bb171c (patch) | |
tree | aad41dc2cd010ac96e053b940a7b3bf31ecd4be5 /CMakeLists.txt | |
parent | 23bc8d1e42d73e5df79bba61048b8da9bf14c194 (diff) | |
download | pthreadpool-be9c89379384a261026c8bf517ec3ed651bb171c.tar.gz |
Implementation using Grand Central Dispatch
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6043fe4..da42de5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ PROJECT(pthreadpool C CXX) SET(PTHREADPOOL_LIBRARY_TYPE "default" CACHE STRING "Type of library (shared, static, or default) to build") SET_PROPERTY(CACHE PTHREADPOOL_LIBRARY_TYPE PROPERTY STRINGS default static shared) OPTION(PTHREADPOOL_ALLOW_DEPRECATED_API "Enable deprecated API functions" ON) -SET(PTHREADPOOL_SYNC_PRIMITIVE "default" CACHE STRING "Synchronization primitive (condvar, futex, or default) for worker threads") -SET_PROPERTY(CACHE PTHREADPOOL_SYNC_PRIMITIVE PROPERTY STRINGS default condvar futex) +SET(PTHREADPOOL_SYNC_PRIMITIVE "default" CACHE STRING "Synchronization primitive (condvar, futex, gcd, or default) for worker threads") +SET_PROPERTY(CACHE PTHREADPOOL_SYNC_PRIMITIVE PROPERTY STRINGS default condvar futex gcd) IF("${CMAKE_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") OPTION(PTHREADPOOL_BUILD_TESTS "Build pthreadpool unit tests" ON) OPTION(PTHREADPOOL_BUILD_BENCHMARKS "Build pthreadpool micro-benchmarks" ON) @@ -65,10 +65,15 @@ ENDIF() IF(PTHREADPOOL_ALLOW_DEPRECATED_API) SET(PTHREADPOOL_SRCS src/legacy-api.c) ENDIF() -IF(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") +IF(EMSCRIPTEN) LIST(APPEND PTHREADPOOL_SRCS src/shim.c) ELSE() - LIST(APPEND PTHREADPOOL_SRCS src/portable-api.c src/memory.c src/pthreads.c) + LIST(APPEND PTHREADPOOL_SRCS src/portable-api.c src/memory.c) + IF(APPLE AND (PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default" OR PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "gcd")) + LIST(APPEND PTHREADPOOL_SRCS src/gcd.c) + ELSE() + LIST(APPEND PTHREADPOOL_SRCS src/pthreads.c) + ENDIF() ENDIF() ADD_LIBRARY(pthreadpool_interface INTERFACE) @@ -90,8 +95,13 @@ ENDIF() IF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "condvar") TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=0) + TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_GCD=0) ELSEIF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "futex") TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=1) + TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_GCD=0) +ELSEIF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "gcd") + TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=0) + TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_GCD=1) ELSEIF(NOT PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default") MESSAGE(FATAL_ERROR "Unsupported synchronization primitive ${PTHREADPOOL_SYNC_PRIMITIVE}") ENDIF() |