# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake flag-o-matic

DESCRIPTION="Emulator of x86-based machines based on PCem"
HOMEPAGE="https://github.com/86Box/86Box"
SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="GPL-2+"
SLOT="0"
KEYWORDS="~amd64"
IUSE="discord experimental +fluidsynth +munt new-dynarec +openal +qt6 +threads vde vnc"

DEPEND="
	app-emulation/faudio
	dev-libs/libevdev
	dev-libs/libserialport
	media-libs/freetype:2=
	media-libs/libpng:=
	media-libs/libsdl2
	media-libs/libsndfile
	media-libs/openal
	media-libs/rtmidi
	net-libs/libslirp
	sys-libs/zlib
	fluidsynth? ( media-sound/fluidsynth:= )
	munt? ( media-libs/munt-mt32emu )
	openal? ( media-libs/openal )
	qt6? (
		dev-libs/wayland
		dev-qt/qtbase:6=[gui,network,opengl,widgets]
		x11-libs/libX11
		x11-libs/libXi
		x11-libs/libxkbcommon
	)
	vnc? ( net-libs/libvncserver )
"
RDEPEND="${DEPEND}
	qt6? ( dev-qt/qttranslations:6 )
	vde? ( net-misc/vde )
"
BDEPEND="
	virtual/pkgconfig
	qt6? ( kde-frameworks/extra-cmake-modules )
"

src_configure() {
	# LTO needs to be filtered
	# See https://bugs.gentoo.org/854507
	filter-lto
	append-flags -fno-strict-aliasing

	local mycmakeargs=(
		-DCPPTHREADS="$(usex threads)"
		-DDEV_BRANCH="$(usex experimental)"
		-DDISCORD="$(usex discord)"
		-DDYNAREC="ON"
		-DFLUIDSYNTH="$(usex fluidsynth)"
		-DHAS_VDE="$(usex vde "${EPREFIX}/usr/$(get_libdir)/libvdeplug.so" "HAS_VDE-NOTFOUND")"
		-DMINITRACE="OFF"
		-DMUNT="$(usex munt)"
		-DMUNT_EXTERNAL="$(usex munt)"
		-DNEW_DYNAREC="$(usex new-dynarec)"
		-DOPENAL="$(usex openal)"
		-DPREFER_STATIC="OFF"
		-DQT="$(usex qt6)"
		-DRELEASE="ON"
		-DRTMIDI="ON"
		$(usex qt6 '-DUSE_QT6=ON' '')
		-DVNC="$(usex vnc)"
	)

	cmake_src_configure
}

pkg_postinst() {
	elog "In order to use 86Box, you will need some roms for various emulated systems."
	elog "See https://github.com/86Box/roms for more information."
}
