meson fixes:
* bump submodule to 0.55.1 * SDL, pixman and zlib fixes * firmwarepath fix * fix firmware builds meson related: * move install to Meson * move NSIS to Meson * do not make meson use cmake * add description to options -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAl9OcpcUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroM9+Af+InfjEFtsoubgQA2L7B1sHeksINOI nMAw9plmJSX0Qabp0PJDrMcBiLZlbdFGCm/88heTyDGRtbhIXLUrE2J0dyV4R4nR OSyuTgDna75QLxy6k1dIh6qVAtcj2hg+CxaJrUf2Ix6A1d1PAfWoweNXSF1LBmJf pyQ39eZXStI7/bkmwgTY3qK1gwjEaskvf68fTp1hgTN0VHwUb23/nucPaizbVF+a A0nWprPQaTjWhAFQ2jJesBbhN6FtD3EnOZs56JOSQ9J7W6uDnw8a+tOdEDbSYKe2 DdEUEjcz2cqAMCiWrzOMgxB8T885H+8yE6jgEmPHWaUUORQADMcBDMihNA== =NGLI -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging meson fixes: * bump submodule to 0.55.1 * SDL, pixman and zlib fixes * firmwarepath fix * fix firmware builds meson related: * move install to Meson * move NSIS to Meson * do not make meson use cmake * add description to options # gpg: Signature made Tue 01 Sep 2020 17:11:03 BST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini-gitlab/tags/for-upstream: (26 commits) Makefile: Fix in-tree clean/distclean Makefile: Add back TAGS/ctags/cscope rules meson: add description to options build: fix recurse-all target meson: use pkg-config method to find dependencies configure: do not include ${prefix} in firmwarepath meson: add pixman dependency to UI modules meson: add pixman dependency to chardev/baum module meson: add NSIS building meson: use meson mandir instead of qemu_mandir meson: pass docdir option meson: use meson datadir instead of qemu_datadir meson: pass qemu_suffix option configure: build docdir like other suffixed directories configure: always /-seperate directory from qemu_suffix configure: rename confsuffix option meson: move zlib detection to meson build-sys: remove install target from Makefile meson: install $localstatedir/run for qga meson: install desktop file ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
887adde81d
150
Makefile
150
Makefile
|
@ -54,15 +54,8 @@ export NINJA=./ninjatool
|
||||||
# enough to prime the rest of the build.
|
# enough to prime the rest of the build.
|
||||||
ninjatool: build.ninja
|
ninjatool: build.ninja
|
||||||
|
|
||||||
# Only needed in case Makefile.ninja does not exist.
|
|
||||||
.PHONY: ninja-clean ninja-distclean clean-ctlist
|
|
||||||
clean-ctlist:
|
|
||||||
ninja-clean::
|
|
||||||
ninja-distclean::
|
|
||||||
build.ninja: config-host.mak
|
|
||||||
|
|
||||||
Makefile.ninja: build.ninja ninjatool
|
Makefile.ninja: build.ninja ninjatool
|
||||||
./ninjatool -t ninja2make --omit clean dist uninstall < $< > $@
|
./ninjatool -t ninja2make --omit clean dist uninstall cscope TAGS ctags < $< > $@
|
||||||
-include Makefile.ninja
|
-include Makefile.ninja
|
||||||
|
|
||||||
${ninja-targets-c_COMPILER} ${ninja-targets-cpp_COMPILER}: .var.command += -MP
|
${ninja-targets-c_COMPILER} ${ninja-targets-cpp_COMPILER}: .var.command += -MP
|
||||||
|
@ -115,6 +108,13 @@ ifneq ($(filter-out $(UNCHECKED_GOALS),$(MAKECMDGOALS)),$(if $(MAKECMDGOALS),,fa
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Only needed in case Makefile.ninja does not exist.
|
||||||
|
.PHONY: ninja-clean ninja-distclean clean-ctlist
|
||||||
|
clean-ctlist:
|
||||||
|
ninja-clean::
|
||||||
|
ninja-distclean::
|
||||||
|
build.ninja: config-host.mak
|
||||||
|
|
||||||
include $(SRC_PATH)/rules.mak
|
include $(SRC_PATH)/rules.mak
|
||||||
|
|
||||||
# lor is defined in rules.mak
|
# lor is defined in rules.mak
|
||||||
|
@ -186,16 +186,16 @@ ROM_DIRS_RULES=$(foreach t, all clean, $(addsuffix /$(t), $(ROM_DIRS)))
|
||||||
# Only keep -O and -g cflags
|
# Only keep -O and -g cflags
|
||||||
.PHONY: $(ROM_DIRS_RULES)
|
.PHONY: $(ROM_DIRS_RULES)
|
||||||
$(ROM_DIRS_RULES):
|
$(ROM_DIRS_RULES):
|
||||||
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" CFLAGS="$(filter -O% -g%,$(CFLAGS))" $(notdir $@),)
|
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $(dir $@) V="$(V)" TARGET_DIR="$(dir $@)" $(notdir $@),)
|
||||||
|
|
||||||
.PHONY: recurse-all recurse-clean
|
.PHONY: recurse-all recurse-clean
|
||||||
recurse-all: $(ROM_DIRS)
|
recurse-all: $(addsuffix /all, $(ROM_DIRS))
|
||||||
recurse-clean: $(addsuffix /clean, $(ROM_DIRS))
|
recurse-clean: $(addsuffix /clean, $(ROM_DIRS))
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
clean: recurse-clean ninja-clean clean-ctlist
|
clean: recurse-clean ninja-clean clean-ctlist
|
||||||
-test -f ninjatool && ./ninjatool $(if $(V),-v,) -t clean
|
if test -f ninjatool; then ./ninjatool $(if $(V),-v,) -t clean; fi
|
||||||
# avoid old build problems by removing potentially incorrect old files
|
# avoid old build problems by removing potentially incorrect old files
|
||||||
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
|
rm -f config.mak op-i386.h opc-i386.h gen-op-i386.h op-arm.h opc-arm.h gen-op-arm.h
|
||||||
find . \( -name '*.so' -o -name '*.dll' -o -name '*.[oda]' \) -type f \
|
find . \( -name '*.so' -o -name '*.dll' -o -name '*.[oda]' \) -type f \
|
||||||
|
@ -229,126 +229,24 @@ distclean: clean ninja-distclean
|
||||||
rm -f linux-headers/asm
|
rm -f linux-headers/asm
|
||||||
rm -Rf .sdk
|
rm -Rf .sdk
|
||||||
|
|
||||||
ifdef INSTALL_BLOBS
|
.PHONY: ctags
|
||||||
BLOBS=bios.bin bios-256k.bin bios-microvm.bin sgabios.bin vgabios.bin vgabios-cirrus.bin \
|
ctags:
|
||||||
vgabios-stdvga.bin vgabios-vmware.bin vgabios-qxl.bin vgabios-virtio.bin \
|
rm -f tags
|
||||||
vgabios-ramfb.bin vgabios-bochs-display.bin vgabios-ati.bin \
|
find "$(SRC_PATH)" -name '*.[hc]' -exec ctags --append {} +
|
||||||
openbios-sparc32 openbios-sparc64 openbios-ppc QEMU,tcx.bin QEMU,cgthree.bin \
|
|
||||||
pxe-e1000.rom pxe-eepro100.rom pxe-ne2k_pci.rom \
|
|
||||||
pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \
|
|
||||||
efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \
|
|
||||||
efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom \
|
|
||||||
efi-e1000e.rom efi-vmxnet3.rom \
|
|
||||||
qemu-nsis.bmp \
|
|
||||||
bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \
|
|
||||||
multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin \
|
|
||||||
s390-ccw.img s390-netboot.img \
|
|
||||||
slof.bin skiboot.lid \
|
|
||||||
palcode-clipper \
|
|
||||||
u-boot.e500 u-boot-sam460-20100605.bin \
|
|
||||||
qemu_vga.ndrv \
|
|
||||||
edk2-licenses.txt \
|
|
||||||
hppa-firmware.img \
|
|
||||||
opensbi-riscv32-generic-fw_dynamic.bin opensbi-riscv64-generic-fw_dynamic.bin \
|
|
||||||
opensbi-riscv32-generic-fw_dynamic.elf opensbi-riscv64-generic-fw_dynamic.elf
|
|
||||||
else
|
|
||||||
BLOBS=
|
|
||||||
endif
|
|
||||||
|
|
||||||
install-datadir:
|
.PHONY: TAGS
|
||||||
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)"
|
TAGS:
|
||||||
|
rm -f TAGS
|
||||||
|
find "$(SRC_PATH)" -name '*.[hc]' -exec etags --append {} +
|
||||||
|
|
||||||
install-localstatedir:
|
.PHONY: cscope
|
||||||
ifdef CONFIG_POSIX
|
cscope:
|
||||||
ifeq ($(CONFIG_GUEST_AGENT),y)
|
rm -f "$(SRC_PATH)"/cscope.*
|
||||||
$(INSTALL_DIR) "$(DESTDIR)$(qemu_localstatedir)"/run
|
find "$(SRC_PATH)/" -name "*.[chsS]" -print | sed -e 's,^\./,,' > "$(SRC_PATH)/cscope.files"
|
||||||
endif
|
cscope -b -i"$(SRC_PATH)/cscope.files"
|
||||||
endif
|
|
||||||
|
|
||||||
ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
|
|
||||||
|
|
||||||
# Needed by "meson install"
|
# Needed by "meson install"
|
||||||
export DESTDIR
|
export DESTDIR
|
||||||
install: all install-datadir install-localstatedir
|
|
||||||
ifdef CONFIG_TRACE_SYSTEMTAP
|
|
||||||
$(INSTALL_PROG) "scripts/qemu-trace-stap" $(DESTDIR)$(bindir)
|
|
||||||
endif
|
|
||||||
ifneq ($(BLOBS),)
|
|
||||||
set -e; for x in $(BLOBS); do \
|
|
||||||
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
|
|
||||||
done
|
|
||||||
endif
|
|
||||||
for s in $(ICON_SIZES); do \
|
|
||||||
mkdir -p "$(DESTDIR)$(qemu_icondir)/hicolor/$${s}/apps"; \
|
|
||||||
$(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_$${s}.png \
|
|
||||||
"$(DESTDIR)$(qemu_icondir)/hicolor/$${s}/apps/qemu.png"; \
|
|
||||||
done; \
|
|
||||||
mkdir -p "$(DESTDIR)$(qemu_icondir)/hicolor/32x32/apps"; \
|
|
||||||
$(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_32x32.bmp \
|
|
||||||
"$(DESTDIR)$(qemu_icondir)/hicolor/32x32/apps/qemu.bmp"; \
|
|
||||||
mkdir -p "$(DESTDIR)$(qemu_icondir)/hicolor/scalable/apps"; \
|
|
||||||
$(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu.svg \
|
|
||||||
"$(DESTDIR)$(qemu_icondir)/hicolor/scalable/apps/qemu.svg"
|
|
||||||
mkdir -p "$(DESTDIR)$(qemu_desktopdir)"
|
|
||||||
$(INSTALL_DATA) $(SRC_PATH)/ui/qemu.desktop \
|
|
||||||
"$(DESTDIR)$(qemu_desktopdir)/qemu.desktop"
|
|
||||||
$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/keymaps"
|
|
||||||
|
|
||||||
ifdef CONFIG_WIN32
|
|
||||||
|
|
||||||
INSTALLER = qemu-setup-$(VERSION)$(EXESUF)
|
|
||||||
|
|
||||||
nsisflags = -V2 -NOCD
|
|
||||||
|
|
||||||
ifneq ($(wildcard $(SRC_PATH)/dll),)
|
|
||||||
ifeq ($(ARCH),x86_64)
|
|
||||||
# 64 bit executables
|
|
||||||
DLL_PATH = $(SRC_PATH)/dll/w64
|
|
||||||
nsisflags += -DW64
|
|
||||||
else
|
|
||||||
# 32 bit executables
|
|
||||||
DLL_PATH = $(SRC_PATH)/dll/w32
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: installer
|
|
||||||
installer: $(INSTALLER)
|
|
||||||
|
|
||||||
INSTDIR=/tmp/qemu-nsis
|
|
||||||
|
|
||||||
$(INSTALLER): $(SRC_PATH)/qemu.nsi
|
|
||||||
$(MAKE) install DESTDIR=${INSTDIR}
|
|
||||||
ifdef SIGNCODE
|
|
||||||
(cd ${INSTDIR}/${bindir}; \
|
|
||||||
for i in *.exe; do \
|
|
||||||
$(SIGNCODE) $${i}; \
|
|
||||||
done \
|
|
||||||
)
|
|
||||||
endif # SIGNCODE
|
|
||||||
(cd ${INSTDIR}/${bindir}; \
|
|
||||||
for i in qemu-system-*.exe; do \
|
|
||||||
arch=$${i%.exe}; \
|
|
||||||
arch=$${arch#qemu-system-}; \
|
|
||||||
echo Section \"$$arch\" Section_$$arch; \
|
|
||||||
echo SetOutPath \"\$$INSTDIR\"; \
|
|
||||||
echo File \"\$${BINDIR}\\$$i\"; \
|
|
||||||
echo SectionEnd; \
|
|
||||||
done \
|
|
||||||
) >${INSTDIR}/${bindir}/system-emulations.nsh
|
|
||||||
makensis $(nsisflags) \
|
|
||||||
$(if $(BUILD_DOCS),-DCONFIG_DOCUMENTATION="y") \
|
|
||||||
$(if $(CONFIG_GTK),-DCONFIG_GTK="y") \
|
|
||||||
-DBINDIR="${INSTDIR}/${bindir}" \
|
|
||||||
$(if $(DLL_PATH),-DDLLDIR="$(DLL_PATH)") \
|
|
||||||
-DSRCDIR="$(SRC_PATH)" \
|
|
||||||
-DOUTFILE="$(INSTALLER)" \
|
|
||||||
-DDISPLAYVERSION="$(VERSION)" \
|
|
||||||
$(SRC_PATH)/qemu.nsi
|
|
||||||
rm -r ${INSTDIR}
|
|
||||||
ifdef SIGNCODE
|
|
||||||
$(SIGNCODE) $(INSTALLER)
|
|
||||||
endif # SIGNCODE
|
|
||||||
endif # CONFIG_WIN
|
|
||||||
|
|
||||||
# Add a dependency on the generated files, so that they are always
|
# Add a dependency on the generated files, so that they are always
|
||||||
# rebuilt before other object files
|
# rebuilt before other object files
|
||||||
|
|
|
@ -40,9 +40,9 @@ block_ss.add(files(
|
||||||
'vmdk.c',
|
'vmdk.c',
|
||||||
'vpc.c',
|
'vpc.c',
|
||||||
'write-threshold.c',
|
'write-threshold.c',
|
||||||
), zstd)
|
), zstd, zlib)
|
||||||
|
|
||||||
block_ss.add(when: [zlib, 'CONFIG_QCOW1'], if_true: files('qcow.c'))
|
block_ss.add(when: 'CONFIG_QCOW1', if_true: files('qcow.c'))
|
||||||
block_ss.add(when: 'CONFIG_VDI', if_true: files('vdi.c'))
|
block_ss.add(when: 'CONFIG_VDI', if_true: files('vdi.c'))
|
||||||
block_ss.add(when: 'CONFIG_CLOOP', if_true: files('cloop.c'))
|
block_ss.add(when: 'CONFIG_CLOOP', if_true: files('cloop.c'))
|
||||||
block_ss.add(when: 'CONFIG_BOCHS', if_true: files('bochs.c'))
|
block_ss.add(when: 'CONFIG_BOCHS', if_true: files('bochs.c'))
|
||||||
|
|
|
@ -38,7 +38,7 @@ chardev_modules = {}
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_BRLAPI') and sdl.found()
|
if config_host.has_key('CONFIG_BRLAPI') and sdl.found()
|
||||||
module_ss = ss.source_set()
|
module_ss = ss.source_set()
|
||||||
module_ss.add(when: [sdl, brlapi], if_true: files('baum.c'))
|
module_ss.add(when: [sdl, brlapi], if_true: [files('baum.c'), pixman])
|
||||||
chardev_modules += { 'baum': module_ss }
|
chardev_modules += { 'baum': module_ss }
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -473,8 +473,7 @@ LDFLAGS_SHARED="-shared"
|
||||||
modules="no"
|
modules="no"
|
||||||
module_upgrades="no"
|
module_upgrades="no"
|
||||||
prefix="/usr/local"
|
prefix="/usr/local"
|
||||||
firmwarepath="\${prefix}/share/qemu-firmware"
|
qemu_suffix="qemu"
|
||||||
confsuffix="/qemu"
|
|
||||||
slirp=""
|
slirp=""
|
||||||
oss_lib=""
|
oss_lib=""
|
||||||
bsd="no"
|
bsd="no"
|
||||||
|
@ -502,7 +501,6 @@ opengl=""
|
||||||
opengl_dmabuf="no"
|
opengl_dmabuf="no"
|
||||||
cpuid_h="no"
|
cpuid_h="no"
|
||||||
avx2_opt=""
|
avx2_opt=""
|
||||||
zlib="yes"
|
|
||||||
capstone=""
|
capstone=""
|
||||||
lzo=""
|
lzo=""
|
||||||
snappy=""
|
snappy=""
|
||||||
|
@ -1013,7 +1011,7 @@ if test "$mingw32" = "yes" ; then
|
||||||
LIBS="-liberty $LIBS"
|
LIBS="-liberty $LIBS"
|
||||||
fi
|
fi
|
||||||
prefix="c:/Program Files/QEMU"
|
prefix="c:/Program Files/QEMU"
|
||||||
confsuffix=""
|
qemu_suffix=""
|
||||||
libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
|
libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1123,7 +1121,7 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--datadir=*) datadir="$optarg"
|
--datadir=*) datadir="$optarg"
|
||||||
;;
|
;;
|
||||||
--with-confsuffix=*) confsuffix="$optarg"
|
--with-suffix=*) qemu_suffix="$optarg"
|
||||||
;;
|
;;
|
||||||
--docdir=*) qemu_docdir="$optarg"
|
--docdir=*) qemu_docdir="$optarg"
|
||||||
;;
|
;;
|
||||||
|
@ -1428,7 +1426,7 @@ for opt do
|
||||||
;;
|
;;
|
||||||
--enable-usb-redir) usb_redir="yes"
|
--enable-usb-redir) usb_redir="yes"
|
||||||
;;
|
;;
|
||||||
--disable-zlib-test) zlib="no"
|
--disable-zlib-test)
|
||||||
;;
|
;;
|
||||||
--disable-lzo) lzo="no"
|
--disable-lzo) lzo="no"
|
||||||
;;
|
;;
|
||||||
|
@ -1678,6 +1676,7 @@ for opt do
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
firmwarepath="${firmwarepath:-$prefix/share/qemu-firmware}"
|
||||||
libdir="${libdir:-$prefix/lib}"
|
libdir="${libdir:-$prefix/lib}"
|
||||||
libexecdir="${libexecdir:-$prefix/libexec}"
|
libexecdir="${libexecdir:-$prefix/libexec}"
|
||||||
includedir="${includedir:-$prefix/include}"
|
includedir="${includedir:-$prefix/include}"
|
||||||
|
@ -1685,14 +1684,14 @@ includedir="${includedir:-$prefix/include}"
|
||||||
if test "$mingw32" = "yes" ; then
|
if test "$mingw32" = "yes" ; then
|
||||||
mandir="$prefix"
|
mandir="$prefix"
|
||||||
datadir="$prefix"
|
datadir="$prefix"
|
||||||
qemu_docdir="$prefix"
|
docdir="$prefix"
|
||||||
bindir="$prefix"
|
bindir="$prefix"
|
||||||
sysconfdir="$prefix"
|
sysconfdir="$prefix"
|
||||||
local_statedir=
|
local_statedir=
|
||||||
else
|
else
|
||||||
mandir="${mandir:-$prefix/share/man}"
|
mandir="${mandir:-$prefix/share/man}"
|
||||||
datadir="${datadir:-$prefix/share}"
|
datadir="${datadir:-$prefix/share}"
|
||||||
qemu_docdir="${qemu_docdir:-$prefix/share/doc/qemu}"
|
docdir="${docdir:-$prefix/share/doc}"
|
||||||
bindir="${bindir:-$prefix/bin}"
|
bindir="${bindir:-$prefix/bin}"
|
||||||
sysconfdir="${sysconfdir:-$prefix/etc}"
|
sysconfdir="${sysconfdir:-$prefix/etc}"
|
||||||
local_statedir="${local_statedir:-$prefix/var}"
|
local_statedir="${local_statedir:-$prefix/var}"
|
||||||
|
@ -1833,16 +1832,16 @@ Advanced options (experts only):
|
||||||
--with-git=GIT use specified git [$git]
|
--with-git=GIT use specified git [$git]
|
||||||
--static enable static build [$static]
|
--static enable static build [$static]
|
||||||
--mandir=PATH install man pages in PATH
|
--mandir=PATH install man pages in PATH
|
||||||
--datadir=PATH install firmware in PATH$confsuffix
|
--datadir=PATH install firmware in PATH/$qemu_suffix
|
||||||
--docdir=PATH install documentation in PATH$confsuffix
|
--docdir=PATH install documentation in PATH/$qemu_suffix
|
||||||
--bindir=PATH install binaries in PATH
|
--bindir=PATH install binaries in PATH
|
||||||
--libdir=PATH install libraries in PATH
|
--libdir=PATH install libraries in PATH
|
||||||
--libexecdir=PATH install helper binaries in PATH
|
--libexecdir=PATH install helper binaries in PATH
|
||||||
--sysconfdir=PATH install config in PATH$confsuffix
|
--sysconfdir=PATH install config in PATH/$qemu_suffix
|
||||||
--localstatedir=PATH install local state in PATH (set at runtime on win32)
|
--localstatedir=PATH install local state in PATH (set at runtime on win32)
|
||||||
--firmwarepath=PATH search PATH for firmware files
|
--firmwarepath=PATH search PATH for firmware files
|
||||||
--efi-aarch64=PATH PATH of efi file to use for aarch64 VMs.
|
--efi-aarch64=PATH PATH of efi file to use for aarch64 VMs.
|
||||||
--with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
|
--with-suffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
|
||||||
--with-pkgversion=VERS use specified string as sub-version of the package
|
--with-pkgversion=VERS use specified string as sub-version of the package
|
||||||
--enable-debug enable common debug build options
|
--enable-debug enable common debug build options
|
||||||
--enable-sanitizers enable default sanitizers
|
--enable-sanitizers enable default sanitizers
|
||||||
|
@ -2023,7 +2022,7 @@ python_version=$($python -c 'import sys; print("%d.%d.%d" % (sys.version_info[0]
|
||||||
python="$python -B"
|
python="$python -B"
|
||||||
|
|
||||||
if test -z "$meson"; then
|
if test -z "$meson"; then
|
||||||
if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.0; then
|
if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.1; then
|
||||||
meson=meson
|
meson=meson
|
||||||
elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
|
elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
|
||||||
meson=git
|
meson=git
|
||||||
|
@ -3904,30 +3903,6 @@ if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#########################################
|
|
||||||
# zlib check
|
|
||||||
|
|
||||||
if test "$zlib" != "no" ; then
|
|
||||||
if $pkg_config --exists zlib; then
|
|
||||||
zlib_cflags=$($pkg_config --cflags zlib)
|
|
||||||
zlib_libs=$($pkg_config --libs zlib)
|
|
||||||
QEMU_CFLAGS="$zlib_cflags $QEMU_CFLAGS"
|
|
||||||
LIBS="$zlib_libs $LIBS"
|
|
||||||
else
|
|
||||||
cat > $TMPC << EOF
|
|
||||||
#include <zlib.h>
|
|
||||||
int main(void) { zlibVersion(); return 0; }
|
|
||||||
EOF
|
|
||||||
if compile_prog "" "-lz" ; then
|
|
||||||
zlib_libs=-lz
|
|
||||||
LIBS="$LIBS $zlib_libs"
|
|
||||||
else
|
|
||||||
error_exit "zlib check failed" \
|
|
||||||
"Make sure to have the zlib libs and headers installed."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# SHA command probe for modules
|
# SHA command probe for modules
|
||||||
if test "$modules" = yes; then
|
if test "$modules" = yes; then
|
||||||
|
@ -6474,9 +6449,10 @@ EOF
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
qemu_confdir=$sysconfdir$confsuffix
|
qemu_confdir="$sysconfdir/$qemu_suffix"
|
||||||
qemu_moddir=$libdir$confsuffix
|
qemu_moddir="$libdir/$qemu_suffix"
|
||||||
qemu_datadir=$datadir$confsuffix
|
qemu_datadir="$datadir/$qemu_suffix"
|
||||||
|
qemu_docdir="$docdir/$qemu_suffix"
|
||||||
qemu_localedir="$datadir/locale"
|
qemu_localedir="$datadir/locale"
|
||||||
qemu_icondir="$datadir/icons"
|
qemu_icondir="$datadir/icons"
|
||||||
qemu_desktopdir="$datadir/applications"
|
qemu_desktopdir="$datadir/applications"
|
||||||
|
@ -6672,12 +6648,10 @@ echo "bindir=$bindir" >> $config_host_mak
|
||||||
echo "libdir=$libdir" >> $config_host_mak
|
echo "libdir=$libdir" >> $config_host_mak
|
||||||
echo "libexecdir=$libexecdir" >> $config_host_mak
|
echo "libexecdir=$libexecdir" >> $config_host_mak
|
||||||
echo "includedir=$includedir" >> $config_host_mak
|
echo "includedir=$includedir" >> $config_host_mak
|
||||||
echo "mandir=$mandir" >> $config_host_mak
|
|
||||||
echo "sysconfdir=$sysconfdir" >> $config_host_mak
|
echo "sysconfdir=$sysconfdir" >> $config_host_mak
|
||||||
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
|
echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
|
||||||
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
|
echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
|
||||||
echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
|
echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
|
||||||
echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
|
|
||||||
echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
|
echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
|
||||||
if test "$mingw32" = "no" ; then
|
if test "$mingw32" = "no" ; then
|
||||||
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
|
echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
|
||||||
|
@ -7135,11 +7109,6 @@ fi
|
||||||
if test "$posix_memalign" = "yes" ; then
|
if test "$posix_memalign" = "yes" ; then
|
||||||
echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
|
echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$zlib" != "no" ; then
|
|
||||||
echo "CONFIG_ZLIB=y" >> $config_host_mak
|
|
||||||
echo "ZLIB_CFLAGS=$zlib_cflags" >> $config_host_mak
|
|
||||||
echo "ZLIB_LIBS=$zlib_libs" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$spice" = "yes" ; then
|
if test "$spice" = "yes" ; then
|
||||||
echo "CONFIG_SPICE=y" >> $config_host_mak
|
echo "CONFIG_SPICE=y" >> $config_host_mak
|
||||||
echo "SPICE_CFLAGS=$spice_cflags" >> $config_host_mak
|
echo "SPICE_CFLAGS=$spice_cflags" >> $config_host_mak
|
||||||
|
@ -8227,6 +8196,8 @@ NINJA=${ninja:-$PWD/ninjatool} $meson setup \
|
||||||
--mandir "${pre_prefix}$mandir" \
|
--mandir "${pre_prefix}$mandir" \
|
||||||
--sysconfdir "${pre_prefix}$sysconfdir" \
|
--sysconfdir "${pre_prefix}$sysconfdir" \
|
||||||
--localstatedir "${pre_prefix}$local_statedir" \
|
--localstatedir "${pre_prefix}$local_statedir" \
|
||||||
|
-Ddocdir="${pre_prefix}$docdir" \
|
||||||
|
-Dqemu_suffix="$qemu_suffix" \
|
||||||
-Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \
|
-Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \
|
||||||
-Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \
|
-Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \
|
||||||
-Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
|
-Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \
|
||||||
|
|
|
@ -10,5 +10,5 @@ if 'CONFIG_TOOLS' in config_host and 'CONFIG_VIRGL' in config_host \
|
||||||
configure_file(input: '50-qemu-gpu.json.in',
|
configure_file(input: '50-qemu-gpu.json.in',
|
||||||
output: '50-qemu-gpu.json',
|
output: '50-qemu-gpu.json',
|
||||||
configuration: config_host,
|
configuration: config_host,
|
||||||
install_dir: config_host['qemu_datadir'] / 'vhost-user')
|
install_dir: qemu_datadir / 'vhost-user')
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -66,46 +66,47 @@ following tasks:
|
||||||
upon completion.
|
upon completion.
|
||||||
|
|
||||||
|
|
||||||
Taking the probe for SDL as an example, we have the following pieces
|
Taking the probe for SDL2_Image as an example, we have the following pieces
|
||||||
in configure::
|
in configure::
|
||||||
|
|
||||||
# Initial variable state
|
# Initial variable state
|
||||||
sdl=auto
|
sdl_image=auto
|
||||||
|
|
||||||
..snip..
|
..snip..
|
||||||
|
|
||||||
# Configure flag processing
|
# Configure flag processing
|
||||||
--disable-gnutls) sdl=disabled
|
--disable-sdl-image) sdl_image=disabled
|
||||||
;;
|
;;
|
||||||
--enable-gnutls) sdl=enabled
|
--enable-sdl-image) sdl_image=enabled
|
||||||
;;
|
;;
|
||||||
|
|
||||||
..snip..
|
..snip..
|
||||||
|
|
||||||
# Help output feature message
|
# Help output feature message
|
||||||
sdl SDL UI
|
sdl-image SDL Image support for icons
|
||||||
|
|
||||||
..snip..
|
..snip..
|
||||||
|
|
||||||
# Meson invocation
|
# Meson invocation
|
||||||
-Dsdl=$sdl
|
-Dsdl_image=$sdl_image
|
||||||
|
|
||||||
In meson_options.txt::
|
In meson_options.txt::
|
||||||
|
|
||||||
option('sdl', type : 'feature', value : 'auto')
|
option('sdl', type : 'feature', value : 'auto',
|
||||||
|
description: 'SDL Image support for icons')
|
||||||
|
|
||||||
In meson.build::
|
In meson.build::
|
||||||
|
|
||||||
# Detect dependency
|
# Detect dependency
|
||||||
sdl = dependency('sdl2',
|
sdl_image = dependency('SDL2_image', required: get_option('sdl_image'),
|
||||||
required: get_option('sdl'),
|
method: 'pkg-config',
|
||||||
static: enable_static)
|
static: enable_static)
|
||||||
|
|
||||||
# Create config-host.h
|
# Create config-host.h (if applicable)
|
||||||
config_host_data.set('CONFIG_SDL', sdl.found())
|
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
|
||||||
|
|
||||||
# Summary
|
# Summary
|
||||||
summary_info += {'SDL support': sdl.found()}
|
summary_info += {'SDL image support': sdl_image.found()}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ if build_docs
|
||||||
configure_file(output: 'index.html',
|
configure_file(output: 'index.html',
|
||||||
input: files('index.html.in'),
|
input: files('index.html.in'),
|
||||||
configuration: {'VERSION': meson.project_version()},
|
configuration: {'VERSION': meson.project_version()},
|
||||||
install_dir: config_host['qemu_docdir'])
|
install_dir: qemu_docdir)
|
||||||
manuals = [ 'devel', 'interop', 'tools', 'specs', 'system', 'user' ]
|
manuals = [ 'devel', 'interop', 'tools', 'specs', 'system', 'user' ]
|
||||||
man_pages = {
|
man_pages = {
|
||||||
'interop' : {
|
'interop' : {
|
||||||
|
@ -48,7 +48,7 @@ if build_docs
|
||||||
input_dir, output_dir])
|
input_dir, output_dir])
|
||||||
sphinxdocs += this_manual
|
sphinxdocs += this_manual
|
||||||
if build_docs and manual != 'devel'
|
if build_docs and manual != 'devel'
|
||||||
install_subdir(output_dir, install_dir: config_host['qemu_docdir'])
|
install_subdir(output_dir, install_dir: qemu_docdir)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
these_man_pages = []
|
these_man_pages = []
|
||||||
|
|
2
meson
2
meson
|
@ -1 +1 @@
|
||||||
Subproject commit d0c68dc11507a47b9b85de508e023d9590d60565
|
Subproject commit 68ed748f84f14c2d4e62dcbd123816e5898eb04c
|
53
meson.build
53
meson.build
|
@ -18,6 +18,8 @@ config_all_disas = keyval.load(meson.current_build_dir() / 'config-all-disas.mak
|
||||||
enable_modules = 'CONFIG_MODULES' in config_host
|
enable_modules = 'CONFIG_MODULES' in config_host
|
||||||
enable_static = 'CONFIG_STATIC' in config_host
|
enable_static = 'CONFIG_STATIC' in config_host
|
||||||
build_docs = 'BUILD_DOCS' in config_host
|
build_docs = 'BUILD_DOCS' in config_host
|
||||||
|
qemu_datadir = get_option('datadir') / get_option('qemu_suffix')
|
||||||
|
qemu_docdir = get_option('docdir') / get_option('qemu_suffix')
|
||||||
config_host_data = configuration_data()
|
config_host_data = configuration_data()
|
||||||
genh = []
|
genh = []
|
||||||
|
|
||||||
|
@ -127,18 +129,14 @@ endif
|
||||||
pixman = not_found
|
pixman = not_found
|
||||||
if have_system or have_tools
|
if have_system or have_tools
|
||||||
pixman = dependency('pixman-1', required: have_system, version:'>=0.21.8',
|
pixman = dependency('pixman-1', required: have_system, version:'>=0.21.8',
|
||||||
static: enable_static)
|
method: 'pkg-config', static: enable_static)
|
||||||
endif
|
endif
|
||||||
pam = not_found
|
pam = not_found
|
||||||
if 'CONFIG_AUTH_PAM' in config_host
|
if 'CONFIG_AUTH_PAM' in config_host
|
||||||
pam = cc.find_library('pam')
|
pam = cc.find_library('pam')
|
||||||
endif
|
endif
|
||||||
libaio = cc.find_library('aio', required: false)
|
libaio = cc.find_library('aio', required: false)
|
||||||
zlib = not_found
|
zlib = dependency('zlib', required: true, static: enable_static)
|
||||||
if 'CONFIG_ZLIB' in config_host
|
|
||||||
zlib = declare_dependency(compile_args: config_host['ZLIB_CFLAGS'].split(),
|
|
||||||
link_args: config_host['ZLIB_LIBS'].split())
|
|
||||||
endif
|
|
||||||
linux_io_uring = not_found
|
linux_io_uring = not_found
|
||||||
if 'CONFIG_LINUX_IO_URING' in config_host
|
if 'CONFIG_LINUX_IO_URING' in config_host
|
||||||
linux_io_uring = declare_dependency(compile_args: config_host['LINUX_IO_URING_CFLAGS'].split(),
|
linux_io_uring = declare_dependency(compile_args: config_host['LINUX_IO_URING_CFLAGS'].split(),
|
||||||
|
@ -170,7 +168,7 @@ if get_option('xkbcommon').auto() and not have_system and not have_tools
|
||||||
xkbcommon = not_found
|
xkbcommon = not_found
|
||||||
else
|
else
|
||||||
xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'),
|
xkbcommon = dependency('xkbcommon', required: get_option('xkbcommon'),
|
||||||
static: enable_static)
|
method: 'pkg-config', static: enable_static)
|
||||||
endif
|
endif
|
||||||
slirp = not_found
|
slirp = not_found
|
||||||
if config_host.has_key('CONFIG_SLIRP')
|
if config_host.has_key('CONFIG_SLIRP')
|
||||||
|
@ -248,8 +246,8 @@ if sdl.found()
|
||||||
# work around 2.0.8 bug
|
# work around 2.0.8 bug
|
||||||
sdl = declare_dependency(compile_args: '-Wno-undef',
|
sdl = declare_dependency(compile_args: '-Wno-undef',
|
||||||
dependencies: sdl)
|
dependencies: sdl)
|
||||||
sdl_image = dependency('sdl-image', required: get_option('sdl_image'),
|
sdl_image = dependency('SDL2_image', required: get_option('sdl_image'),
|
||||||
static: enable_static)
|
method: 'pkg-config', static: enable_static)
|
||||||
else
|
else
|
||||||
if get_option('sdl_image').enabled()
|
if get_option('sdl_image').enabled()
|
||||||
error('sdl-image required, but SDL was @0@',
|
error('sdl-image required, but SDL was @0@',
|
||||||
|
@ -334,7 +332,7 @@ sasl = not_found
|
||||||
if get_option('vnc').enabled()
|
if get_option('vnc').enabled()
|
||||||
vnc = declare_dependency() # dummy dependency
|
vnc = declare_dependency() # dummy dependency
|
||||||
png = dependency('libpng', required: get_option('vnc_png'),
|
png = dependency('libpng', required: get_option('vnc_png'),
|
||||||
static: enable_static)
|
method: 'pkg-config', static: enable_static)
|
||||||
jpeg = cc.find_library('jpeg', has_headers: ['jpeglib.h'],
|
jpeg = cc.find_library('jpeg', has_headers: ['jpeglib.h'],
|
||||||
required: get_option('vnc_jpeg'),
|
required: get_option('vnc_jpeg'),
|
||||||
static: enable_static)
|
static: enable_static)
|
||||||
|
@ -1059,7 +1057,7 @@ foreach target : target_dirs
|
||||||
output: exe['name'] + stp['ext'],
|
output: exe['name'] + stp['ext'],
|
||||||
capture: true,
|
capture: true,
|
||||||
install: stp['install'],
|
install: stp['install'],
|
||||||
install_dir: config_host['qemu_datadir'] / '../systemtap/tapset',
|
install_dir: qemu_datadir / '../systemtap/tapset',
|
||||||
command: [
|
command: [
|
||||||
tracetool, '--group=all', '--format=' + stp['fmt'],
|
tracetool, '--group=all', '--format=' + stp['fmt'],
|
||||||
'--binary=' + stp['bin'],
|
'--binary=' + stp['bin'],
|
||||||
|
@ -1138,6 +1136,7 @@ if have_tools
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
subdir('scripts')
|
||||||
subdir('tools')
|
subdir('tools')
|
||||||
subdir('pc-bios')
|
subdir('pc-bios')
|
||||||
subdir('tests')
|
subdir('tests')
|
||||||
|
@ -1184,7 +1183,7 @@ if build_docs
|
||||||
input: input,
|
input: input,
|
||||||
output: output,
|
output: output,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: config_host['qemu_docdir'] / 'interop',
|
install_dir: qemu_docdir / 'interop',
|
||||||
command: cmd + args)
|
command: cmd + args)
|
||||||
endforeach
|
endforeach
|
||||||
alias_target(ext, t)
|
alias_target(ext, t)
|
||||||
|
@ -1224,13 +1223,38 @@ if build_docs
|
||||||
output: man,
|
output: man,
|
||||||
capture: true,
|
capture: true,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: config_host['mandir'] / 'man7',
|
install_dir: get_option('mandir') / 'man7',
|
||||||
command: [pod2man, '--utf8', '--section=7', '--center=" "',
|
command: [pod2man, '--utf8', '--section=7', '--center=" "',
|
||||||
'--release=" "', '@INPUT@'])
|
'--release=" "', '@INPUT@'])
|
||||||
endforeach
|
endforeach
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if host_machine.system() == 'windows'
|
||||||
|
nsis_cmd = [
|
||||||
|
find_program('scripts/nsis.py'),
|
||||||
|
'@OUTPUT@',
|
||||||
|
get_option('prefix'),
|
||||||
|
meson.current_source_dir(),
|
||||||
|
host_machine.cpu_family(),
|
||||||
|
'--',
|
||||||
|
'-DDISPLAYVERSION=' + meson.project_version(),
|
||||||
|
]
|
||||||
|
if build_docs
|
||||||
|
nsis_cmd += '-DCONFIG_DOCUMENTATION=y'
|
||||||
|
endif
|
||||||
|
if 'CONFIG_GTK' in config_host
|
||||||
|
nsis_cmd += '-DCONFIG_GTK=y'
|
||||||
|
endif
|
||||||
|
|
||||||
|
nsis = custom_target('nsis',
|
||||||
|
output: 'qemu-setup-' + meson.project_version() + '.exe',
|
||||||
|
input: files('qemu.nsi'),
|
||||||
|
build_always_stale: true,
|
||||||
|
command: nsis_cmd + ['@INPUT@'])
|
||||||
|
alias_target('installer', nsis)
|
||||||
|
endif
|
||||||
|
|
||||||
summary_info = {}
|
summary_info = {}
|
||||||
summary_info += {'Install prefix': config_host['prefix']}
|
summary_info += {'Install prefix': config_host['prefix']}
|
||||||
summary_info += {'BIOS directory': config_host['qemu_datadir']}
|
summary_info += {'BIOS directory': config_host['qemu_datadir']}
|
||||||
|
@ -1243,10 +1267,11 @@ summary_info += {'include directory': config_host['includedir']}
|
||||||
summary_info += {'config directory': config_host['sysconfdir']}
|
summary_info += {'config directory': config_host['sysconfdir']}
|
||||||
if targetos != 'windows'
|
if targetos != 'windows'
|
||||||
summary_info += {'local state directory': config_host['qemu_localstatedir']}
|
summary_info += {'local state directory': config_host['qemu_localstatedir']}
|
||||||
summary_info += {'Manual directory': config_host['mandir']}
|
summary_info += {'Manual directory': get_option('mandir')}
|
||||||
else
|
else
|
||||||
summary_info += {'local state directory': 'queried at runtime'}
|
summary_info += {'local state directory': 'queried at runtime'}
|
||||||
endif
|
endif
|
||||||
|
summary_info += {'Doc directory': get_option('docdir')}
|
||||||
summary_info += {'Build directory': meson.current_build_dir()}
|
summary_info += {'Build directory': meson.current_build_dir()}
|
||||||
summary_info += {'Source path': meson.current_source_dir()}
|
summary_info += {'Source path': meson.current_source_dir()}
|
||||||
summary_info += {'GIT binary': config_host['GIT']}
|
summary_info += {'GIT binary': config_host['GIT']}
|
||||||
|
|
|
@ -1,9 +1,24 @@
|
||||||
option('gettext', type : 'boolean', value : true)
|
option('qemu_suffix', type : 'string', value: 'qemu',
|
||||||
option('sdl', type : 'feature', value : 'auto')
|
description: 'Suffix for QEMU data/modules/config directories (can be empty)')
|
||||||
option('sdl_image', type : 'feature', value : 'auto')
|
option('docdir', type : 'string', value : 'doc',
|
||||||
option('u2f', type : 'feature', value : 'auto')
|
description: 'Base directory for documentation installation (can be empty)')
|
||||||
option('vnc', type : 'feature', value : 'enabled')
|
|
||||||
option('vnc_jpeg', type : 'feature', value : 'auto')
|
option('gettext', type : 'boolean', value : true,
|
||||||
option('vnc_png', type : 'feature', value : 'auto')
|
description: 'Localization of the GTK+ user interface')
|
||||||
option('vnc_sasl', type : 'feature', value : 'auto')
|
|
||||||
option('xkbcommon', type : 'feature', value : 'auto')
|
option('sdl', type : 'feature', value : 'auto',
|
||||||
|
description: 'SDL user interface')
|
||||||
|
option('sdl_image', type : 'feature', value : 'auto',
|
||||||
|
description: 'SDL Image support for icons')
|
||||||
|
option('u2f', type : 'feature', value : 'auto',
|
||||||
|
description: 'U2F emulation support')
|
||||||
|
option('vnc', type : 'feature', value : 'enabled',
|
||||||
|
description: 'VNC server')
|
||||||
|
option('vnc_jpeg', type : 'feature', value : 'auto',
|
||||||
|
description: 'JPEG lossy compression for VNC server')
|
||||||
|
option('vnc_png', type : 'feature', value : 'auto',
|
||||||
|
description: 'PNG compression for VNC server')
|
||||||
|
option('vnc_sasl', type : 'feature', value : 'auto',
|
||||||
|
description: 'SASL authentication for VNC server')
|
||||||
|
option('xkbcommon', type : 'feature', value : 'auto',
|
||||||
|
description: 'xkbcommon support')
|
||||||
|
|
|
@ -10,5 +10,5 @@ foreach f: [
|
||||||
output: f,
|
output: f,
|
||||||
configuration: {'DATADIR': config_host['qemu_datadir']},
|
configuration: {'DATADIR': config_host['qemu_datadir']},
|
||||||
install: install_blobs,
|
install: install_blobs,
|
||||||
install_dir: config_host['qemu_datadir'] / 'firmware')
|
install_dir: qemu_datadir / 'firmware')
|
||||||
endforeach
|
endforeach
|
||||||
|
|
|
@ -44,13 +44,13 @@ foreach km, args: keymaps
|
||||||
build_by_default: true,
|
build_by_default: true,
|
||||||
output: km,
|
output: km,
|
||||||
command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()],
|
command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()],
|
||||||
install_dir: config_host['qemu_datadir'] / 'keymaps')
|
install_dir: qemu_datadir / 'keymaps')
|
||||||
endforeach
|
endforeach
|
||||||
if t.length() > 0
|
if t.length() > 0
|
||||||
alias_target('update-keymaps', t)
|
alias_target('update-keymaps', t)
|
||||||
else
|
else
|
||||||
# install from the source tree
|
# install from the source tree
|
||||||
install_data(keymaps.keys(), install_dir: config_host['qemu_datadir'] / 'keymaps')
|
install_data(keymaps.keys(), install_dir: qemu_datadir / 'keymaps')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
install_data(['sl', 'sv'], install_dir: config_host['qemu_datadir'] / 'keymaps')
|
install_data(['sl', 'sv'], install_dir: qemu_datadir / 'keymaps')
|
||||||
|
|
|
@ -19,10 +19,73 @@ if 'DECOMPRESS_EDK2_BLOBS' in config_host
|
||||||
input: '@0@.bz2'.format(f),
|
input: '@0@.bz2'.format(f),
|
||||||
capture: true,
|
capture: true,
|
||||||
install: install_blobs,
|
install: install_blobs,
|
||||||
install_dir: config_host['qemu_datadir'],
|
install_dir: qemu_datadir,
|
||||||
command: [ bzip2, '-dc', '@INPUT0@' ])
|
command: [ bzip2, '-dc', '@INPUT0@' ])
|
||||||
endforeach
|
endforeach
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
blobs = files(
|
||||||
|
'bios.bin',
|
||||||
|
'bios-256k.bin',
|
||||||
|
'bios-microvm.bin',
|
||||||
|
'sgabios.bin',
|
||||||
|
'vgabios.bin',
|
||||||
|
'vgabios-cirrus.bin',
|
||||||
|
'vgabios-stdvga.bin',
|
||||||
|
'vgabios-vmware.bin',
|
||||||
|
'vgabios-qxl.bin',
|
||||||
|
'vgabios-virtio.bin',
|
||||||
|
'vgabios-ramfb.bin',
|
||||||
|
'vgabios-bochs-display.bin',
|
||||||
|
'vgabios-ati.bin',
|
||||||
|
'openbios-sparc32',
|
||||||
|
'openbios-sparc64',
|
||||||
|
'openbios-ppc',
|
||||||
|
'QEMU,tcx.bin',
|
||||||
|
'QEMU,cgthree.bin',
|
||||||
|
'pxe-e1000.rom',
|
||||||
|
'pxe-eepro100.rom',
|
||||||
|
'pxe-ne2k_pci.rom',
|
||||||
|
'pxe-pcnet.rom',
|
||||||
|
'pxe-rtl8139.rom',
|
||||||
|
'pxe-virtio.rom',
|
||||||
|
'efi-e1000.rom',
|
||||||
|
'efi-eepro100.rom',
|
||||||
|
'efi-ne2k_pci.rom',
|
||||||
|
'efi-pcnet.rom',
|
||||||
|
'efi-rtl8139.rom',
|
||||||
|
'efi-virtio.rom',
|
||||||
|
'efi-e1000e.rom',
|
||||||
|
'efi-vmxnet3.rom',
|
||||||
|
'qemu-nsis.bmp',
|
||||||
|
'bamboo.dtb',
|
||||||
|
'canyonlands.dtb',
|
||||||
|
'petalogix-s3adsp1800.dtb',
|
||||||
|
'petalogix-ml605.dtb',
|
||||||
|
'multiboot.bin',
|
||||||
|
'linuxboot.bin',
|
||||||
|
'linuxboot_dma.bin',
|
||||||
|
'kvmvapic.bin',
|
||||||
|
'pvh.bin',
|
||||||
|
's390-ccw.img',
|
||||||
|
's390-netboot.img',
|
||||||
|
'slof.bin',
|
||||||
|
'skiboot.lid',
|
||||||
|
'palcode-clipper',
|
||||||
|
'u-boot.e500',
|
||||||
|
'u-boot-sam460-20100605.bin',
|
||||||
|
'qemu_vga.ndrv',
|
||||||
|
'edk2-licenses.txt',
|
||||||
|
'hppa-firmware.img',
|
||||||
|
'opensbi-riscv32-generic-fw_dynamic.bin',
|
||||||
|
'opensbi-riscv64-generic-fw_dynamic.bin',
|
||||||
|
'opensbi-riscv32-generic-fw_dynamic.elf',
|
||||||
|
'opensbi-riscv64-generic-fw_dynamic.elf',
|
||||||
|
)
|
||||||
|
|
||||||
|
if install_blobs
|
||||||
|
install_data(blobs, install_dir: config_host['qemu_datadir'])
|
||||||
|
endif
|
||||||
|
|
||||||
subdir('descriptors')
|
subdir('descriptors')
|
||||||
subdir('keymaps')
|
subdir('keymaps')
|
||||||
|
|
|
@ -8,15 +8,12 @@ all: multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin pvh.bin
|
||||||
@true
|
@true
|
||||||
|
|
||||||
include ../../config-host.mak
|
include ../../config-host.mak
|
||||||
|
CFLAGS = -O2 -g
|
||||||
|
|
||||||
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
||||||
cc-option = $(if $(shell $(CC) $1 -S -o /dev/null -xc /dev/null >/dev/null 2>&1 && echo OK), $1, $2)
|
cc-option = $(if $(shell $(CC) $1 -c -o /dev/null -xc /dev/null >/dev/null 2>&1 && echo OK), $1, $2)
|
||||||
|
|
||||||
# Compiling with no optimization creates ROMs that are too large
|
override CFLAGS += -march=i486 -Wall
|
||||||
ifeq ($(lastword $(filter -O%, -O0 $(CFLAGS))),-O0)
|
|
||||||
override CFLAGS += -O2
|
|
||||||
endif
|
|
||||||
override CFLAGS += -march=i486
|
|
||||||
|
|
||||||
# Flags for dependency generation
|
# Flags for dependency generation
|
||||||
override CPPFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
override CPPFLAGS += -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
||||||
|
@ -42,7 +39,6 @@ Wa = -Wa,
|
||||||
override ASFLAGS += -32
|
override ASFLAGS += -32
|
||||||
override CFLAGS += $(call cc-option, $(Wa)-32)
|
override CFLAGS += $(call cc-option, $(Wa)-32)
|
||||||
|
|
||||||
|
|
||||||
LD_I386_EMULATION ?= elf_i386
|
LD_I386_EMULATION ?= elf_i386
|
||||||
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
|
override LDFLAGS = -m $(LD_I386_EMULATION) -T $(SRC_DIR)/flat.lds
|
||||||
override LDFLAGS += $(LDFLAGS_NOPIE)
|
override LDFLAGS += $(LDFLAGS_NOPIE)
|
||||||
|
|
|
@ -3,6 +3,7 @@ all: build-all
|
||||||
@true
|
@true
|
||||||
|
|
||||||
include ../../config-host.mak
|
include ../../config-host.mak
|
||||||
|
CFLAGS = -O2 -g
|
||||||
|
|
||||||
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1))
|
||||||
cc-option = $(if $(shell $(CC) $1 -S -o /dev/null -xc /dev/null > /dev/null \
|
cc-option = $(if $(shell $(CC) $1 -S -o /dev/null -xc /dev/null > /dev/null \
|
||||||
|
@ -28,7 +29,7 @@ QEMU_DGFLAGS = -MMD -MP -MT $@ -MF $(@D)/$(*F).d
|
||||||
OBJECTS = start.o main.o bootmap.o jump2ipl.o sclp.o menu.o \
|
OBJECTS = start.o main.o bootmap.o jump2ipl.o sclp.o menu.o \
|
||||||
virtio.o virtio-scsi.o virtio-blkdev.o libc.o cio.o dasd-ipl.o
|
virtio.o virtio-scsi.o virtio-blkdev.o libc.o cio.o dasd-ipl.o
|
||||||
|
|
||||||
QEMU_CFLAGS := $(filter -W%, $(QEMU_CFLAGS))
|
QEMU_CFLAGS := -Wall $(filter -W%, $(QEMU_CFLAGS))
|
||||||
QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -msoft-float
|
QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -msoft-float
|
||||||
QEMU_CFLAGS += -march=z900 -fPIE -fno-strict-aliasing
|
QEMU_CFLAGS += -march=z900 -fPIE -fno-strict-aliasing
|
||||||
QEMU_CFLAGS += -fno-asynchronous-unwind-tables
|
QEMU_CFLAGS += -fno-asynchronous-unwind-tables
|
||||||
|
|
|
@ -82,6 +82,8 @@ if targetos == 'windows'
|
||||||
all_qga += [qga_msi]
|
all_qga += [qga_msi]
|
||||||
alias_target('msi', qga_msi)
|
alias_target('msi', qga_msi)
|
||||||
endif
|
endif
|
||||||
|
else
|
||||||
|
install_subdir('run', install_dir: get_option('localstatedir'))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
alias_target('qemu-ga', all_qga)
|
alias_target('qemu-ga', all_qga)
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
if 'CONFIG_TRACE_SYSTEMTAP' in config_host
|
||||||
|
install_data('qemu-trace-stap', install_dir: get_option('bindir'))
|
||||||
|
endif
|
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
|
||||||
|
def signcode(path):
|
||||||
|
cmd = os.environ.get("SIGNCODE")
|
||||||
|
if not cmd:
|
||||||
|
return
|
||||||
|
subprocess.run([cmd, path])
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="QEMU NSIS build helper.")
|
||||||
|
parser.add_argument("outfile")
|
||||||
|
parser.add_argument("prefix")
|
||||||
|
parser.add_argument("srcdir")
|
||||||
|
parser.add_argument("cpu")
|
||||||
|
parser.add_argument("nsisargs", nargs="*")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
destdir = tempfile.mkdtemp()
|
||||||
|
try:
|
||||||
|
subprocess.run(["make", "install", "DESTDIR=" + destdir + os.path.sep])
|
||||||
|
with open(
|
||||||
|
os.path.join(destdir + args.prefix, "system-emulations.nsh"), "w"
|
||||||
|
) as nsh:
|
||||||
|
for exe in glob.glob(
|
||||||
|
os.path.join(destdir + args.prefix, "qemu-system-*.exe")
|
||||||
|
):
|
||||||
|
exe = os.path.basename(exe)
|
||||||
|
arch = exe[12:-4]
|
||||||
|
nsh.write(
|
||||||
|
"""
|
||||||
|
Section "{0}" Section_{0}
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${{BINDIR}}\\{1}"
|
||||||
|
SectionEnd
|
||||||
|
""".format(
|
||||||
|
arch, exe
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for exe in glob.glob(os.path.join(destdir + args.prefix, "*.exe")):
|
||||||
|
signcode(exe)
|
||||||
|
|
||||||
|
makensis = [
|
||||||
|
"makensis",
|
||||||
|
"-V2",
|
||||||
|
"-NOCD",
|
||||||
|
"-DSRCDIR=" + args.srcdir,
|
||||||
|
"-DBINDIR=" + destdir + args.prefix,
|
||||||
|
]
|
||||||
|
dlldir = "w32"
|
||||||
|
if args.cpu == "x86_64":
|
||||||
|
dlldir = "w64"
|
||||||
|
makensis += ["-DW64"]
|
||||||
|
if os.path.exists(os.path.join(args.srcdir, "dll")):
|
||||||
|
makensis += "-DDLLDIR={0}/dll/{1}".format(args.srcdir, dlldir)
|
||||||
|
|
||||||
|
makensis += ["-DOUTFILE=" + args.outfile] + args.nsisargs
|
||||||
|
subprocess.run(makensis)
|
||||||
|
signcode(args.outfile)
|
||||||
|
finally:
|
||||||
|
shutil.rmtree(destdir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
|
@ -16,4 +16,4 @@ executable('virtiofsd', files(
|
||||||
configure_file(input: '50-qemu-virtiofsd.json.in',
|
configure_file(input: '50-qemu-virtiofsd.json.in',
|
||||||
output: '50-qemu-virtiofsd.json',
|
output: '50-qemu-virtiofsd.json',
|
||||||
configuration: config_host,
|
configuration: config_host,
|
||||||
install_dir: config_host['qemu_datadir'] / 'vhost-user')
|
install_dir: qemu_datadir / 'vhost-user')
|
||||||
|
|
|
@ -58,7 +58,7 @@ trace_events_all = custom_target('trace-events-all',
|
||||||
command: [ 'cat', '@INPUT@' ],
|
command: [ 'cat', '@INPUT@' ],
|
||||||
capture: true,
|
capture: true,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: config_host['qemu_datadir'])
|
install_dir: qemu_datadir)
|
||||||
|
|
||||||
foreach d : [
|
foreach d : [
|
||||||
['generated-tcg-tracers.h', 'tcg-h'],
|
['generated-tcg-tracers.h', 'tcg-h'],
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
foreach s: [16, 24, 32, 48, 64, 128, 256, 512]
|
||||||
|
s = '@0@x@0@'.format(s.to_string())
|
||||||
|
install_data('qemu_@0@.png'.format(s),
|
||||||
|
rename: 'qemu.png',
|
||||||
|
install_dir: config_host['qemu_icondir'] / 'hicolor' / s / 'apps')
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
install_data('qemu_32x32.bmp',
|
||||||
|
rename: 'qemu.bmp',
|
||||||
|
install_dir: config_host['qemu_icondir'] / 'hicolor' / '32x32' / 'apps')
|
||||||
|
|
||||||
|
install_data('qemu.svg',
|
||||||
|
install_dir: config_host['qemu_icondir'] / 'hicolor' / 'scalable' / 'apps')
|
|
@ -40,7 +40,7 @@ ui_modules = {}
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_CURSES')
|
if config_host.has_key('CONFIG_CURSES')
|
||||||
curses_ss = ss.source_set()
|
curses_ss = ss.source_set()
|
||||||
curses_ss.add(when: [curses, iconv], if_true: files('curses.c'))
|
curses_ss.add(when: [curses, iconv], if_true: [files('curses.c'), pixman])
|
||||||
ui_modules += {'curses' : curses_ss}
|
ui_modules += {'curses' : curses_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ if config_host.has_key('CONFIG_GTK')
|
||||||
softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c'))
|
softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('win32-kbd-hook.c'))
|
||||||
|
|
||||||
gtk_ss = ss.source_set()
|
gtk_ss = ss.source_set()
|
||||||
gtk_ss.add(gtk, vte, files('gtk.c'))
|
gtk_ss.add(gtk, vte, pixman, files('gtk.c'))
|
||||||
gtk_ss.add(when: [x11, 'CONFIG_X11'], if_true: files('x_keymap.c'))
|
gtk_ss.add(when: [x11, 'CONFIG_X11'], if_true: files('x_keymap.c'))
|
||||||
gtk_ss.add(when: [opengl, 'CONFIG_OPENGL'], if_true: files('gtk-egl.c'))
|
gtk_ss.add(when: [opengl, 'CONFIG_OPENGL'], if_true: files('gtk-egl.c'))
|
||||||
gtk_ss.add(when: [opengl, 'CONFIG_GTK_GL'], if_true: files('gtk-gl-area.c'))
|
gtk_ss.add(when: [opengl, 'CONFIG_GTK_GL'], if_true: files('gtk-gl-area.c'))
|
||||||
|
@ -71,7 +71,7 @@ endif
|
||||||
|
|
||||||
if config_host.has_key('CONFIG_SPICE') and config_host.has_key('CONFIG_GIO')
|
if config_host.has_key('CONFIG_SPICE') and config_host.has_key('CONFIG_GIO')
|
||||||
spice_ss = ss.source_set()
|
spice_ss = ss.source_set()
|
||||||
spice_ss.add(spice, gio, files('spice-app.c'))
|
spice_ss.add(spice, gio, pixman, files('spice-app.c'))
|
||||||
ui_modules += {'spice-app': spice_ss}
|
ui_modules += {'spice-app': spice_ss}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -112,5 +112,8 @@ if have_system or xkbcommon.found()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
subdir('shader')
|
subdir('shader')
|
||||||
|
subdir('icons')
|
||||||
|
|
||||||
|
install_data('qemu.desktop', install_dir: config_host['qemu_desktopdir'])
|
||||||
|
|
||||||
modules += {'ui': ui_modules}
|
modules += {'ui': ui_modules}
|
||||||
|
|
Loading…
Reference in New Issue