# Template file for 'qemu'
pkgname=qemu
version=4.2.0
revision=2
short_desc="Open Source Processor Emulator"
maintainer="Helmut Pozimski <helmut@pozimski.eu>"
license="GPL-2.0-or-later, LGPL-2.1-or-later"
homepage="https://www.qemu.org"
distfiles="https://wiki.qemu.org/download/qemu-${version}.tar.bz2"
checksum=3cf4f3f73233a12211a045f07eef467fdc7bf3877568cd0c8a0cf36121da9fbd

nostrip=yes
hostmakedepends="gettext pkg-config perl python3 automake libtool flex
 python3-Sphinx texinfo"
makedepends="libpng-devel libjpeg-turbo-devel pixman-devel snappy-devel
 libuuid-devel libX11-devel alsa-lib-devel libaio-devel gnutls-devel
 libsasl-devel libglib-devel ncurses-devel libseccomp-devel nss-devel
 libcurl-devel xfsprogs-devel libcap-ng-devel libcap-devel vde2-devel usbredir-devel
 libbluetooth-devel libssh2-devel libusb-devel pulseaudio-devel libnfs-devel
 $(vopt_if sdl2 SDL2-devel) $(vopt_if gtk3 "gtk+3-devel vte3-devel")
 $(vopt_if spice spice-devel) $(vopt_if virgl virglrenderer-devel)
 $(vopt_if opengl 'libepoxy-devel libdrm-devel MesaLib-devel')
 $(vopt_if smartcard libcacard-devel) $(vopt_if numa 'libnuma-devel')"

build_options="gtk3 opengl sdl2 spice virgl smartcard numa"
build_options_default="opengl gtk3 virgl smartcard sdl2 numa"
desc_option_sdl2="Enable SDL (2.x) video output"
desc_option_spice="Enable support for SPICE"
desc_option_virgl="Enable support for VirGL (A Virtual 3D GPU renderer)"
desc_option_smartcard="Enable smartcard support"
desc_option_numa="Enable support for host NUMA"

case "$XBPS_TARGET_MACHINE" in
	i686*|x86_64*|ppc64le*) build_options_default+=" spice";;
	aarch64-musl) CFLAGS+=" -D_LINUX_SYSINFO_H";;
esac

post_extract() {
	sed -i 's/__u64/unsigned long/' linux-user/host/aarch64/hostdep.h
}

do_configure() {
	local args=

	sed -e 's,-rpath /usr/local/lib,,g' -i configure

	if [ "$CROSS_BUILD" ]; then
		args+=" --cross-prefix=${XBPS_CROSS_TRIPLET}-"
		export LIBTOOL=libtool
	fi
	unset CPP

	local want_sdl="--disable-sdl"
	local audio_sdl=""
	if [ "$build_option_sdl2" ]; then
		want_sdl="--enable-sdl"
		audio_sdl=",sdl"
	fi

	./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/libexec \
		--enable-kvm --audio-drv-list=alsa,pa${audio_sdl} \
		--disable-xen --enable-tpm \
		--enable-vhost-net --enable-vnc-png --enable-virtfs \
		--enable-libusb --disable-glusterfs --enable-snappy --enable-usb-redir \
		--enable-pie --localstatedir=/var --datadir=/usr/lib --enable-docs \
		$(vopt_enable virgl virglrenderer) $(vopt_enable opengl) $(vopt_enable spice) \
		${want_sdl} \
		$(vopt_enable smartcard) \
		$(vopt_if gtk3 "--enable-gtk") ${args}
}
do_build() {
	# Remove our strip(1) wrapper... E2BIG.
	rm -f ${XBPS_WRAPPERDIR}/strip

	make ${makejobs}
}
do_install() {
	# Remove our strip(1) wrapper... E2BIG.
	rm -f ${XBPS_WRAPPERDIR}/strip

	make DESTDIR=${DESTDIR} install
	# qemu-bridge-helper must be setuid for non privileged users.
	chmod u+s ${DESTDIR}/usr/libexec/qemu-bridge-helper

	vsv qemu-ga
}

qemu-ga_package() {
	short_desc="QEMU Guest Agent"
	pkg_install() {
		vmove usr/bin/qemu-ga
		vmove etc/sv/qemu-ga
	}
}
