commit:     b78bd34e77ae5d95572423c0cb121c6aae4cda95
Author:     Michael Haubenwallner <haubi <AT> gentoo <DOT> org>
AuthorDate: Mon Mar  9 14:40:15 2020 +0000
Commit:     Michael Haubenwallner <haubi <AT> gentoo <DOT> org>
CommitDate: Mon Mar  9 14:55:27 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b78bd34e

dev-libs/pthreads4w: new: pthreads for native Win32

Package-Manager: Portage-2.3.84, Repoman-2.3.20
Signed-off-by: Michael Haubenwallner <haubi <AT> gentoo.org>

 dev-libs/pthreads4w/Manifest                |  1 +
 dev-libs/pthreads4w/metadata.xml            | 12 +++++
 dev-libs/pthreads4w/pthreads4w-3.0.0.ebuild | 69 +++++++++++++++++++++++++++++
 3 files changed, 82 insertions(+)

diff --git a/dev-libs/pthreads4w/Manifest b/dev-libs/pthreads4w/Manifest
new file mode 100644
index 00000000000..b6ffdf2e885
--- /dev/null
+++ b/dev-libs/pthreads4w/Manifest
@@ -0,0 +1 @@
+DIST pthreads4w-code-v3.0.0.zip 862409 BLAKE2B 
cd23103c92f8eaa2088fdd68cfc94655771d44c365ca32180395cdb8645b570c2f65620d3c2969671a48c6ac45889bc439f3490dc7ec2497dfeca9f758cda6cd
 SHA512 
49e541b66c26ddaf812edb07b61d0553e2a5816ab002edc53a38a897db8ada6d0a096c98a9af73a8f40c94283df53094f76b429b09ac49862465d8697ed20013

diff --git a/dev-libs/pthreads4w/metadata.xml b/dev-libs/pthreads4w/metadata.xml
new file mode 100644
index 00000000000..30aaf1fdc57
--- /dev/null
+++ b/dev-libs/pthreads4w/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>[email protected]</email>
+               <name>Michael Haubenwallner</name>
+       </maintainer>
+       <longdescription lang="en">
+               Also known as "pthreads-win32", POSIX Threads for Windows 
implements a large
+               subset of the threads related API from the Single Unix 
Specification Version 3.
+       </longdescription>
+</pkgmetadata>

diff --git a/dev-libs/pthreads4w/pthreads4w-3.0.0.ebuild 
b/dev-libs/pthreads4w/pthreads4w-3.0.0.ebuild
new file mode 100644
index 00000000000..3403767ab1f
--- /dev/null
+++ b/dev-libs/pthreads4w/pthreads4w-3.0.0.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2019-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="POSIX Threads for Windows"
+HOMEPAGE="http://pthreads4w.sourceforge.net/";
+SRC_URI="mirror://sourceforge/${PN}/${PN}-code-v${PV}.zip"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~x86-winnt"
+IUSE=""
+
+DEPEND=""
+RDEPEND="${DEPEND}"
+BDEPEND="sys-devel/parity"
+
+S=${WORKDIR}/${PN}-code-07053a521b0a9deb6db2a649cde1f828f2eb1f4f
+
+src_compile() {
+       # from pthreads.h:
+       # Note: Unless the build explicitly defines one of the following, then
+       # we default to standard C style cleanup. This style uses setjmp/longjmp
+       # in the cancellation and thread exit implementations and therefore 
won't
+       # do stack unwinding if linked to applications that have it (e.g.
+       # C++ apps). This is currently consistent with most/all commercial Unix
+       # POSIX threads implementations.
+       local variant="VC" # C style cleanup
+
+       case ${CHOST} in
+       *-libcmtd*) variant+="-static-debug" ;;
+       *-libcmt*) variant+="-static" ;;
+       *-msvcd*) variant+="-debug" ;;
+       *-msvc*) ;;
+       esac
+
+       case ${CHOST} in
+       x86_64-*) variant+=" TARGET_CPU=x64" ;;
+       i?86-*) variant+=" TARGET_CPU=x86" ;;
+       esac
+
+       ${CHOST}-nmake -f Makefile ${variant} || die
+}
+
+src_install() {
+       local V=$(ver_cut 1)
+       case ${CHOST} in
+       *-libcmtd*|*-msvcd*) V+="d" ;; # debug CRT
+       esac
+       case ${CHOST} in
+       *-libcmt*) # static CRT
+               dolib.so libpthreadVC${V}.lib
+               newlib.so libpthreadVC${V}.lib libpthread.lib # for -lpthread
+               ;;
+       *-msvc*) # dynamic CRT
+               dobin pthreadVC${V}.dll
+               dolib.so pthreadVC${V}.lib
+               newlib.so pthreadVC${V}.lib pthread.lib # for -lpthread
+               ;;
+       esac
+       insinto /usr/include
+       doins {pthread,sched,semaphore,_ptw32}.h
+       einstalldocs
+}
+
+src_test() {
+       ${CHOST}-nmake -DEXHAUSTIVE all-tests || die
+}

Reply via email to