Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 234 additions & 0 deletions meta-zephyr-sdk/recipes-devtools/arc_qemu/arc-qemu_git.bb
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@

DEPENDS = "glib-2.0 zlib pixman gnutls libtasn1 dtc ninja-native meson-native"
LICENSE = "GPLv2"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f"

SRCREV = "2625a6fbc3f60233e1d340931d00242d82230091"
SRC_URI = "git://github.com/foss-for-synopsys-dwc-arc-processors/qemu.git;protocol=https \
file://cross.patch \
"

BBCLASSEXTEND = "native nativesdk"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"

S = "${WORKDIR}/git"

arc_qemu_prefix = "${base_prefix}/usr/synopsys"

inherit autotools pkgconfig

# Standard options:
# --prefix=PREFIX install in PREFIX [$prefix]
# --interp-prefix=PREFIX where to find shared libraries, etc.
# use %M for cpu name [$interp_prefix]
# --target-list=LIST set target list (default: build everything)
# $(echo Available targets: $default_target_list | \
# fold -s -w 53 | sed -e 's/^/ /')
#
# Advanced options (experts only):
# --source-path=PATH path of source code [$source_path]
# --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
# --cc=CC use C compiler CC [$cc]
# --iasl=IASL use ACPI compiler IASL [$iasl]
# --host-cc=CC use C compiler CC [$host_cc] for code run at
# build time
# --cxx=CXX use C++ compiler CXX [$cxx]
# --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
# --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
# --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
# --make=MAKE use specified make [$make]
# --install=INSTALL use specified install [$install]
# --python=PYTHON use specified python [$python]
# --smbd=SMBD use specified smbd [$smbd]
# --static enable static build [$static]
# --mandir=PATH install man pages in PATH
# --datadir=PATH install firmware in PATH$confsuffix
# --docdir=PATH install documentation in PATH$confsuffix
# --bindir=PATH install binaries in PATH
# --libdir=PATH install libraries in PATH
# --sysconfdir=PATH install config in PATH$confsuffix
# --localstatedir=PATH install local state in PATH (set at runtime on win32)
# --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
# --enable-modules enable modules support
# --enable-debug-tcg enable TCG debugging
# --disable-debug-tcg disable TCG debugging (default)
# --enable-debug-info enable debugging information (default)
# --disable-debug-info disable debugging information
# --enable-debug enable common debug build options
# --enable-sparse enable sparse checker
# --disable-sparse disable sparse checker (default)
# --disable-strip disable stripping binaries
# --disable-werror disable compilation abort on warning
# --disable-stack-protector disable compiler-provided stack protection
# --disable-sdl disable SDL
# --enable-sdl enable SDL
# --with-sdlabi select preferred SDL ABI 1.2 or 2.0
# --disable-gtk disable gtk UI
# --enable-gtk enable gtk UI
# --with-gtkabi select preferred GTK ABI 2.0 or 3.0
# --disable-virtfs disable VirtFS
# --enable-virtfs enable VirtFS
# --disable-vnc disable VNC
# --enable-vnc enable VNC
# --disable-cocoa disable Cocoa (Mac OS X only)
# --enable-cocoa enable Cocoa (default on Mac OS X)
# --audio-drv-list=LIST set audio drivers list:
# Available drivers: $audio_possible_drivers
# --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
# --block-drv-rw-whitelist=L
# set block driver read-write whitelist
# (affects only QEMU, not qemu-img)
# --block-drv-ro-whitelist=L
# set block driver read-only whitelist
# (affects only QEMU, not qemu-img)
# --disable-xen disable xen backend driver support
# --enable-xen enable xen backend driver support
# --disable-xen-pci-passthrough
# --enable-xen-pci-passthrough
# --disable-brlapi disable BrlAPI
# --enable-brlapi enable BrlAPI
# --disable-vnc-tls disable TLS encryption for VNC server
# --enable-vnc-tls enable TLS encryption for VNC server
# --disable-vnc-sasl disable SASL encryption for VNC server
# --enable-vnc-sasl enable SASL encryption for VNC server
# --disable-vnc-jpeg disable JPEG lossy compression for VNC server
# --enable-vnc-jpeg enable JPEG lossy compression for VNC server
# --disable-vnc-png disable PNG compression for VNC server (default)
# --enable-vnc-png enable PNG compression for VNC server
# --disable-vnc-ws disable Websockets support for VNC server
# --enable-vnc-ws enable Websockets support for VNC server
# --disable-curses disable curses output
# --enable-curses enable curses output
# --disable-curl disable curl connectivity
# --enable-curl enable curl connectivity
# --disable-fdt disable fdt device tree
# --enable-fdt enable fdt device tree
# --disable-bluez disable bluez stack connectivity
# --enable-bluez enable bluez stack connectivity
# --disable-slirp disable SLIRP userspace network connectivity
# --disable-kvm disable KVM acceleration support
# --enable-kvm enable KVM acceleration support
# --disable-rdma disable RDMA-based migration support
# --enable-rdma enable RDMA-based migration support
# --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
# --enable-system enable all system emulation targets
# --disable-system disable all system emulation targets
# --enable-user enable supported user emulation targets
# --disable-user disable all user emulation targets
# --enable-linux-user enable all linux usermode emulation targets
# --disable-linux-user disable all linux usermode emulation targets
# --enable-bsd-user enable all BSD usermode emulation targets
# --disable-bsd-user disable all BSD usermode emulation targets
# --enable-guest-base enable GUEST_BASE support for usermode
# emulation targets
# --disable-guest-base disable GUEST_BASE support
# --enable-pie build Position Independent Executables
# --disable-pie do not build Position Independent Executables
# --fmod-lib path to FMOD library
# --fmod-inc path to FMOD includes
# --oss-lib path to OSS library
# --cpu=CPU Build for host CPU [$cpu]
# --enable-uuid enable uuid support
# --disable-vde disable support for vde network
# --enable-vde enable support for vde network
# --disable-netmap disable support for netmap network
# --enable-netmap enable support for netmap network
# --disable-linux-aio disable Linux AIO support
# --enable-linux-aio enable Linux AIO support
# --disable-cap-ng disable libcap-ng support
# --enable-cap-ng enable libcap-ng support
# --disable-attr disables attr and xattr support
# --enable-attr enable attr and xattr support
# --disable-blobs disable installing provided firmware blobs
# --enable-docs enable documentation build
# --disable-docs disable documentation build
# --disable-vhost-net disable vhost-net acceleration support
# --enable-vhost-net enable vhost-net acceleration support
# --enable-trace-backends=B Set trace backend
# Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
# --with-trace-file=NAME Full PATH,NAME of file to store traces
# Default:trace-<pid>
# --disable-spice disable spice
# --enable-spice enable spice
# --enable-rbd enable building the rados block device (rbd)
# --disable-libiscsi disable iscsi support
# --enable-libiscsi enable iscsi support
# --disable-libnfs disable nfs support
# --enable-libnfs enable nfs support
# --disable-smartcard-nss disable smartcard nss support
# --enable-smartcard-nss enable smartcard nss support
# --disable-libusb disable libusb (for usb passthrough)
# --enable-libusb enable libusb (for usb passthrough)
# --disable-usb-redir disable usb network redirection support
# --enable-usb-redir enable usb network redirection support
# --enable-lzo enable the support of lzo compression library
# --enable-snappy enable the support of snappy compression library
# --disable-guest-agent disable building of the QEMU Guest Agent
# --enable-guest-agent enable building of the QEMU Guest Agent
# --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
# --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
# --disable-seccomp disable seccomp support
# --enable-seccomp enables seccomp support
# --with-coroutine=BACKEND coroutine backend. Supported options:
# gthread, ucontext, sigaltstack, windows
# --disable-coroutine-pool disable coroutine freelist (worse performance)
# --enable-coroutine-pool enable coroutine freelist (better performance)
# --enable-glusterfs enable GlusterFS backend
# --disable-glusterfs disable GlusterFS backend
# --enable-gcov enable test coverage analysis with gcov
# --gcov=GCOV use specified gcov [$gcov_tool]
# --disable-tpm disable TPM support
# --enable-tpm enable TPM support
# --disable-libssh2 disable ssh block device support
# --enable-libssh2 enable ssh block device support
# --disable-vhdx disables support for the Microsoft VHDX image format
# --enable-vhdx enable support for the Microsoft VHDX image format
# --disable-quorum disable quorum block filter support
# --enable-quorum enable quorum block filter support
# --disable-numa disable libnuma support
# --enable-numa enable libnuma support


