Skip to content

Commit c069f5f

Browse files
stephanosiogalak
authored andcommitted
Add Xilinx QEMU (qemu-system-xilinx-aarch64).
This commit adds Xilinx QEMU recipe for building AArch64 QEMU (qemu-system-xilinx-aarch64). The Xilinx QEMU fork is necessary because the arm-generic-fdt machine type, required to properly emulate the Xilinx Zynq SoC, is only availabe on it at this time. For more details, refer to the issue #132. Signed-off-by: Stephanos Ioannidis <[email protected]>
1 parent 6c22de4 commit c069f5f

File tree

3 files changed

+222
-0
lines changed

3 files changed

+222
-0
lines changed

meta-zephyr-sdk/recipes-devtools/qemu/zephyr-qemu_git.bb

+4
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ do_configure() {
218218
--sysconfdir=${sysconfdir} --libexecdir=${libexecdir} --localstatedir=${localstatedir}
219219
}
220220

221+
do_install_append() {
222+
ln -sf ../xilinx/bin/qemu-system-aarch64 ${D}${bindir}/qemu-system-xilinx-aarch64
223+
}
224+
221225
FILES_${PN} = " \
222226
/opt/zephyr-sdk \
223227
"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
2+
DEPENDS = "glib-2.0 zlib pixman gnutls dtc"
3+
LICENSE = "GPLv2"
4+
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
5+
LIC_FILES_CHKSUM = "file://COPYING;md5=441c28d2cf86e15a37fa47e15a72fbac \
6+
file://COPYING.LIB;endline=24;md5=8c5efda6cf1e1b03dcfd0e6c0d271c7f"
7+
8+
SRCREV = "b1aa9923432b55765d3dc3a93d8398783887233e"
9+
SRC_URI = "git://github.com/Xilinx/qemu.git;protocol=https \
10+
"
11+
12+
BBCLASSEXTEND = "native nativesdk"
13+
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
14+
INHIBIT_PACKAGE_STRIP = "1"
15+
16+
S = "${WORKDIR}/git"
17+
18+
xilinx_qemu_prefix = "${base_prefix}/usr/xilinx"
19+
20+
inherit autotools pkgconfig
21+
22+
# Standard options:
23+
# --prefix=PREFIX install in PREFIX [$prefix]
24+
# --interp-prefix=PREFIX where to find shared libraries, etc.
25+
# use %M for cpu name [$interp_prefix]
26+
# --target-list=LIST set target list (default: build everything)
27+
# $(echo Available targets: $default_target_list | \
28+
# fold -s -w 53 | sed -e 's/^/ /')
29+
#
30+
# Advanced options (experts only):
31+
# --source-path=PATH path of source code [$source_path]
32+
# --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
33+
# --cc=CC use C compiler CC [$cc]
34+
# --iasl=IASL use ACPI compiler IASL [$iasl]
35+
# --host-cc=CC use C compiler CC [$host_cc] for code run at
36+
# build time
37+
# --cxx=CXX use C++ compiler CXX [$cxx]
38+
# --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
39+
# --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
40+
# --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
41+
# --make=MAKE use specified make [$make]
42+
# --install=INSTALL use specified install [$install]
43+
# --python=PYTHON use specified python [$python]
44+
# --smbd=SMBD use specified smbd [$smbd]
45+
# --static enable static build [$static]
46+
# --mandir=PATH install man pages in PATH
47+
# --datadir=PATH install firmware in PATH$confsuffix
48+
# --docdir=PATH install documentation in PATH$confsuffix
49+
# --bindir=PATH install binaries in PATH
50+
# --libdir=PATH install libraries in PATH
51+
# --sysconfdir=PATH install config in PATH$confsuffix
52+
# --localstatedir=PATH install local state in PATH (set at runtime on win32)
53+
# --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
54+
# --enable-modules enable modules support
55+
# --enable-debug-tcg enable TCG debugging
56+
# --disable-debug-tcg disable TCG debugging (default)
57+
# --enable-debug-info enable debugging information (default)
58+
# --disable-debug-info disable debugging information
59+
# --enable-debug enable common debug build options
60+
# --enable-sparse enable sparse checker
61+
# --disable-sparse disable sparse checker (default)
62+
# --disable-strip disable stripping binaries
63+
# --disable-werror disable compilation abort on warning
64+
# --disable-stack-protector disable compiler-provided stack protection
65+
# --disable-sdl disable SDL
66+
# --enable-sdl enable SDL
67+
# --with-sdlabi select preferred SDL ABI 1.2 or 2.0
68+
# --disable-gtk disable gtk UI
69+
# --enable-gtk enable gtk UI
70+
# --with-gtkabi select preferred GTK ABI 2.0 or 3.0
71+
# --disable-virtfs disable VirtFS
72+
# --enable-virtfs enable VirtFS
73+
# --disable-vnc disable VNC
74+
# --enable-vnc enable VNC
75+
# --disable-cocoa disable Cocoa (Mac OS X only)
76+
# --enable-cocoa enable Cocoa (default on Mac OS X)
77+
# --audio-drv-list=LIST set audio drivers list:
78+
# Available drivers: $audio_possible_drivers
79+
# --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
80+
# --block-drv-rw-whitelist=L
81+
# set block driver read-write whitelist
82+
# (affects only QEMU, not qemu-img)
83+
# --block-drv-ro-whitelist=L
84+
# set block driver read-only whitelist
85+
# (affects only QEMU, not qemu-img)
86+
# --disable-xen disable xen backend driver support
87+
# --enable-xen enable xen backend driver support
88+
# --disable-xen-pci-passthrough
89+
# --enable-xen-pci-passthrough
90+
# --disable-brlapi disable BrlAPI
91+
# --enable-brlapi enable BrlAPI
92+
# --disable-vnc-tls disable TLS encryption for VNC server
93+
# --enable-vnc-tls enable TLS encryption for VNC server
94+
# --disable-vnc-sasl disable SASL encryption for VNC server
95+
# --enable-vnc-sasl enable SASL encryption for VNC server
96+
# --disable-vnc-jpeg disable JPEG lossy compression for VNC server
97+
# --enable-vnc-jpeg enable JPEG lossy compression for VNC server
98+
# --disable-vnc-png disable PNG compression for VNC server (default)
99+
# --enable-vnc-png enable PNG compression for VNC server
100+
# --disable-vnc-ws disable Websockets support for VNC server
101+
# --enable-vnc-ws enable Websockets support for VNC server
102+
# --disable-curses disable curses output
103+
# --enable-curses enable curses output
104+
# --disable-curl disable curl connectivity
105+
# --enable-curl enable curl connectivity
106+
# --disable-fdt disable fdt device tree
107+
# --enable-fdt enable fdt device tree
108+
# --disable-bluez disable bluez stack connectivity
109+
# --enable-bluez enable bluez stack connectivity
110+
# --disable-slirp disable SLIRP userspace network connectivity
111+
# --disable-kvm disable KVM acceleration support
112+
# --enable-kvm enable KVM acceleration support
113+
# --disable-rdma disable RDMA-based migration support
114+
# --enable-rdma enable RDMA-based migration support
115+
# --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
116+
# --enable-system enable all system emulation targets
117+
# --disable-system disable all system emulation targets
118+
# --enable-user enable supported user emulation targets
119+
# --disable-user disable all user emulation targets
120+
# --enable-linux-user enable all linux usermode emulation targets
121+
# --disable-linux-user disable all linux usermode emulation targets
122+
# --enable-bsd-user enable all BSD usermode emulation targets
123+
# --disable-bsd-user disable all BSD usermode emulation targets
124+
# --enable-guest-base enable GUEST_BASE support for usermode
125+
# emulation targets
126+
# --disable-guest-base disable GUEST_BASE support
127+
# --enable-pie build Position Independent Executables
128+
# --disable-pie do not build Position Independent Executables
129+
# --fmod-lib path to FMOD library
130+
# --fmod-inc path to FMOD includes
131+
# --oss-lib path to OSS library
132+
# --cpu=CPU Build for host CPU [$cpu]
133+
# --enable-uuid enable uuid support
134+
# --disable-vde disable support for vde network
135+
# --enable-vde enable support for vde network
136+
# --disable-netmap disable support for netmap network
137+
# --enable-netmap enable support for netmap network
138+
# --disable-linux-aio disable Linux AIO support
139+
# --enable-linux-aio enable Linux AIO support
140+
# --disable-cap-ng disable libcap-ng support
141+
# --enable-cap-ng enable libcap-ng support
142+
# --disable-attr disables attr and xattr support
143+
# --enable-attr enable attr and xattr support
144+
# --disable-blobs disable installing provided firmware blobs
145+
# --enable-docs enable documentation build
146+
# --disable-docs disable documentation build
147+
# --disable-vhost-net disable vhost-net acceleration support
148+
# --enable-vhost-net enable vhost-net acceleration support
149+
# --enable-trace-backends=B Set trace backend
150+
# Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
151+
# --with-trace-file=NAME Full PATH,NAME of file to store traces
152+
# Default:trace-<pid>
153+
# --disable-spice disable spice
154+
# --enable-spice enable spice
155+
# --enable-rbd enable building the rados block device (rbd)
156+
# --disable-libiscsi disable iscsi support
157+
# --enable-libiscsi enable iscsi support
158+
# --disable-libnfs disable nfs support
159+
# --enable-libnfs enable nfs support
160+
# --disable-smartcard-nss disable smartcard nss support
161+
# --enable-smartcard-nss enable smartcard nss support
162+
# --disable-libusb disable libusb (for usb passthrough)
163+
# --enable-libusb enable libusb (for usb passthrough)
164+
# --disable-usb-redir disable usb network redirection support
165+
# --enable-usb-redir enable usb network redirection support
166+
# --enable-lzo enable the support of lzo compression library
167+
# --enable-snappy enable the support of snappy compression library
168+
# --disable-guest-agent disable building of the QEMU Guest Agent
169+
# --enable-guest-agent enable building of the QEMU Guest Agent
170+
# --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
171+
# --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
172+
# --disable-seccomp disable seccomp support
173+
# --enable-seccomp enables seccomp support
174+
# --with-coroutine=BACKEND coroutine backend. Supported options:
175+
# gthread, ucontext, sigaltstack, windows
176+
# --disable-coroutine-pool disable coroutine freelist (worse performance)
177+
# --enable-coroutine-pool enable coroutine freelist (better performance)
178+
# --enable-glusterfs enable GlusterFS backend
179+
# --disable-glusterfs disable GlusterFS backend
180+
# --enable-gcov enable test coverage analysis with gcov
181+
# --gcov=GCOV use specified gcov [$gcov_tool]
182+
# --disable-tpm disable TPM support
183+
# --enable-tpm enable TPM support
184+
# --disable-libssh2 disable ssh block device support
185+
# --enable-libssh2 enable ssh block device support
186+
# --disable-vhdx disables support for the Microsoft VHDX image format
187+
# --enable-vhdx enable support for the Microsoft VHDX image format
188+
# --disable-quorum disable quorum block filter support
189+
# --enable-quorum enable quorum block filter support
190+
# --disable-numa disable libnuma support
191+
# --enable-numa enable libnuma support
192+
193+
#--disable-fdt: Cannot use if supporting arm-generic-fdt machine type
194+
195+
QEMUS_BUILT = "aarch64-softmmu"
196+
QEMU_FLAGS = "--disable-docs --disable-sdl --disable-debug-info --disable-cap-ng \
197+
--disable-libnfs --disable-libusb --disable-libiscsi --disable-usb-redir --disable-linux-aio \
198+
--disable-guest-agent --disable-libssh --disable-vnc-png --disable-seccomp \
199+
--disable-tpm --disable-numa --disable-glusterfs --disable-blobs \
200+
--disable-virtfs --disable-xen --disable-curl --disable-attr --disable-curses --disable-iconv \
201+
"
202+
203+
# NOTE: Once --prefix is set, QEMU configure script automatically figures out adequate sysconfdir,
204+
# libexecdir and localstatedir based on the prefix directory; therefore, it is not necessary
205+
# to manually specify these directories. Using the global directory variables to specify
206+
# these directories will lead to shared file conflict with the upstream QEMU that resides in
207+
# /usr.
208+
209+
do_configure() {
210+
${S}/configure ${QEMU_FLAGS} --target-list="${QEMUS_BUILT}" --prefix=${xilinx_qemu_prefix}
211+
}
212+
213+
FILES_${PN} = " \
214+
/opt/zephyr-sdk \
215+
"
216+
217+
INSANE_SKIP_${PN} = "already-stripped"

meta-zephyr-sdk/recipes-hosttools/hosttools/hosttools-tarball.bb

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ TOOLCHAIN_TARGET_TASK ?= ""
88

99
TOOLCHAIN_HOST_TASK ?= "\
1010
nativesdk-zephyr-qemu \
11+
nativesdk-xilinx-qemu \
1112
nativesdk-openocd \
1213
nativesdk-bossa \
1314
nativesdk-dtc \

0 commit comments

Comments
 (0)