[OE-core] [PATCH 0/30] Adding support for building QEMU for Windows (with meta-mingw)

Nathan Rossi nathan at nathanrossi.com
Mon Jan 16 14:15:10 UTC 2017


This series is paired with a series that is sent for the meta-mingw
layer. That series depends on changes in this series and vice-versa.

The following series is a number of patches to improve mingw32 support
both in oe-core itself as well as for individual recipes. The goal is to
enable the building of QEMU for Windows such that the oe-core QEMU
targets (qemu* machines) will execute on Windows with and without
graphics (SDL/VNC and nographic). The series includes the following
major changes:

 * Support for detecting DLL runtime dependencies (aka shared objects)
   in both DLLs and EXEs
 * Extending of FILES_* defaults for cleaner packaging of mingw32 built
   components
 * Disabling of update-alternatives for mingw32 (not supported on
   Windows, and not all versions of Windows have symlink support)
 * Addition of PACKAGECONFIG options for a number of packages to handle
   Windows only features and or ability to disable features that do not
   support mingw32/Windows
 * Changes to recipes for proper packaging of DLLs (convention is to
   ship DLLs in the bindir), EXEs and other files
 * Changes to the QEMU include, to clean up configuration and move
   version specific patches changes into the versioned QEMU recipe

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 has been tested on the following Windows targets, executing
QEMU 2.7.0 with all qemu* oe-core machines and all qemu machines in
meta-xilinx:

 * Windows 10 (64-bit)
 * Windows 8.1 (64-bit)
 * Windows 7 SP1 (64-bit)

Additionally this series has been build tested on the following Linux
build hosts:

 * Debian 8 (64-bit)
 * Ubuntu 16.04 (64-bit)
 * CentOS 7 (64-bit)

There are a number of patches in this series which could be applied in
oe-core/meta or meta-mingw. Depending the patch it may be desired for
the change to be in meta-mingw instead of oe-core. If this is a case I
can modify and make the changes for meta-mingw. This is the reason
behind the segmentation of changes as small individual patches.

This work is contracted by Xilinx, and it intended to allow for the
building of the Xilinx QEMU fork for Windows (recipe is in the
meta-xilinx layer ->
http://git.yoctoproject.org/cgit/cgit.cgi/meta-xilinx/tree/recipes-devtools/qemu/qemu-xilinx_2016.4.bb).
The desired configuration for this QEMU fork is to have libgcrypt
support in addition to what is needed for the default oe-core QEMU
configuration, this is the reason for the inclusion of libgpg-error and
libgcrypt changes.

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

  https://github.com/nathanrossi/openembedded-core nrossi/mingw-qemu-v1


Nathan Rossi (30):
  gcc-configure-common.inc: Change 'initfini-array' to PACKAGECONFIG
  update-alternatives.bbclass: Disable for mingw32 targets
  package.bbclass: Add SHLIB detection support for mingw targets
  bitbake.conf: Add '${libdir}/*.def' to FILES_${PN}-dev defaults
  bitbake.conf: Override FILES_${PN}-bin for mingw32
  libpcre_8.39.bb: Handle shipping .exe and .dll files for mingw32
  gettext_0.19.8.1.bb: Fix shared building of gettext for mingw32
  gettext_0.19.8.1.bb: Handle packaging .dll's for mingw32
  gettext_0.19.8.1.bb: Add 'gettext-libintl' package
  libsdl_1.2.16.bb: Disable x11 for nativesdk mingw32
  libsdl_1.2.15.bb: Add 'directx' PACKAGECONFIG
  libsdl_1.2.15.bb: Add 'stdio-redirect' PACKAGECONFIG
  glib-2.0/glib.inc: Disable libmount support for mingw32 targets
  glib-2.0/glib.inc: Only apply MLPREFIX renaming to class-target
  glib-2.0/glib.inc: If 'charset.alias' exists drop it
  glib-2.0/glib.inc: Handle packaging .dll and .exe files for mingw32
  libgpg-error_1.25.bb: Enable nativesdk
  libgpg-error_1.25.bb: Add patch to resolve configure bug for mingw32
  libgpg-error_1.25.bb: Don't replace the syscfg header for mingw32
  libgpg-error_1.25.bb: Handle packaging .exe files
  libgcrypt.inc: Enable nativesdk
  libgcrypt.inc: Add PACKAGECONFIG for 'capabilities' and 'asm'
  libgcrypt.inc: Disable 'capabilities' for mingw32
  libgcrypt.inc: Add patch to resolve configure bug for mingw32
  libgcrypt.inc: Enable use of binconfig
  libgcrypt.inc: Handle packaging of .exe files
  qemu: Improve and add PACKAGECONFIG options
  qemu: Consolidate EXTRA_OECONF
  qemu: Convert KVMOPTS to PACKAGECONFIG
  qemu: Move recipe version specific patches and features to recipe

 meta/classes/package.bbclass                       | 21 ++++++
 meta/classes/update-alternatives.bbclass           |  4 +
 meta/conf/bitbake.conf                             |  5 +-
 .../fix-gl_cv_prog_as_underscore-test.patch        | 67 +++++++++++++++++
 meta/recipes-core/gettext/gettext_0.19.8.1.bb      | 17 +++--
 meta/recipes-core/glib-2.0/glib.inc                | 23 ++++--
 meta/recipes-devtools/gcc/gcc-configure-common.inc |  8 +-
 meta/recipes-devtools/qemu/qemu.inc                | 85 +++++++++-------------
 meta/recipes-devtools/qemu/qemu_2.7.0.bb           | 34 ++++++++-
 meta/recipes-graphics/libsdl/libsdl_1.2.15.bb      |  3 +
 ...c-Set-mym4_revision-to-0-if-not-a-git-rep.patch | 46 ++++++++++++
 meta/recipes-support/libgcrypt/libgcrypt.inc       | 17 +++--
 ...c-Set-mym4_revision-to-0-if-not-a-git-rep.patch | 46 ++++++++++++
 .../libgpg-error/libgpg-error_1.25.bb              | 17 +++--
 meta/recipes-support/libpcre/libpcre_8.39.bb       |  8 +-
 15 files changed, 313 insertions(+), 88 deletions(-)
 create mode 100644 meta/recipes-core/gettext/gettext-0.19.8.1/fix-gl_cv_prog_as_underscore-test.patch
 create mode 100644 meta/recipes-support/libgcrypt/files/configure.ac-Set-mym4_revision-to-0-if-not-a-git-rep.patch
 create mode 100644 meta/recipes-support/libgpg-error/libgpg-error/configure.ac-Set-mym4_revision-to-0-if-not-a-git-rep.patch

-- 
2.11.0



More information about the Openembedded-core mailing list