QEMUS_BUILT = "arc-softmmu arc64-softmmu"
QEMU_FLAGS = "--disable-docs --disable-sdl --disable-debug-info --disable-cap-ng \
--disable-libnfs --disable-libusb --disable-libiscsi --disable-usb-redir --disable-linux-aio\
--disable-guest-agent --disable-libssh --disable-vnc-png --disable-seccomp \
--disable-tpm --disable-numa --disable-glusterfs \
--disable-virtfs --disable-xen --disable-curl --disable-attr --disable-curses --disable-iconv \
--disable-kvm --disable-parallels --disable-replication \
--disable-live-block-migration --disable-dmg --disable-fdt --disable-blobs \
"

# NOTE: Once --prefix is set, QEMU configure script automatically figures out adequate sysconfdir,
# libexecdir and localstatedir based on the prefix directory; therefore, it is not necessary
# to manually specify these directories. Using the global directory variables to specify
# these directories will lead to shared file conflict with the upstream QEMU that resides in
# /usr.

do_configure() {
# Unset the install path environment variables set by the BitBake because the new configure
# script picks these up, and that interferes with prefix-based install path resolution.
unset libdir
unset libexecdir
unset includedir
unset bindir
unset mandir
unset datadir
unset docdir
unset sysconfdir
unset local_statedir
unset firmwarepath
unset localedir

${S}/configure ${QEMU_FLAGS} --target-list="${QEMUS_BUILT}" --prefix=${arc_qemu_prefix} \
--meson=meson
}

