Skip to contentSkip to conversation

Adding support for building QEMU for Windows

PATCH Superseded Nathan Rossi 1 participant 3 messages Jan 30, 2017

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Adding support for building QEMU for Windows

This series enables a number of packages and dependencies to be built for mingw32. The goal is to enable the building and packaging of QEMU targeting mingw32 with support for SDL/VNC enabled as well as being able to execute the qemu* machines of oe-core/meta.

The following series fixes a number of issues with compilation of certain components that are required to build and distribute QEMU. This series includes:

* Enabling 'secure-api' for mingw-w64-headers
* Fix/enable building of shared libraries for gettext
* Work around to avoid dependency on bash for glib-2.0, clean up of some glib-2.0 appends which are resolved in oe-core meta
* Better packaging of libgcc for easy use on Windows (deploy dll to bindir)
* Updating FILES_* to support locations for mingw32 output (bindir contains .dll) for libgcc, expat, libpcre, gettext, glib-2.0, libsdl, libgpg-error and libgcrypt
* Addition of PACKAGECONFIG options to libsdl, and configuring of PACKAGECONFIG for libsdl, glib-2.0 and libgcrypt to handle Windows only features and or ability to disable features that do not support mingw32/Windows
* Enabling build of libfdt in the dtc recipe, but skipping dtc itself
* Fixes for configuring libgpg-error and libgcrypt when targeting mingw32

The intended build execution is to allow for 'buildtools-tarball' (or any populate_sdk target with 'nativesdk-qemu' in TOOLCHAIN_HOST_TASK) to create an output that includes all dependent nativesdk binaries as well as a nativesdk QEMU binaries. This series does not however address fixing the environment setup script or self-extracting installer shell script that is normally provided by buildtools-tarball.

This series with the multiple oe-core/meta series was tested on the following target Windows platforms: Windows 10 (64-bit), Windows 8.1 (64-bit) and Windows 7 SP1 (64-bit).

The changes were also tested on the following Linux build hosts: Debian 8 (64-bit), Ubuntu 16.04 (64-bit), CentOS 7 (64-bit).

For convenience this series is also available in the git repository:

https://github.com/nathanrossi/meta-mingw nrossi/mingw-qemu-v2

This series partly depends on a set of series for oe-core/meta. The following series are required for building of QEMU (but not all parts of this series specifically), including dll packaging detection and libgcrypt support:

https://patchwork.openembedded.org/series/5049/
https://patchwork.openembedded.org/series/5050/
https://patchwork.openembedded.org/series/5051/
https://patchwork.openembedded.org/series/5052/
https://patchwork.openembedded.org/series/5053/

A branch which has the series above merged has been published to allow for easy testing, it is available at:

https://github.com/nathanrossi/openembedded-core testing/mingw-support-2017-01-30

---

Changes v2:
* Moved a number of patches from oe-core series to this series
* Updated cover letter to reflect series additional inclusion
* Bring cover letter info from oe-core/meta series
* Updated commit messages

Nathan Rossi (19):
mingw-w64-headers: Add 'secure-api' PACKAGECONFIG
libgcc: Relocate and package dll's in bindir
expat: Fix ${PN}-bin handling for .exe files
libpcre: Handle shipping .exe and .dll files for mingw32 gettext_0.19.%.bbappend: Fix/enable shared building of gettext gettext_0.19.%.bbappend: Handle packaging .dll's for mingw32 gettext_0.19.%.bbappend: Handle gettext-libintl .dll packaging glib-2.0: Prevent a bash dependency via bash-completion glib-2.0: Disable libmount support for mingw32 targets glib-2.0: Handle packaging .dll and .exe files for mingw32 glib-2.0: Clean up unnecessary appends that are resolved in oe-core
dtc: Only build libfdt for mingw32
libsdl: Windows specific PACKAGECONFIG
libsdl: Fix ${PN}-bin handling for .exe files
libgpg-error: Handle packaging .exe files libgpg-error_1.25.bbappend: Add patch to fix configure bug for mingw32
libgcrypt: Handle packaging of .exe and .def files
libgcrypt: Disable 'capabilities' for mingw32 libgcrypt_1.7.3.bbappend: Add patch to fix configure bug for mingw32

 recipes-core/dtc/dtc_%.bbappend                    | 16 ++++++
 recipes-core/expat/expat_%.bbappend                |  3 +
 .../fix-gl_cv_prog_as_underscore-test.patch        | 67 ++++++++++++++++++++++
 recipes-core/gettext/gettext_0.19.%.bbappend       | 11 +++-
 recipes-core/glib-2.0/glib-2.0_%.bbappend          | 17 +++++-
 recipes-devtools/gcc/libgcc_%.bbappend             |  8 ++-
 .../mingw-w64/nativesdk-mingw-w64-headers_3.1.0.bb |  4 ++
 recipes-graphics/libsdl/libsdl_%.bbappend          |  9 +++
 ...c-Set-mym4_revision-to-0-if-not-a-git-rep.patch | 46 +++++++++++++++
 recipes-support/libgcrypt/libgcrypt_%.bbappend     | 11 ++++
 recipes-support/libgcrypt/libgcrypt_1.7.3.bbappend |  6 ++
 ...c-Set-mym4_revision-to-0-if-not-a-git-rep.patch | 46 +++++++++++++++
 .../libgpg-error/libgpg-error_%.bbappend           |  3 +
 .../libgpg-error/libgpg-error_1.25.bbappend        |  6 ++
 recipes-support/libpcre/libpcre_%.bbappend         |  6 ++
 15 files changed, 255 insertions(+), 4 deletions(-)
 create mode 100644 recipes-core/dtc/dtc_%.bbappend
 create mode 100644 recipes-core/expat/expat_%.bbappend
 create mode 100644 recipes-core/gettext/gettext/fix-gl_cv_prog_as_underscore-test.patch
 create mode 100644 recipes-graphics/libsdl/libsdl_%.bbappend
 create mode 100644 recipes-support/libgcrypt/files/configure.ac-Set-mym4_revision-to-0-if-not-a-git-rep.patch
 create mode 100644 recipes-support/libgcrypt/libgcrypt_%.bbappend
 create mode 100644 recipes-support/libgcrypt/libgcrypt_1.7.3.bbappend
 create mode 100644 recipes-support/libgpg-error/files/configure.ac-Set-mym4_revision-to-0-if-not-a-git-rep.patch
 create mode 100644 recipes-support/libgpg-error/libgpg-error_%.bbappend
 create mode 100644 recipes-support/libgpg-error/libgpg-error_1.25.bbappend
 create mode 100644 recipes-support/libpcre/libpcre_%.bbappend
