Skip to contentSkip to conversation

meta-mingw patches for master

PATCH In review Juro Bystricky 2 participants 5 messages Oct 5, 2016

lore
Share & tools
lore
#0 lore raw

cover meta-mingw patches for master

The current master deviated enough from krogoth that it needs new meta-mingw patches (and a separate meta-mingw branch) in order to build (cross-compile) anything.
Only the build itself was tested, not the actual functionality of the resulting deployables. Nevertheless, correct functionality is predicated on a successful build.

The patches were tested by building some common/likely mingw targets for both SDKMACHINE=i686-mingw32 and SDKMACHINE=x86_64-mingw32:

    TCLIBC="baremetal"
    MACHINE ="qemux86"
    bitbake gcc-cross-canadian-i586

    TCLIBC="baremetal"
    MACHINE ="qemuarm"
    PACKAGE_CLASSES ="package_ipk"
    bitbake gcc-cross-canadian-arm

    MACHINE ="qemux86"
    bitbake gdb-cross-canadian-i586
   
    MACHINE ="qemux86"
    bitbake meta-toolchain

    MACHINE ="qemux86"
    SDKTAROPTS_append_mingw32 = " -h --hard-dereference"
    bitbake core-image-minimal -c populate_sdk

Presently all deployables may need to be manually re-packaged for deployment on Windows as the packages are typically in *.tar.xz or .rpm format (possibly containing symbolic links).

Juro Bystricky (3):
mingw-64-runtime_3.1.bb: Adapt to SDK_ARCH -> SDK_SYS chanages for
crosssdk
gcc-crosssdk_%.bbappend: Do not configure with initfini-array enabled. gcc-crosssdk-initial_%.bbappend:Do not configure with initfini-array
enabled

 recipes-devtools/gcc/gcc-crosssdk-initial_%.bbappend            | 2 ++
 recipes-devtools/gcc/gcc-crosssdk_%.bbappend                    | 3 +++
 recipes-devtools/mingw-w64/nativesdk-mingw-w64-runtime_3.1.0.bb | 2 +-
 3 files changed, 6 insertions(+), 1 deletion(-)
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/3 mingw-64-runtime_3.1.bb: Adapt to SDK_ARCH -> SDK_SYS chanages for crosssdk

With the change of crosssdk to use SDK_SYS instead of SDK_ARCH, we need to update the recipe to match the changes in master.

[YOCTO #9281]

---
 recipes-devtools/mingw-w64/nativesdk-mingw-w64-runtime_3.1.0.bb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
recipes-devtools/mingw-w64/nativesdk-mingw-w64-runtime_3.1.0.bb +1 -1
index ddffcf4..c4292ad 100644
@@ -24,7 +24,7 @@ PROVIDES += "virtual/nativesdk-${SDK_PREFIX}libc-for-gcc"
 PROVIDES += "virtual/nativesdk-libintl"
 
 STAGINGCC = "gcc-cross-initial-${TARGET_ARCH}"
-STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${TARGET_ARCH}"
+STAGINGCC_class-nativesdk = "gcc-crosssdk-initial-${SDK_SYS}"
 TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TARGET}"
 PATH_prepend = "${STAGING_BINDIR_TOOLCHAIN}.${STAGINGCC}:"
 
Signature · 1 line
2.7.4
#2 lore raw

PATCH 2/3 gcc-crosssdk_%.bbappend: Do not configure with initfini-array enabled.

In reply to Juro Bystricky

Default configuration for gcc-crosssddk is now to enable initfini-array. However, this works only for Linux so we disable it for mingw32. Otherwise we will eventually encounter build error such as:

multiple definition of `__do_global_dtors'

---
 recipes-devtools/gcc/gcc-crosssdk_%.bbappend | 3 +++
 1 file changed, 3 insertions(+)
recipes-devtools/gcc/gcc-crosssdk_%.bbappend +3 -0
index 77ba57f..b3b843a 100644
@@ -1 +1,4 @@
 EXTRA_OECONF_mingw32 := "${@oe_filter_out('--with-linker-hash-style=${LINKER_HASH_STYLE}', '${EXTRA_OECONF}', d)}"
+PACKAGECONFIG_CONFARGS ?= ""
+EXTRA_OECONF_remove_mingw32 = "--enable-initfini-array"
+EXTRA_OECONF_append_mingw32 = " --disable-initfini-array"
Signature · 1 line
2.7.4
#3 lore raw

Re: [meta-mingw][PATCH 2/3] gcc-crosssdk_%.bbappend: Do not configure with initfini-array enabled.

Quoted 20 lines · Juro Bystricky

Default configuration for gcc-crosssddk is now to enable initfini-array. However, this works only for Linux so we disable it for mingw32. Otherwise we will eventually encounter build error such as:

multiple definition of `__do_global_dtors'

---
recipes-devtools/gcc/gcc-crosssdk_%.bbappend | 3 +++

1 file changed, 3 insertions(+)
recipes-devtools/gcc/gcc-crosssdk_%.bbappend +0 -0
index 77ba57f..b3b843a 100644
@@ -1 +1,4 @@

EXTRA_OECONF_mingw32 := "${@oe_filter_out('--with-linker-hash-style=${LINKER_HASH_STYLE}', '${EXTRA_OECONF}', d)}"

recipes-devtools/gcc/gcc-crosssdk_%.bbappend

Quoted 3 lines
recipes-devtools/gcc/gcc-crosssdk_%.bbappend +3 -0
+PACKAGECONFIG_CONFARGS ?= ""
+EXTRA_OECONF_remove_mingw32 = "--enable-initfini-array"
+EXTRA_OECONF_append_mingw32 = " --disable-initfini-array”

I think in OE-Core we should add this via PACKAGECONFIG

Quoted 8 lines

--
2.7.4

--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto

#4 lore raw

PATCH 3/3 gcc-crosssdk-initial_%.bbappend:Do not configure with initfini-array enabled

In reply to Juro Bystricky

Default configuration for gcc-crosssddk-initial is now to enable initfini-array. However, this works only for Linux so we disable it for mingw32. Otherwise, (with SDKMACHINE=x86_64-mingw32) we will eventually encounter errors such as:

Assembler messages:
Error: invalid instruction suffix for `push'
Error: invalid instruction suffix for `pop'

---
 recipes-devtools/gcc/gcc-crosssdk-initial_%.bbappend | 2 ++
 1 file changed, 2 insertions(+)
recipes-devtools/gcc/gcc-crosssdk-initial_%.bbappend +2 -0
index 1c09342..135a776 100644
@@ -1 +1,3 @@
 DEPENDS_append_mingw32 = " nativesdk-mingw-w64-headers"
+EXTRA_OECONF_remove_mingw32 = "--enable-initfini-array"
+EXTRA_OECONF_append_mingw32 = " --disable-initfini-array"
Signature · 1 line
2.7.4