FILES_${PN} = " \
/opt/zephyr-sdk \
"

INSANE_SKIP_${PN} = "already-stripped"
30 changes: 30 additions & 0 deletions meta-zephyr-sdk/recipes-devtools/arc_qemu/files/cross.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
We need to be able to trigger configure's cross code but we don't want
to set cross_prefix as it does other things we don't want. Patch things
so we can do what we need in the target config case.

Upstream-Status: Inappropriate [may be rewritten in a way upstream may accept?]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>


Index: qemu/configure
===================================================================
--- a/configure
+++ b/configure
@@ -3934,7 +3934,6 @@ if test "$skip_meson" = no; then
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Offsets differ from the same patch for generic QEMU, so maybe you copy over one version over another so that they match exactly? Otherwise it might look a bit suspicious.

fi
echo "strip = [$(meson_quote $strip)]" >> $cross
echo "windres = [$(meson_quote $windres)]" >> $cross
- if test "$cross_compile" = "yes"; then
cross_arg="--cross-file config-meson.cross"
echo "[host_machine]" >> $cross
if test "$mingw32" = "yes" ; then
@@ -3966,9 +3965,6 @@ if test "$skip_meson" = no; then
else
echo "endian = 'little'" >> $cross
fi
- else
- cross_arg="--native-file config-meson.cross"
- fi
mv $cross config-meson.cross

rm -rf meson-private meson-info meson-logs
37 changes: 37 additions & 0 deletions meta-zephyr-sdk/recipes-devtools/meson/meson.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HOMEPAGE = "http://mesonbuild.com"
SUMMARY = "A high performance build system"
DESCRIPTION = "Meson is a build system designed to increase programmer \
productivity. It does this by providing a fast, simple and easy to use \
interface for modern software development tools and practices."

LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"

SRC_URI = "https://github.com/mesonbuild/meson/releases/download/${PV}/meson-${PV}.tar.gz \
file://0001-gtkdoc-fix-issues-that-arise-when-cross-compiling.patch \
file://0001-python-module-do-not-manipulate-the-environment-when.patch \
file://disable-rpath-handling.patch \
file://0001-modules-python.py-do-not-substitute-python-s-install.patch \
file://0001-Make-CPU-family-warnings-fatal.patch \
file://0002-Support-building-allarch-recipes-again.patch \
"
SRC_URI[sha256sum] = "db586a451650d46bbe10984a87b79d9bcdc1caebf38d8e189f8848f8d502356d"