Signature · 1 line
2.11.0
#1 lore raw

PATCH 1/19 mingw-w64-headers: Add 'secure-api' PACKAGECONFIG

Add the 'secure-api' PACKAGECONFIG and enable it by default. The 'secure-api' feature enables the secure string functions that are provided in the MS C Runtime e.g. "strerror_s".

These functions are needed for glib-2.0 compilation.

---
 recipes-devtools/mingw-w64/nativesdk-mingw-w64-headers_3.1.0.bb | 4 ++++
 1 file changed, 4 insertions(+)
recipes-devtools/mingw-w64/nativesdk-mingw-w64-headers_3.1.0.bb +4 -0
index 06312d604e..5cd4e34e09 100644
@@ -18,6 +18,10 @@ inherit autotools nativesdk
 INHIBIT_DEFAULT_DEPS = "1"
 DEPENDS = ""
 
+PACKAGECONFIG ??= "secure-api"
+
+PACKAGECONFIG[secure-api] = "--enable-secure-api,--disable-secure-api"
+
 do_configure() {
 	oe_runconf
 }
Signature · 1 line
2.11.0
#2 lore raw
In reply to Nathan Rossi

Sorry this should have v2 in the subject. I realized just as the second patch was sent. I've resent with v2 for clarity.

Regards,
Nathan

Quoted 119 lines · Nathan Rossi

This series enables a number of packages and dependencies to be built for mingw32. The goal is to enable the building and packaging of QEMU targeting mingw32 with support for SDL/VNC enabled as well as being able to execute the qemu* machines of oe-core/meta.

The following series fixes a number of issues with compilation of certain components that are required to build and distribute QEMU. This series includes:

* Enabling 'secure-api' for mingw-w64-headers
* Fix/enable building of shared libraries for gettext
* Work around to avoid dependency on bash for glib-2.0, clean up of some glib-2.0 appends which are resolved in oe-core meta
* Better packaging of libgcc for easy use on Windows (deploy dll to bindir)
* Updating FILES_* to support locations for mingw32 output (bindir contains .dll) for libgcc, expat, libpcre, gettext, glib-2.0, libsdl, libgpg-error and libgcrypt
* Addition of PACKAGECONFIG options to libsdl, and configuring of PACKAGECONFIG for libsdl, glib-2.0 and libgcrypt to handle Windows only features and or ability to disable features that do not support mingw32/Windows
* Enabling build of libfdt in the dtc recipe, but skipping dtc itself
* Fixes for configuring libgpg-error and libgcrypt when targeting mingw32

The intended build execution is to allow for 'buildtools-tarball' (or any populate_sdk target with 'nativesdk-qemu' in TOOLCHAIN_HOST_TASK) to create an output that includes all dependent nativesdk binaries as well as a nativesdk QEMU binaries. This series does not however address fixing the environment setup script or self-extracting installer shell script that is normally provided by buildtools-tarball.

This series with the multiple oe-core/meta series was tested on the following target Windows platforms: Windows 10 (64-bit), Windows 8.1 (64-bit) and Windows 7 SP1 (64-bit).

