From 1362342f556087204eccd73fe39f5492090a3687 Mon Sep 17 00:00:00 2001 From: atkawa7 Date: Tue, 29 Aug 2017 11:41:08 -0700 Subject: [PATCH] [pthreads] init port --- ports/pthreads/CMakeLists.txt | 213 ++++++++++++++++++++++++++++++++++ ports/pthreads/CONTROL | 3 + ports/pthreads/portfile.cmake | 33 ++++++ 3 files changed, 249 insertions(+) create mode 100644 ports/pthreads/CMakeLists.txt create mode 100644 ports/pthreads/CONTROL create mode 100644 ports/pthreads/portfile.cmake diff --git a/ports/pthreads/CMakeLists.txt b/ports/pthreads/CMakeLists.txt new file mode 100644 index 0000000000..d6eed5310e --- /dev/null +++ b/ports/pthreads/CMakeLists.txt @@ -0,0 +1,213 @@ +cmake_minimum_required(VERSION 3.9.0) + +project(pthreads) + +set(PTHREAD_PUBLIC_HEADERS pthread.h sched.h semaphore.h) +set(PTHREAD_PRIVATE_HEADERS config.h implement.h need_errno.h) + +set(PTHREAD_SHARED_SOURCES + autostatic.c + barrier.c + cancel.c + cleanup.c + condvar.c + create.c + dll.c + errno.c + exit.c + fork.c + global.c + misc.c + mutex.c + nonportable.c + private.c + rwlock.c + sched.c + semaphore.c + signal.c + spin.c + sync.c + tsd.c + attr.C +) +set(PTHREAD_STATIC_SOURCES + autostatic.c + cleanup.c + create.c + dll.c + errno.c + fork.c + global.c + pthread_attr_destroy.c + pthread_attr_getdetachstate.c + pthread_attr_getinheritsched.c + pthread_attr_getschedparam.c + pthread_attr_getschedpolicy.c + pthread_attr_getscope.c + pthread_attr_getstackaddr.c + pthread_attr_getstacksize.c + pthread_attr_init.c + pthread_attr_setdetachstate.c + pthread_attr_setinheritsched.c + pthread_attr_setschedparam.c + pthread_attr_setschedpolicy.c + pthread_attr_setscope.c + pthread_attr_setstackaddr.c + pthread_attr_setstacksize.c + pthread_barrier_destroy.c + pthread_barrier_init.c + pthread_barrier_wait.c + pthread_barrierattr_destroy.c + pthread_barrierattr_getpshared.c + pthread_barrierattr_init.c + pthread_barrierattr_setpshared.c + pthread_cancel.c + pthread_cond_destroy.c + pthread_cond_init.c + pthread_cond_signal.c + pthread_cond_wait.c + pthread_condattr_destroy.c + pthread_condattr_getpshared.c + pthread_condattr_init.c + pthread_condattr_setpshared.c + pthread_delay_np.c + pthread_detach.c + pthread_equal.c + pthread_exit.c + pthread_getconcurrency.c + pthread_getschedparam.c + pthread_getspecific.c + pthread_getunique_np.c + pthread_getw32threadhandle_np.c + pthread_join.c + pthread_key_create.c + pthread_key_delete.c + pthread_kill.c + pthread_mutex_consistent.c + pthread_mutex_destroy.c + pthread_mutex_init.c + pthread_mutex_lock.c + pthread_mutex_timedlock.c + pthread_mutex_trylock.c + pthread_mutex_unlock.c + pthread_mutexattr_destroy.c + pthread_mutexattr_getkind_np.c + pthread_mutexattr_getpshared.c + pthread_mutexattr_getrobust.c + pthread_mutexattr_gettype.c + pthread_mutexattr_init.c + pthread_mutexattr_setkind_np.c + pthread_mutexattr_setpshared.c + pthread_mutexattr_setrobust.c + pthread_mutexattr_settype.c + pthread_num_processors_np.c + pthread_once.c + pthread_rwlock_destroy.c + pthread_rwlock_init.c + pthread_rwlock_rdlock.c + pthread_rwlock_tryrdlock.c + pthread_rwlock_trywrlock.c + pthread_rwlock_unlock.c + pthread_rwlock_wrlock.c + pthread_rwlockattr_destroy.c + pthread_rwlockattr_getpshared.c + pthread_rwlockattr_init.c + pthread_rwlockattr_setpshared.c + pthread_self.c + pthread_setcancelstate.c + pthread_setcanceltype.c + pthread_setconcurrency.c + pthread_setschedparam.c + pthread_setspecific.c + pthread_spin_destroy.c + pthread_spin_init.c + pthread_spin_lock.c + pthread_spin_trylock.c + pthread_spin_unlock.c + pthread_testcancel.c + pthread_timechange_handler_np.c + pthread_win32_attach_detach_np.c + ptw32_calloc.c + ptw32_callUserDestroyRoutines.c + ptw32_cond_check_need_init.c + ptw32_getprocessors.c + ptw32_is_attr.c + ptw32_MCS_lock.c + ptw32_mutex_check_need_init.c + ptw32_new.c + ptw32_processInitialize.c + ptw32_processTerminate.c + ptw32_relmillisecs.c + ptw32_reuse.c + ptw32_rwlock_check_need_init.c + ptw32_semwait.c + ptw32_spinlock_check_need_init.c + ptw32_threadDestroy.c + ptw32_threadStart.c + ptw32_throw.c + ptw32_timespec.c + ptw32_tkAssocCreate.c + ptw32_tkAssocDestroy.c + sched_get_priority_max.c + sched_get_priority_min.c + sched_getscheduler.c + sched_setscheduler.c + sched_yield.c + sem_close.c + sem_destroy.c + sem_getvalue.c + sem_init.c + sem_open.c + sem_post_multiple.c + sem_post.c + sem_timedwait.c + sem_trywait.c + sem_unlink.c + sem_wait.c + signal.c + w32_CancelableWait.c +) + + + +option(PTW32_ARCH "x32") +add_definitions(-DPTW32_ARCH=${PTW32_ARCH} -DDPTW32_RC_MSC -DHAVE_PTW32_CONFIG_H -D_TIMESPEC_DEFINED) + +if(BUILD_SHARED_LIBS) + set(PTHREAD_SOURCES ${PTHREAD_SHARED_SOURCES}) + add_definitions(-DPTW32_BUILD) +else() + set(PTHREAD_SOURCES ${PTHREAD_STATIC_SOURCES}) + add_definitions(-DPTW32_STATIC_LIB) +endif() + + +if(PTHREADS_BUILD_CPP) + set(PTHREADS_EXCEPTION_SCHEME CE) + add_definitions(/__CLEANUP_CXX) +elseif(PTHREADS_BUILD_SEH) + set(PTHREADS_EXCEPTION_SCHEME SE) + add_definitions(/__CLEANUP_SEH) + set(PTHREADS_EXCEPTION_SCHEME C) +endif() + +set(PTHREADS_COMPATIBILITY_VERSION 2) +set(CMAKE_DEBUG_POSTFIX d) +set(PTHREADS_COMPILER V) + +set(PTHREADS_LIBRARY "pthreads${PTHREADS_COMPILER}${PTHREADS_EXCEPTION_SCHEME}${PTHREADS_COMPATIBILITY_VERSION}") + +include_directories(.) + +add_library(${PTHREADS_LIBRARY} ${PTHREAD_SOURCES}) + +install( + TARGETS ${PTHREADS_LIBRARY} + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +if(NOT DISABLE_INSTALL_HEADERS) + install(FILES ${PTHREAD_PUBLIC_HEADERS} DESTINATION include) +endif() diff --git a/ports/pthreads/CONTROL b/ports/pthreads/CONTROL new file mode 100644 index 0000000000..81b97f70be --- /dev/null +++ b/ports/pthreads/CONTROL @@ -0,0 +1,3 @@ +Source: pthreads +Version: 2.9.1 +Description: pthreads for windows diff --git a/ports/pthreads/portfile.cmake b/ports/pthreads/portfile.cmake new file mode 100644 index 0000000000..813554a874 --- /dev/null +++ b/ports/pthreads/portfile.cmake @@ -0,0 +1,33 @@ +include(vcpkg_common_functions) +set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/pthreads-w32-2-9-1-release) +vcpkg_download_distfile(ARCHIVE + URLS "ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.tar.gz" + FILENAME "pthreads-w32-2-9-1-release.tar.gz" + SHA512 9c06e85310766834370c3dceb83faafd397da18a32411ca7645c8eb6b9495fea54ca2872f4a3e8d83cb5fdc5dea7f3f0464be5bb9af3222a6534574a184bd551 +) +vcpkg_extract_source_archive(${ARCHIVE}) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS -DPTW32_ARCH=${VCPKG_TARGET_ARCHITECTURE} + OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON +) + +vcpkg_install_cmake() + +vcpkg_copy_pdbs() + +file(GLOB HEADERS "${CURRENT_PACKAGES_DIR}/include/*.h") +foreach(HEADER ${HEADERS}) + file(READ "${HEADER}" _contents) + string(REPLACE "!defined(_TIMESPEC_DEFINED)" "0" _contents "${_contents}") + if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + string(REPLACE "!defined(PTW32_STATIC_LIB)" "0" _contents "${_contents}") + endif() + file(WRITE "${HEADER}" "${_contents}") +endforeach() + +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/pthreads RENAME copyright)