Re: [meta-mingw][PATCH 1/2] winpthreads: use posix threads library from mingw64


Samuli Piippo
 

Sure, it’ll take me couple of hours though.
Let’s see if the missing emails appear meanwhile.

On 15 Nov 2018, at 19.33, Burton, Ross <ross.burton@intel.com> wrote:

Weird.

Can you push them to a git repo?

Ross
On Thu, 15 Nov 2018 at 17:32, Samuli Piippo <samuli.piippo@qt.io> wrote:


2/2 is also unrelated, there should 3 patches from me, sent at the same time. Don’t know where they got stuck.

On 15 Nov 2018, at 19.21, Burton, Ross <ross.burton@intel.com> wrote:

I see 1/2 but no 2/2, presumably this missing patch is the PIE one?

Ross
On Thu, 15 Nov 2018 at 16:04, Samuli Piippo <samuli.piippo@qt.io> wrote:

Use the winpthreads library available in the mingw64 and
change the thread model from win32 to posix to get access
to c++11 features.

Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
---
conf/machine-sdk/include/mingw32-common.inc | 2 -
recipes-core/gettext/gettext_0.19.%.bbappend | 5 +-
recipes-devtools/gcc/gcc-runtime_%.bbappend | 2 +-
recipes-devtools/gcc/libgcc_%.bbappend | 2 +
.../nativesdk-mingw-w64-headers_5.0.3.bb | 5 ++
.../nativesdk-mingw-w64-winpthreads_5.0.3.bb | 31 ++++++++++++
.../pthreads-win32/pthreads-win32_2.9.1.bb | 47 -------------------
7 files changed, 40 insertions(+), 54 deletions(-)
create mode 100644 recipes-devtools/mingw-w64/nativesdk-mingw-w64-winpthreads_5.0.3.bb
delete mode 100644 recipes-devtools/pthreads-win32/pthreads-win32_2.9.1.bb

diff --git a/conf/machine-sdk/include/mingw32-common.inc b/conf/machine-sdk/include/mingw32-common.inc
index cd56380..733d092 100644
--- a/conf/machine-sdk/include/mingw32-common.inc
+++ b/conf/machine-sdk/include/mingw32-common.inc
@@ -1,8 +1,6 @@
SDK_OS = "mingw32"
NATIVESDKLIBC = "libc-mingw"

-GCCTHREADS_mingw32 = "win32"
-
PREFERRED_PROVIDER_virtual/nativesdk-${SDK_PREFIX}libc-for-gcc_mingw32 = "nativesdk-mingw-w64-runtime"
PREFERRED_PROVIDER_virtual/nativesdk-${SDK_PREFIX}libc-initial_mingw32 = "nativesdk-mingw-w64-runtime"
PREFERRED_PROVIDER_virtual/nativesdk-libc = "nativesdk-mingw-w64-runtime"
diff --git a/recipes-core/gettext/gettext_0.19.%.bbappend b/recipes-core/gettext/gettext_0.19.%.bbappend
index b26b734..21749f3 100644
--- a/recipes-core/gettext/gettext_0.19.%.bbappend
+++ b/recipes-core/gettext/gettext_0.19.%.bbappend
@@ -1,7 +1,4 @@
-DEPENDS_append_mingw32 = " pthreads-win32"
-LDFLAGS_prepend_mingw32 = " -lpthread "
-
-EXTRA_OECONF_append_mingw32 = " --enable-threads=windows --enable-static"
+EXTRA_OECONF_append_mingw32 = " --enable-static"

FILESEXTRAPATHS_prepend_mingw32 := "${THISDIR}/${BPN}:"
SRC_URI_append_mingw32 = " \
diff --git a/recipes-devtools/gcc/gcc-runtime_%.bbappend b/recipes-devtools/gcc/gcc-runtime_%.bbappend
index 1641cb9..f14edf1 100644
--- a/recipes-devtools/gcc/gcc-runtime_%.bbappend
+++ b/recipes-devtools/gcc/gcc-runtime_%.bbappend
@@ -11,4 +11,4 @@ RUNTIMETARGET_remove_mingw32 = "libitm"
# mingw builds
RUNTIMETARGET_remove_mingw32 = "libmpx"

-DEPENDS_append_mingw32 = " pthreads-win32"
+DEPENDS_append_mingw32 = " nativesdk-mingw-w64-winpthreads"
diff --git a/recipes-devtools/gcc/libgcc_%.bbappend b/recipes-devtools/gcc/libgcc_%.bbappend
index 2a95d02..f542cfc 100644
--- a/recipes-devtools/gcc/libgcc_%.bbappend
+++ b/recipes-devtools/gcc/libgcc_%.bbappend
@@ -1,3 +1,5 @@
+DEPENDS_append_mingw32 = " nativesdk-mingw-w64-winpthreads"
+
FILES_${PN}_append_mingw32 = " ${bindir}/libgcc*.dll"
FILES_${PN}-dev_append_mingw32 = " ${base_libdir}/libgcc*.a"