The changes were also tested on the following Linux build hosts: Debian 8 (64-bit), Ubuntu 16.04 (64-bit), CentOS 7 (64-bit).

For convenience this series is also available in the git repository:

https://github.com/nathanrossi/meta-mingw nrossi/mingw-qemu-v2

This series partly depends on a set of series for oe-core/meta. The following series are required for building of QEMU (but not all parts of this series specifically), including dll packaging detection and libgcrypt support:

https://patchwork.openembedded.org/series/5049/
https://patchwork.openembedded.org/series/5050/
https://patchwork.openembedded.org/series/5051/
https://patchwork.openembedded.org/series/5052/
https://patchwork.openembedded.org/series/5053/

A branch which has the series above merged has been published to allow for easy testing, it is available at:

https://github.com/nathanrossi/openembedded-core testing/mingw-support-2017-01-30

---

Changes v2:
* Moved a number of patches from oe-core series to this series
* Updated cover letter to reflect series additional inclusion
* Bring cover letter info from oe-core/meta series
* Updated commit messages

Nathan Rossi (19):
mingw-w64-headers: Add 'secure-api' PACKAGECONFIG
libgcc: Relocate and package dll's in bindir
expat: Fix ${PN}-bin handling for .exe files
libpcre: Handle shipping .exe and .dll files for mingw32 gettext_0.19.%.bbappend: Fix/enable shared building of gettext gettext_0.19.%.bbappend: Handle packaging .dll's for mingw32 gettext_0.19.%.bbappend: Handle gettext-libintl .dll packaging glib-2.0: Prevent a bash dependency via bash-completion glib-2.0: Disable libmount support for mingw32 targets glib-2.0: Handle packaging .dll and .exe files for mingw32 glib-2.0: Clean up unnecessary appends that are resolved in oe-core
dtc: Only build libfdt for mingw32
libsdl: Windows specific PACKAGECONFIG
libsdl: Fix ${PN}-bin handling for .exe files
libgpg-error: Handle packaging .exe files libgpg-error_1.25.bbappend: Add patch to fix configure bug for mingw32
libgcrypt: Handle packaging of .exe and .def files
libgcrypt: Disable 'capabilities' for mingw32 libgcrypt_1.7.3.bbappend: Add patch to fix configure bug for mingw32

 recipes-core/dtc/dtc_%.bbappend                    | 16 ++++++
 recipes-core/expat/expat_%.bbappend                |  3 +
 .../fix-gl_cv_prog_as_underscore-test.patch        | 67 ++++++++++++++++++++++
 recipes-core/gettext/gettext_0.19.%.bbappend       | 11 +++-
 recipes-core/glib-2.0/glib-2.0_%.bbappend          | 17 +++++-
 recipes-devtools/gcc/libgcc_%.bbappend             |  8 ++-
 .../mingw-w64/nativesdk-mingw-w64-headers_3.1.0.bb |  4 ++
 recipes-graphics/libsdl/libsdl_%.bbappend          |  9 +++
 ...c-Set-mym4_revision-to-0-if-not-a-git-rep.patch | 46 +++++++++++++++
 recipes-support/libgcrypt/libgcrypt_%.bbappend     | 11 ++++
 recipes-support/libgcrypt/libgcrypt_1.7.3.bbappend |  6 ++
 ...c-Set-mym4_revision-to-0-if-not-a-git-rep.patch | 46 +++++++++++++++
 .../libgpg-error/libgpg-error_%.bbappend           |  3 +
 .../libgpg-error/libgpg-error_1.25.bbappend        |  6 ++
 recipes-support/libpcre/libpcre_%.bbappend         |  6 ++
 15 files changed, 255 insertions(+), 4 deletions(-)
 create mode 100644 recipes-core/dtc/dtc_%.bbappend
 create mode 100644 recipes-core/expat/expat_%.bbappend
 create mode 100644 recipes-core/gettext/gettext/fix-gl_cv_prog_as_underscore-test.patch
 create mode 100644 recipes-graphics/libsdl/libsdl_%.bbappend
 create mode 100644 recipes-support/libgcrypt/files/configure.ac-Set-mym4_revision-to-0-if-not-a-git-rep.patch
 create mode 100644 recipes-support/libgcrypt/libgcrypt_%.bbappend
 create mode 100644 recipes-support/libgcrypt/libgcrypt_1.7.3.bbappend
 create mode 100644 recipes-support/libgpg-error/files/configure.ac-Set-mym4_revision-to-0-if-not-a-git-rep.patch
 create mode 100644 recipes-support/libgpg-error/libgpg-error_%.bbappend
 create mode 100644 recipes-support/libgpg-error/libgpg-error_1.25.bbappend
 create mode 100644 recipes-support/libpcre/libpcre_%.bbappend

--
2.11.0