# Copyright 2026 Nadeŭka <me+oss@nadevko.cc>
# Distributed under the terms of the GNU General Public License v2
EAPI=8

inherit branding ecm optfeature toolchain-funcs xdg

DESCRIPTION='Prism Launcher fork aimed to provide a free way to play Minecraft'
HOMEPAGE='
	https://freesmlauncher.org
	https://github.com/FreesmTeam/FreesmLauncher
'
SRC_URI=https://github.com/FreesmTeam/FreesmLauncher/releases/download/${PV}/FreesmLauncher-${PV}.tar.gz
S="${WORKDIR}"/FreesmLauncher-${PV}

# history: MultiMC -> PolyMC -> Prism Launcher -> Freesm Launcher
LICENSE='Apache-2.0'       # MultiMC
LICENSE+=' Batch'          # batch icon set
LICENSE+=' Boost-1.0'      # cmake/GetGitRevisionDescription.cmake.in
LICENSE+=' BSD-2'          # cmark
LICENSE+=' BSD'            # Gamemode, LocalPeer
LICENSE+=' CC-BY-SA-4.0'   # logo and related assets
LICENSE+=' GPL-3'          # PolyMC, PrismLauncher, Freesm Launcher, libraries/launcher
LICENSE+=' LGPL-2.1+'      # libqrencode
LICENSE+=' LGPL-2+'        # rainbow
LICENSE+=' LGPL-3'         # Qt 6, qdcss
LICENSE+=' LGPL-3+'        # libnbtplusplus, Breeze icons, Oxygen icons
LICENSE+=' MIT'            # lionshead, tomlplusplus, vcpkg
LICENSE+=' OFL-1.1'        # Material Design Icons
LICENSE+=' public-domain'  # murmur2

SLOT=0
KEYWORDS=~amd64
IUSE='+java-downloader man pch test'
RESTRICT='!test? ( test )'

QT_SLOT=6
SHARED_DEPEND="
	app-arch/libarchive:=
	app-text/cmark:=
	dev-cpp/tomlplusplus
	dev-qt/qtbase:${QT_SLOT}=[concurrent,gui,opengl,network,vulkan,widgets]
	dev-qt/qtnetworkauth:${QT_SLOT}=
	media-gfx/qrencode:=
	virtual/zlib:=
"
DEPEND="
	${SHARED_DEPEND}
	dev-util/vulkan-headers
	games-util/gamemode
	media-libs/libglvnd
"
RDEPEND="
	${SHARED_DEPEND}
	>=virtual/jre-1.8.0:*
	dev-qt/qtimageformats:${QT_SLOT}=
	dev-qt/qtsvg:${QT_SLOT}=
	sys-apps/pciutils
	virtual/opengl
	x11-apps/mesa-progs
"
BDEPEND="
	${SHARED_DEPEND}
	>=virtual/jdk-1.8:*
	virtual/pkgconfig
	man? ( app-text/scdoc )
	test? ( ${RDEPEND} )
"

PATCHES=( "${FILESDIR}" )

freesmlauncher_tc_min_ver() {
	[[ ${MERGE_TYPE} == binary ]] && return
	if tc-is-clang; then
		tc-check-min_ver clang 5
	else
		tc-check-min_ver gcc 8
	fi
}

pkg_pretend() {
	freesmlauncher_tc_min_ver
}

pkg_setup() {
	freesmlauncher_tc_min_ver
}

src_configure() {
	local mycmakeargs=(
		-DLauncher_BUILD_UPDATER=OFF
		-DLauncher_QT_VERSION_MAJOR=${QT_SLOT}
		-DLauncher_BUILD_PLATFORM="${BRANDING_OS_PRETTY_NAME}"
		-DBUILD_TESTING=$(usex test)
		-DENABLE_CSDOC=$(usex man)
		-DLauncher_ENABLE_JAVA_DOWNLOADER=$(usex java-downloader)
		-DLauncher_USE_PCH=$(usex pch)
		-DENABLE_LTO=$(tc-is-lto)
	)
	ecm_src_configure
}

pkg_postinst() {
	xdg_pkg_postinst

	optfeature 'Controller support' virtual/libusb
	optfeature 'Feral Gamemode support' games-util/gamemode
	optfeature 'MangoHud support' games-util/mangohud
	optfeature 'Text to speech support' app-accessibility/flite
}