diff --git a/recipes-devtools/mingw-w64/nativesdk-mingw-w64-headers_5.0.3.bb b/recipes-devtools/mingw-w64/nativesdk-mingw-w64-headers_5.0.3.bb
index e129c32..009e5af 100644
--- a/recipes-devtools/mingw-w64/nativesdk-mingw-w64-headers_5.0.3.bb
+++ b/recipes-devtools/mingw-w64/nativesdk-mingw-w64-headers_5.0.3.bb
@@ -31,4 +31,9 @@ do_compile() {
:
}

+do_install_append() {
+ # install correct pthread headers
+ install -m 0644 -t ${D}${includedir} ${S}/../mingw-w64-libraries/winpthreads/include/*.h
+}
+
FILES_${PN} += "${exec_prefix}/${TARGET_SYS}"
diff --git a/recipes-devtools/mingw-w64/nativesdk-mingw-w64-winpthreads_5.0.3.bb b/recipes-devtools/mingw-w64/nativesdk-mingw-w64-winpthreads_5.0.3.bb
new file mode 100644
index 0000000..1308760
--- /dev/null
+++ b/recipes-devtools/mingw-w64/nativesdk-mingw-w64-winpthreads_5.0.3.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Winpthreads runtime libraries from MinGW-w64 project"
+LICENSE = "ZPL-2.1"
+LIC_FILES_CHKSUM = "file://../../COPYING;md5=bb936f0e04d8f1e19ad545100cee9654"
+
+COMPATIBLE_HOST = ".*-mingw.*"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v${PV}.tar.bz2"
+SRC_URI[md5sum] = "5524c20312560cc8683b7d8ee292cb8c"
+SRC_URI[sha256sum] = "2a601db99ef579b9be69c775218ad956a24a09d7dabc9ff6c5bd60da9ccc9cb4"
+
+S = "${WORKDIR}/mingw-w64-v${PV}/mingw-w64-libraries/winpthreads"
+B = "${WORKDIR}/build-${TARGET_SYS}"
+
+inherit autotools nativesdk
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "nativesdk-mingw-w64-runtime virtual/${TARGET_PREFIX}gcc-initial"
+
+do_configure() {
+ oe_runconf
+}
+
+STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
+TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TARGET}"
+PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
+
+do_install_append() {
+ # headers are already installed by mingw-w64-headers
+ rm -rf ${D}${includedir}
+}
diff --git a/recipes-devtools/pthreads-win32/pthreads-win32_2.9.1.bb b/recipes-devtools/pthreads-win32/pthreads-win32_2.9.1.bb
deleted file mode 100644
index e4a0f80..0000000
--- a/recipes-devtools/pthreads-win32/pthreads-win32_2.9.1.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-DESCRIPTION = "A Win32 implementation of the POSIX standard threads API"
-HOMEPAGE = "http://www.sourceware.org/pthreads-win32";
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=7fbc338309ac38fefcd64b04bb903e34"
-
-BBCLASSEXTEND = "nativesdk"
-
-COMPATIBLE_HOST = ".*-mingw.*"
-
-## Replace dots with dashes
-PVdash = "2-9-1"
-
-## cvs -d :pserver:anonymous@sourceware.org:/cvs/pthreads-win32 checkout pthreads
-SRC_URI = "ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-${PVdash}-release.tar.gz"
-SRC_URI[md5sum] = "36ba827d6aa0fa9f9ae740a35626e2e3"
-SRC_URI[sha256sum] = "e6aca7aea8de33d9c8580bcb3a0ea3ec0a7ace4ba3f4e263ac7c7b66bc95fb4d"
-
-## Reference: http://sourceware.org/ml/pthreads-win32/2009/msg00030/w64sup.patch
-#SRC_URI += "file://w64sup.patch"
-
-S = "${WORKDIR}/pthreads-w32-${PVdash}-release"
-
-INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "virtual/${SDK_PREFIX}gcc libgcc virtual/libc"
-
-do_configure_prepend() {
- ## First reset all permissions because all are executable
- find . -type f -exec chmod 644 {} \;
- ## Make a copy of config.h
- cp config.h pthreads_win32_config.h
-}
-
-do_compile() {
- make -f GNUmakefile CROSS=${SDK_PREFIX} CC="${CC}" RC="${WINDRES}" clean GC
-}
-
-do_install() {
- install -d -m 0755 ${D}${bindir}
- install -d -m 0755 ${D}${includedir}
- install -d -m 0755 ${D}${libdir}
-
- install -m 0644 ${S}/pthread.h ${S}/sched.h ${S}/semaphore.h ${D}${includedir}/
-
- install -m 0644 ${S}/libpthreadGC2.a ${D}${libdir}/libpthread.dll.a
- install -m 0644 ${S}/pthreadGC2.dll ${D}${bindir}/libpthread-2.dll
- install -m 0644 ${S}/pthreadGC2.dll ${D}${bindir}/pthreadGC2.dll
-}
--
2.17.1

--
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Join yocto@lists.yoctoproject.org to automatically receive all group messages.