249 lines
8.2 KiB
Bash
249 lines
8.2 KiB
Bash
# Copyright 2017-2021 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
|
|
PYTHON_COMPAT=( python3_{7,8,9} )
|
|
|
|
inherit desktop python-any-r1 scons-utils toolchain-funcs xdg
|
|
|
|
if [[ "${PV}" = 9999 ]]; then
|
|
inherit git-r3
|
|
EGIT_REPO_URI="https://github.com/dxx-rebirth/dxx-rebirth"
|
|
else
|
|
MY_COMMIT=''
|
|
S="${WORKDIR}/${PN}-${MY_COMMIT}"
|
|
SRC_URI="https://codeload.github.com/dxx-rebirth/dxx-rebirth/tar.gz/${MY_COMMIT} -> ${PN}-${PVR}.tar.gz"
|
|
unset MY_COMMIT
|
|
|
|
# Other architectures are reported to work, but not tested regularly by
|
|
# the core team.
|
|
#
|
|
# Raspberry Pi support is tested by an outside contributor, and his
|
|
# fixes are merged into the main source by upstream.
|
|
#
|
|
# Cross-compilation to Windows is also supported.
|
|
KEYWORDS="~amd64 ~x86"
|
|
fi
|
|
|
|
DESCRIPTION="Descent Rebirth - enhanced Descent 1 & 2 engine"
|
|
HOMEPAGE="https://www.dxx-rebirth.com/"
|
|
|
|
LICENSE="DXX-Rebirth GPL-3"
|
|
SLOT="0"
|
|
|
|
# Default to building both game engines. The total size is relatively
|
|
# small.
|
|
IUSE="+d1x +d2x +data debug editor +flac ipv6 +joystick l10n_de +midi +mp3 +music +opengl opl3-musicpack +png sc55-musicpack sdl2 tracker valgrind +vorbis"
|
|
|
|
# Game data is stored in HOG files.
|
|
# Game movies are in MVL files.
|
|
# Various add-ons use zip files to bundle their content together.
|
|
#
|
|
# PNG support enables writing screenshots as PNG instead of TGA (for
|
|
# USE=opengl) or PCX (for USE=-opengl).
|
|
DEPEND="dev-games/physfs[hog,mvl,zip]
|
|
opengl? (
|
|
virtual/opengl
|
|
virtual/glu )
|
|
png? ( media-libs/libpng )
|
|
"
|
|
|
|
# As of this writing, there is no Portage shorthand syntax to express:
|
|
# "
|
|
# flag1? ( package[flag1] )
|
|
# flag2? ( package[flag2] )
|
|
# ...
|
|
# flagN? ( package[flagN] )
|
|
# ", such that unsetting all flags removes the dependency on package.
|
|
# Fake it by using a text fragment that is repeatedly expanded with
|
|
# differing substitutions.
|
|
#
|
|
# The use of single quotes is intentional here. The ${word} is a
|
|
# placeholder to be matched by text substitution when the fragment is
|
|
# expanded, not a shell variable reference.
|
|
#
|
|
# For each flag, depend on freedata using the same flag. If none of the
|
|
# flags are set, freedata is not needed.
|
|
DXX_RDEPEND_USE_FREEDATA_FRAGMENT='
|
|
${USE}? ( games-action/descent${ENGINE}-freedata[${USE}] )
|
|
'
|
|
# Block <0.59.100 due to file collision.
|
|
#
|
|
# If USE=data, then require a game data package.
|
|
# The build process does not use the game data, nor change how the game
|
|
# is built based on what game data will be used. At startup, the game
|
|
# will search for both types of game data and use what it finds. Users
|
|
# can switch between shareware/retail data at any time by
|
|
# adding/removing the appropriate data packages. A rebuild is _not_
|
|
# required after swapping the data files.
|
|
#
|
|
# USE-depend on freedata for various extras, but only if any of those
|
|
# extras are enabled.
|
|
DXX_RDEPEND_ENGINE_FRAGMENT='
|
|
d${ENGINE}x? (
|
|
!<games-action/d${ENGINE}x-rebirth-0.59.100
|
|
data? (
|
|
|| (
|
|
games-action/descent${ENGINE}-data
|
|
games-action/descent${ENGINE}-demodata
|
|
)
|
|
)
|
|
'"
|
|
${DXX_RDEPEND_USE_FREEDATA_FRAGMENT//\$\{USE\}/l10n_de}
|
|
${DXX_RDEPEND_USE_FREEDATA_FRAGMENT//\$\{USE\}/opl3-musicpack}
|
|
${DXX_RDEPEND_USE_FREEDATA_FRAGMENT//\$\{USE\}/sc55-musicpack}
|
|
"'
|
|
)
|
|
'
|
|
|
|
DXX_DEPEND_USE_SDL_VERSION_FRAGMENT='
|
|
media-libs/lib${SDL_version}[joystick?,opengl?,sound,video]
|
|
media-libs/${SDL_version}-image
|
|
music? ( media-libs/${SDL_version}-mixer )
|
|
'
|
|
DXX_RDEPEND_USE_SDL_VERSION_FRAGMENT='
|
|
music? ( media-libs/${SDL_version}-mixer[flac?,midi?,mp3?,vorbis?] )
|
|
'
|
|
DEPEND="${DEPEND}
|
|
!sdl2? ( ${DXX_DEPEND_USE_SDL_VERSION_FRAGMENT//\$\{SDL_version\}/sdl} )
|
|
sdl2? ( ${DXX_DEPEND_USE_SDL_VERSION_FRAGMENT//\$\{SDL_version\}/sdl2} )
|
|
"
|
|
unset DXX_DEPEND_USE_SDL_VERSION_FRAGMENT
|
|
|
|
unset DXX_RDEPEND_USE_FREEDATA_FRAGMENT
|
|
RDEPEND="${DEPEND}
|
|
!sdl2? ( ${DXX_RDEPEND_USE_SDL_VERSION_FRAGMENT//\$\{SDL_version\}/sdl} )
|
|
sdl2? ( ${DXX_RDEPEND_USE_SDL_VERSION_FRAGMENT//\$\{SDL_version\}/sdl2} )
|
|
${DXX_RDEPEND_ENGINE_FRAGMENT//\$\{ENGINE\}/1}
|
|
${DXX_RDEPEND_ENGINE_FRAGMENT//\$\{ENGINE\}/2}
|
|
"
|
|
unset DXX_RDEPEND_ENGINE_FRAGMENT
|
|
unset DXX_RDEPEND_USE_SDL_VERSION_FRAGMENT
|
|
|
|
# USE=valgrind enables use of a Valgrind header. A build with valgrind
|
|
# instrumentation can be run without installing Valgrind, so this
|
|
# dependency is only in DEPEND, instead of being in both DEPEND and
|
|
# RDEPEND.
|
|
DEPEND+='
|
|
valgrind? ( dev-util/valgrind )
|
|
'
|
|
|
|
# This ebuild builds d1x-rebirth, d2x-rebirth, or both. Building none
|
|
# would mean this ebuild installs zero files.
|
|
#
|
|
# For each of the supported music flags, require USE=music, so that the
|
|
# package is built with sdl-mixer support. Individual music types can be
|
|
# changed without a Rebirth rebuild by rebuilding sdl-mixer with
|
|
# appropriate support, but Rebirth must have sdl-mixer support at build
|
|
# time in order to support any of these music formats at runtime.
|
|
#
|
|
# All music files in the optional musicpack downloads are .ogg, so
|
|
# require USE=vorbis if those packs are enabled.
|
|
REQUIRED_USE='
|
|
|| ( d1x d2x )
|
|
flac? ( music )
|
|
midi? ( music )
|
|
mp3? ( music )
|
|
vorbis? ( music )
|
|
opl3-musicpack? ( vorbis )
|
|
sc55-musicpack? ( vorbis )
|
|
sdl2? ( opengl )
|
|
'
|
|
|
|
BDEPEND="virtual/pkgconfig"
|
|
|
|
# As of this writing, IUSE_RUNTIME is a GLEP, but not an implemented
|
|
# feature. This variable is stored here to be ready to activate when
|
|
# Portage implements this feature.
|
|
#
|
|
# Note that while individual music formats can be switched without a
|
|
# rebuild, the master flag USE=music controls whether sdl-mixer is used,
|
|
# and therefore requires a rebuild when changed.
|
|
#IUSE_RUNTIME="flac l10n_de midi mp3 opl3-musicpack sc55-musicpack vorbis"
|
|
|
|
dxx_scons() {
|
|
# Always build profile `m`. If use editor, also build profile `e`.
|
|
# Set most variables in the default anonymous profile. Only
|
|
# `builddir` and `editor` are set in the named profiles, since those
|
|
# must be different between the two builds.
|
|
#
|
|
# Notes for end users:
|
|
# - Per-engine options can be set with an engine prefix, as shown
|
|
# for sharepath. Such options are used in place of
|
|
# engine-unqualified options. For example, to disable sdlmixer
|
|
# for Descent 2: Rebirth, but use the setting below for Descent 1:
|
|
# Rebirth, set EXTRA_ESCONS="d2x_sdlmixer=0".
|
|
# - Profile `site` is searched before the anonymous profile, and is
|
|
# deliberately unused in this ebuild. Set options in the site
|
|
# profile to affect both engines:
|
|
# EXTRA_ESCONS="site_verbosebuild=0".
|
|
local scons_build_profile=m mysconsargs=(
|
|
sdl2=$(usex sdl2 1 0)
|
|
sdlmixer=$(usex music 1 0)
|
|
verbosebuild=1
|
|
debug=$(usex debug 1 0)
|
|
ipv6=$(usex ipv6 1 0)
|
|
opengl=$(usex opengl 1 0)
|
|
use_tracker=$(usex tracker 1 0)
|
|
prefix="${EPREFIX}"/usr
|
|
screenshot=$(usex png png legacy)
|
|
m_builddir=build/main/
|
|
m_editor=0
|
|
)
|
|
if use editor; then
|
|
scons_build_profile+=+e
|
|
mysconsargs+=( \
|
|
e_builddir=build/editor/
|
|
e_editor=1
|
|
)
|
|
fi
|
|
if ! use joystick; then
|
|
mysconsargs+=( \
|
|
max_joysticks=0
|
|
)
|
|
fi
|
|
# Add sharepath and enable build of selected games. The trailing
|
|
# comma after `$scons_build_profile` is required to cause scons to
|
|
# search the anonymous profile. If omitted, only settings from the
|
|
# named profile would be used.
|
|
use d1x && mysconsargs+=( d1x_sharepath="/usr/share/games/d1x" d1x="$scons_build_profile,site," )
|
|
use d2x && mysconsargs+=( d2x_sharepath="/usr/share/games/d2x" d2x="$scons_build_profile,site," )
|
|
use valgrind && mysconsargs+=( poison=valgrind )
|
|
escons "${mysconsargs[@]}" "$@"
|
|
}
|
|
|
|
src_compile() {
|
|
tc-export CXX PKG_CONFIG
|
|
dxx_scons register_install_target=0 build
|
|
}
|
|
|
|
src_install() {
|
|
# Use upstream install target to handle the various combinations of
|
|
# enabled/disabled engines and optional editor support.
|
|
dxx_scons register_compile_target=0 register_install_target=1 DESTDIR="${D}" "${D}"
|
|
local DV
|
|
for DV in 1 2; do
|
|
if ! use d${DV}x; then
|
|
continue
|
|
fi
|
|
local PROGRAM=d${DV}x-rebirth
|
|
docinto "${PROGRAM}"
|
|
dodoc "${PROGRAM}"/*.txt
|
|
make_desktop_entry "${PROGRAM}" "Descent ${DV} Rebirth" "${PROGRAM}"
|
|
doicon "${PROGRAM}/${PROGRAM}.xpm"
|
|
done
|
|
}
|
|
|
|
pkg_postinst() {
|
|
xdg_pkg_postinst
|
|
if ! use data; then
|
|
elog "${PN} requires game data to play."
|
|
elog "Game data is not included in this package. To play the game,"
|
|
elog "emerge the packages required by USE=data or install the game"
|
|
elog "data by hand."
|
|
elog
|
|
elog "Changing USE=data does not change how this package is built,"
|
|
elog "only its runtime dependencies."
|
|
fi
|
|
}
|