You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
3.7 KiB
152 lines
3.7 KiB
# Copyright 1999-2022 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit desktop toolchain-funcs wrapper
|
|
|
|
CTF_V="1.08"
|
|
ROGUE_V="2.09"
|
|
XATRIX_V="2.10"
|
|
REF_VK_V="1.0.2"
|
|
|
|
DESCRIPTION="Quake 2 engine focused on single player"
|
|
HOMEPAGE="https://www.yamagi.org/quake2/"
|
|
SRC_URI="https://deponie.yamagi.org/quake2/quake2-${PV}.tar.xz
|
|
ctf? ( https://deponie.yamagi.org/quake2/quake2-ctf-${CTF_V}.tar.xz )
|
|
rogue? ( https://deponie.yamagi.org/quake2/quake2-rogue-${ROGUE_V}.tar.xz )
|
|
xatrix? ( https://deponie.yamagi.org/quake2/quake2-xatrix-${XATRIX_V}.tar.xz )
|
|
vulkan? ( https://github.com/yquake2/ref_vk/archive/refs/tags/v${REF_VK_V}.tar.gz ->
|
|
quake2-ref_vk-${REF_VK_V}.tar.gz )
|
|
"
|
|
S="${WORKDIR}/quake2-${PV}"
|
|
|
|
LICENSE="GPL-2"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
|
|
IUSE="+client ctf dedicated gles openal +opengl rogue softrender vulkan xatrix"
|
|
REQUIRED_USE="
|
|
|| ( client dedicated )
|
|
client? ( || ( opengl gles softrender vulkan ) )
|
|
"
|
|
|
|
RDEPEND="
|
|
client? (
|
|
media-libs/libsdl2[opengl?,video,vulkan?]
|
|
net-misc/curl
|
|
gles? (
|
|
media-libs/libglvnd
|
|
media-libs/libsdl2[gles2]
|
|
)
|
|
openal? ( media-libs/openal )
|
|
!openal? ( media-libs/libsdl2[sound] )
|
|
opengl? ( media-libs/libglvnd[X] )
|
|
)
|
|
"
|
|
DEPEND="${RDEPEND}
|
|
client? ( vulkan? ( dev-util/vulkan-headers ) )
|
|
"
|
|
|
|
PATCHES=( "${FILESDIR}"/${PN}-8.01-execinfo.patch )
|
|
|
|
DOCS=( CHANGELOG README.md doc )
|
|
|
|
src_compile() {
|
|
tc-export CC
|
|
|
|
local targets=( game )
|
|
local emakeargs=(
|
|
VERBOSE=1
|
|
WITH_EXECINFO=$(usex elibc_musl no yes)
|
|
WITH_SYSTEMWIDE=yes
|
|
WITH_SYSTEMDIR="${EPREFIX}"/usr/share/quake2
|
|
WITH_OPENAL=$(usex openal)
|
|
)
|
|
|
|
if use client; then
|
|
targets+=( client )
|
|
use gles && targets+=( ref_gles3 )
|
|
use opengl && targets+=( ref_gl1 ref_gl3 )
|
|
use softrender && targets+=( ref_soft )
|
|
fi
|
|
use dedicated && targets+=( server )
|
|
|
|
emake "${emakeargs[@]}" config
|
|
emake "${emakeargs[@]}" "${targets[@]}"
|
|
|
|
if use client && use vulkan; then
|
|
emake -C "${WORKDIR}"/ref_vk-${REF_VK_V} VERBOSE=1
|
|
fi
|
|
|
|
local addon
|
|
for addon in $(usev ctf) $(usev rogue) $(usev xatrix); do
|
|
emake -C "${WORKDIR}"/quake2-${addon}-* VERBOSE=1
|
|
done
|
|
}
|
|
|
|
src_install() {
|
|
insinto /usr/lib/yamagi-quake2
|
|
# Yamagi Quake II expects all binaries to be in the same directory
|
|
# See doc/070_packaging.md for more info
|
|
exeinto /usr/lib/yamagi-quake2
|
|
doins -r release/.
|
|
|
|
if use client; then
|
|
doexe release/quake2
|
|
dosym ../lib/yamagi-quake2/quake2 /usr/bin/yquake2
|
|
|
|
newicon stuff/icon/Quake2.svg "yamagi-quake2.svg"
|
|
make_desktop_entry "yquake2" "Yamagi Quake II"
|
|
|
|
if use vulkan; then
|
|
doins "${WORKDIR}"/ref_vk-${REF_VK_V}/release/ref_vk.so
|
|
fi
|
|
fi
|
|
|
|
if use dedicated; then
|
|
doexe release/q2ded
|
|
dosym ../lib/yamagi-quake2/q2ded /usr/bin/yq2ded
|
|
fi
|
|
|
|
insinto /usr/lib/yamagi-quake2/baseq2
|
|
doins stuff/yq2.cfg
|
|
|
|
local addon
|
|
for addon in $(usev ctf) $(usev rogue) $(usev xatrix); do
|
|
insinto /usr/lib/yamagi-quake2/${addon}
|
|
doins "${WORKDIR}"/quake2-${addon}-*/release/game.so
|
|
|
|
if use client; then
|
|
local addon_name
|
|
case ${addon} in
|
|
ctf) addon_name="CTF" ;;
|
|
rogue) addon_name="Ground Zero" ;;
|
|
xatrix) addon_name="The Reckoning" ;;
|
|
esac
|
|
|
|
make_wrapper "yquake2-${addon}" "yquake2 +set game ${addon}"
|
|
make_desktop_entry "yquake2-${addon}" "Yamagi Quake II: ${addon_name}"
|
|
fi
|
|
done
|
|
|
|
keepdir /usr/share/quake2
|
|
|
|
einstalldocs
|
|
if use client; then
|
|
docinto examples
|
|
dodoc stuff/cdripper.sh
|
|
fi
|
|
}
|
|
|
|
pkg_postinst() {
|
|
if [[ -z ${REPLACING_VERSIONS} ]]; then
|
|
elog
|
|
elog "In order to play, you should do one of the following things:"
|
|
elog " - install games-fps/quake2-data or games-fps/quake2-demodata;"
|
|
elog " - manually copy game data files into ~/.yq2/ or"
|
|
elog " ${EROOT}/usr/share/quake2/."
|
|
elog "Read ${EROOT}/usr/share/doc/${PF}/README.md* for more information."
|
|
elog
|
|
fi
|
|
}
|