UPSTREAM_CHECK_URI = "https://github.com/mesonbuild/meson/releases"
UPSTREAM_CHECK_REGEX = "meson-(?P<pver>\d+(\.\d+)+)\.tar"

inherit setuptools3

RDEPENDS_${PN} = "ninja python3-modules python3-pkg-resources"

FILES_${PN} += "${datadir}/polkit-1"

do_install_append () {
# As per the same issue in the python recipe itself:
# Unfortunately the following pyc files are non-deterministc due to 'frozenset'
# being written without strict ordering, even with PYTHONHASHSEED = 0
# Upstream is discussing ways to solve the issue properly, until then let's
# just not install the problematic files.
# More info: http://benno.id.au/blog/2013/01/15/python-determinism
rm ${D}${libdir}/python*/site-packages/mesonbuild/dependencies/__pycache__/mpi.cpython*
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
From 6c4eef1d92e9e42fdbc888365cab3c95fb33c605 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@intel.com>
Date: Tue, 3 Jul 2018 13:59:09 +0100
Subject: [PATCH] Make CPU family warnings fatal

Upstream-Status: Inappropriate [OE specific]
Signed-off-by: Ross Burton <ross.burton@intel.com>

---
mesonbuild/envconfig.py | 2 +-
mesonbuild/environment.py | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/mesonbuild/envconfig.py b/mesonbuild/envconfig.py
index 307aac3..66fb7ec 100644
--- a/mesonbuild/envconfig.py
+++ b/mesonbuild/envconfig.py
@@ -267,7 +267,7 @@ class MachineInfo(HoldableObject):

cpu_family = literal['cpu_family']
if cpu_family not in known_cpu_families:
- mlog.warning(f'Unknown CPU family {cpu_family}, please report this at https://github.com/mesonbuild/meson/issues/new')
+ raise EnvironmentException('Unknown CPU family {}, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.'.format(cpu_family))

endian = literal['endian']
if endian not in ('little', 'big'):
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 71286a5..179917e 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -352,9 +352,7 @@ def detect_cpu_family(compilers: CompilersDict) -> str:
trial = 'ppc64'

if trial not in known_cpu_families:
- mlog.warning(f'Unknown CPU family {trial!r}, please report this at '
- 'https://github.com/mesonbuild/meson/issues/new with the '
- 'output of `uname -a` and `cat /proc/cpuinfo`')
+ raise EnvironmentException('Unknown CPU family %s, see https://wiki.yoctoproject.org/wiki/Meson/UnknownCPU for directions.' % trial)

return trial

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
From 2f9c59e0489e569c5382404667c10f5c200a72ad Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 4 Aug 2017 16:16:41 +0300
Subject: [PATCH] gtkdoc: fix issues that arise when cross-compiling

Specifically:
1) Make it possible to specify a wrapper for executing binaries
(usually, some kind of target hardware emulator, such as qemu)
2) Explicitly provide CC and LD via command line, as otherwise gtk-doc will
try to guess them, incorrectly.
3) If things break down, print the full command with arguments,
not just the binary name.
4) Correctly determine the compiler/linker executables and cross-options when cross-compiling

Upstream-Status: Pending
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>

---
mesonbuild/modules/gnome.py | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index dc2979e..c9ff9bd 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -1053,6 +1053,10 @@ class GnomeModule(ExtensionModule):
args.append(f'--{program_name}={path}')
if namespace:
args.append('--namespace=' + namespace)
+ gtkdoc_exe_wrapper = state.environment.properties.host.get('gtkdoc_exe_wrapper', None)
+ if gtkdoc_exe_wrapper is not None:
+ args.append('--run=' + gtkdoc_exe_wrapper)
+
args += self._unpack_args('--htmlargs=', 'html_args', kwargs)
args += self._unpack_args('--scanargs=', 'scan_args', kwargs)
args += self._unpack_args('--scanobjsargs=', 'scanobjs_args', kwargs)
Loading