aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/pthreadpool
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/pthreadpool')
-rw-r--r--vcpkg/ports/pthreadpool/fix-cmakelists.patch104
-rw-r--r--vcpkg/ports/pthreadpool/fix-uwp.patch14
-rw-r--r--vcpkg/ports/pthreadpool/portfile.cmake26
-rw-r--r--vcpkg/ports/pthreadpool/vcpkg.json18
4 files changed, 162 insertions, 0 deletions
diff --git a/vcpkg/ports/pthreadpool/fix-cmakelists.patch b/vcpkg/ports/pthreadpool/fix-cmakelists.patch
new file mode 100644
index 0000000..bf89b93
--- /dev/null
+++ b/vcpkg/ports/pthreadpool/fix-cmakelists.patch
@@ -0,0 +1,104 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1361e94..5798f2e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -4,8 +4,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR)
+ PROJECT(pthreadpool C)
+
+ # ---[ Options.
+-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, gcd, event, or default) for worker threads")
+ SET_PROPERTY(CACHE PTHREADPOOL_SYNC_PRIMITIVE PROPERTY STRINGS default condvar futex gcd event)
+@@ -14,7 +12,7 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?)$")
+ ELSE()
+ OPTION(PTHREADPOOL_ENABLE_FASTPATH "Enable fast path using atomic decrement instead of atomic compare-and-swap" OFF)
+ ENDIF()
+-IF("${CMAKE_SOURCE_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
++IF(FALSE)
+ OPTION(PTHREADPOOL_BUILD_TESTS "Build pthreadpool unit tests" ON)
+ OPTION(PTHREADPOOL_BUILD_BENCHMARKS "Build pthreadpool micro-benchmarks" ON)
+ ELSE()
+@@ -40,7 +38,7 @@ MACRO(PTHREADPOOL_TARGET_ENABLE_CXX11 target)
+ ENDMACRO()
+
+ # ---[ Download deps
+-IF(NOT DEFINED FXDIV_SOURCE_DIR)
++IF(FALSE)
+ MESSAGE(STATUS "Downloading FXdiv to ${CMAKE_BINARY_DIR}/FXdiv-source (define FXDIV_SOURCE_DIR to avoid it)")
+ CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CMAKE_BINARY_DIR}/FXdiv-download/CMakeLists.txt")
+ EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
+@@ -92,21 +90,13 @@ ELSE()
+ ENDIF()
+
+ ADD_LIBRARY(pthreadpool_interface INTERFACE)
+-TARGET_INCLUDE_DIRECTORIES(pthreadpool_interface INTERFACE include)
++TARGET_INCLUDE_DIRECTORIES(pthreadpool_interface INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ IF(NOT PTHREADPOOL_ALLOW_DEPRECATED_API)
+ TARGET_COMPILE_DEFINITIONS(pthreadpool_interface INTERFACE PTHREADPOOL_NO_DEPRECATED_API=1)
+ ENDIF()
+ INSTALL(FILES include/pthreadpool.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+-IF(PTHREADPOOL_LIBRARY_TYPE STREQUAL "default")
+- ADD_LIBRARY(pthreadpool ${PTHREADPOOL_SRCS})
+-ELSEIF(PTHREADPOOL_LIBRARY_TYPE STREQUAL "shared")
+- ADD_LIBRARY(pthreadpool SHARED ${PTHREADPOOL_SRCS})
+-ELSEIF(PTHREADPOOL_LIBRARY_TYPE STREQUAL "static")
+- ADD_LIBRARY(pthreadpool STATIC ${PTHREADPOOL_SRCS})
+-ELSE()
+- MESSAGE(FATAL_ERROR "Unsupported library type ${PTHREADPOOL_LIBRARY_TYPE}")
+-ENDIF()
++ADD_LIBRARY(pthreadpool ${PTHREADPOOL_SRCS})
+
+ IF(PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "condvar")
+ TARGET_COMPILE_DEFINITIONS(pthreadpool PRIVATE PTHREADPOOL_USE_FUTEX=0)
+@@ -155,6 +145,9 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ ENDIF()
+
+ # ---[ Configure FXdiv
++
++find_package(unofficial-fxdiv CONFIG REQUIRED)
++add_library(fxdiv ALIAS unofficial::fxdiv::fxdiv)
+ IF(NOT TARGET fxdiv)
+ SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+ SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+@@ -162,12 +155,24 @@ IF(NOT TARGET fxdiv)
+ "${FXDIV_SOURCE_DIR}"
+ "${CMAKE_BINARY_DIR}/FXdiv")
+ ENDIF()
+-TARGET_LINK_LIBRARIES(pthreadpool PRIVATE fxdiv)
++TARGET_LINK_LIBRARIES(pthreadpool PUBLIC fxdiv)
++
+
+-INSTALL(TARGETS pthreadpool
++INSTALL(TARGETS pthreadpool pthreadpool_interface
++ EXPORT unofficial-pthreadpool-config-targets
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
++install(EXPORT unofficial-pthreadpool-config-targets NAMESPACE unofficial::
++ FILE unofficial-pthreadpool-config-targets.cmake
++ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-${PROJECT_NAME}) # share/unofficial-pthreadpool
++
++include(CMakePackageConfigHelpers)
++configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/unofficial-pthreadpool-config.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-${PROJECT_NAME})
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-pthreadpool-config.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-${PROJECT_NAME})
++
++
+ IF(PTHREADPOOL_BUILD_TESTS)
+ # ---[ Build google test
+ IF(NOT TARGET gtest)
+diff --git a/Config.cmake.in b/Config.cmake.in
+new file mode 100644
+index 0000000..575b8b1
+--- /dev/null
++++ b/Config.cmake.in
+@@ -0,0 +1,6 @@
++@PACKAGE_INIT@
++
++include(CMakeFindDependencyMacro)
++find_dependency(unofficial-fxdiv)
++
++include ( "${CMAKE_CURRENT_LIST_DIR}/unofficial-pthreadpool-config-targets.cmake" )
diff --git a/vcpkg/ports/pthreadpool/fix-uwp.patch b/vcpkg/ports/pthreadpool/fix-uwp.patch
new file mode 100644
index 0000000..0b1e510
--- /dev/null
+++ b/vcpkg/ports/pthreadpool/fix-uwp.patch
@@ -0,0 +1,14 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a07945c..6df83d1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -75,7 +75,8 @@ ELSE()
+ 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)
+- ELSEIF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$" AND (PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default" OR PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "event"))
++ ELSEIF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|WindowsStore|CYGWIN|MSYS)$" AND (PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "default" OR PTHREADPOOL_SYNC_PRIMITIVE STREQUAL "event"))
++ add_compile_options(-wd4146)
+ LIST(APPEND PTHREADPOOL_SRCS src/windows.c)
+ ELSE()
+ LIST(APPEND PTHREADPOOL_SRCS src/pthreads.c)
diff --git a/vcpkg/ports/pthreadpool/portfile.cmake b/vcpkg/ports/pthreadpool/portfile.cmake
new file mode 100644
index 0000000..804a25a
--- /dev/null
+++ b/vcpkg/ports/pthreadpool/portfile.cmake
@@ -0,0 +1,26 @@
+if(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO Maratyszcza/pthreadpool
+ REF 560c60d342a76076f0557a3946924c6478470044 #2024-11-04
+ SHA512 d23e764e9a02f34210b3b9c5a66dae3b9e8211de6f78ec9b2672c19c48f364f4edb268ab77b1adf2802a3c35c6857deba81e48a658caa1a587fe8f3493a07f59
+ PATCHES
+ fix-cmakelists.patch
+ fix-uwp.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DPTHREADPOOL_BUILD_TESTS=OFF
+ -DPTHREADPOOL_BUILD_BENCHMARKS=OFF
+)
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-${PORT})
+
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
diff --git a/vcpkg/ports/pthreadpool/vcpkg.json b/vcpkg/ports/pthreadpool/vcpkg.json
new file mode 100644
index 0000000..37ad13e
--- /dev/null
+++ b/vcpkg/ports/pthreadpool/vcpkg.json
@@ -0,0 +1,18 @@
+{
+ "name": "pthreadpool",
+ "version-date": "2024-11-04",
+ "port-version": 2,
+ "description": "Portable (POSIX/Windows/Emscripten) thread pool for C/C++",
+ "homepage": "https://github.com/Maratyszcza/pthreadpool",
+ "dependencies": [
+ "fxdiv",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}