# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit eutils subversion multilib toolchain-funcs games
SVN_REV="205"
QUDOS_PATCH="q2-icculus-r${SVN_REV}.diffs"
QMAX_PAK="maxpak.pak"
DESCRIPTION="The icculus.org Linux port of iD's Quake 2 engine"
HOMEPAGE="http://icculus.org/quake2/"
SRC_URI="http://qudos.quakedev.com/linux/quake2/engines/quake2-icculus/${QUDOS_PATCH}.gz
qmax? ( http://icculus.org/quake2/files/${QMAX_PAK} )
rogue? ( mirror://idsoftware/quake2/source/roguesrc320.shar.Z )
xatrix? ( mirror://idsoftware/quake2/source/xatrixsrc320.shar.Z )"
# View at http://svn.icculus.org/quake2/trunk/
ESVN_REPO_URI="svn://svn.icculus.org/quake2/trunk"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~ppc ~sparc ~x86 ~x86-fbsd"
IUSE="aalib alsa arts cdinstall debug dedicated demo dga ipv6 joystick opengl qmax rogue sdl svga X xatrix xmms"
UIDEPEND="aalib? ( media-libs/aalib )
alsa? ( media-libs/alsa-lib )
arts? ( kde-base/arts )
dga? ( x11-libs/libXxf86dga )
opengl? ( virtual/opengl )
svga? ( media-libs/svgalib )
sdl? ( media-libs/libsdl )
xmms? ( media-sound/xmms )"
RDEPEND="${UIDEPEND}
cdinstall? ( games-fps/quake2-data )
demo? ( games-fps/quake2-demodata )"
DEPEND="${UIDEPEND}
X? (
x11-proto/xproto
x11-proto/xextproto
dga? ( x11-proto/xf86dgaproto )
x11-proto/xf86vidmodeproto )
rogue? ( || ( sys-freebsd/freebsd-ubin app-arch/sharutils ) )
xatrix? ( || ( sys-freebsd/freebsd-ubin app-arch/sharutils ) )"
S=${WORKDIR}/quake2
dir=${GAMES_DATADIR}/quake2
libdir=${GAMES_LIBDIR}/${PN}
src_unpack() {
subversion_src_unpack
unpack "${QUDOS_PATCH}.gz"
cd "${S}"
epatch "${QUDOS_PATCH}"
# Now we deal with the silly rogue / xatrix addons ... this is ugly :/
ln -s $(which echo) "${T}"/more
for g in rogue xatrix ; do
use ${g} || continue
mkdir -p "${S}/src/${g}"
cd "${S}/src/${g}"
local shar=${g}src320.shar
unpack "${shar}.Z"
sed -i \
-e 's:^read ans:ans=yes :' "${shar}" \
|| die "sed ${shar} failed"
echo ">>> Unpacking ${shar} to ${PWD}"
env PATH="${T}:${PATH}" unshar "${shar}" || die "unshar ${shar} failed"
rm "${shar}"
done
if use rogue ; then
cd "${S}"/src
epatch "${FILESDIR}"/0.16-rogue-nan.patch
epatch "${FILESDIR}"/0.16-rogue-armor.patch
fi
if use xatrix ; then
epatch "${FILESDIR}/${PN}-0.16.1-gcc41.patch"
fi
}
src_compile() {
yesno() { useq $1 && echo YES || echo NO ; }
make clean || die "make clean failed"
local target="release"
use debug && target="debug"
local build_sdlgl="NO"
local build_quake2="NO"
if use sdl ; then
build_sdlgl=$(yesno opengl)
else
if use opengl || use svga || use X || use aalib ; then
build_quake2="YES"
fi
fi
# build_qmax is not a local variable
build_qmax="NO"
if use qmax ; then
if use opengl || use sdl ; then
build_qmax="YES"
else
ewarn "Disabling qmax because it requires opengl or sdl."
fi
else
if use opengl || use sdl ; then
elog "The 'qmax' graphical improvements are recommended."
fi
fi
emake -j1 build_${target} \
BUILD_QUAKE2=${build_quake2} \
BUILD_SDLQUAKE2=$(yesno sdl) \
BUILD_SVGA=$(yesno svga) \
BUILD_SOFTX=$(yesno X) \
BUILD_GLX=$(yesno opengl) \
BUILD_SDL=$(yesno sdl) \
BUILD_SDLGL=${build_sdlgl} \
BUILD_AA=$(yesno aalib) \
BUILD_QMAX=${build_qmax} \
WITH_XF86_DGA=$(yesno dga) \
WITH_XMMS=$(yesno xmms) \
BUILD_CTFDLL=YES \
BUILD_XATRIX=$(yesno xatrix) \
BUILD_ROGUE=$(yesno rogue) \
BUILD_JOYSTICK=$(yesno joystick) \
BUILD_DEDICATED=$(yesno dedicated) \
HAVE_IPV6=$(yesno ipv6) \
BUILD_ARTS=$(yesno arts) \
BUILD_ALSA=$(yesno alsa) \
DEFAULT_BASEDIR=${dir} \
DEFAULT_LIBDIR=${libdir} \
SDLDIR=/usr/$(get_libdir) \
CC=$(tc-getCC) \
VERBOSE=YES \
STRIP=NO \
BUILD_DEBUG_DIR=release \
BUILD_RELEASE_DIR=release \
|| die "emake failed"
}
src_install() {
local icon="quake2.xpm"
doicon "${FILESDIR}/${icon}" || die
local client
[[ -e release/quake2 ]] && client="quake2"
[[ -e release/sdlquake2 ]] && client="sdlquake2"
if [[ -n "${client}" ]] ; then
newgamesbin release/"${client}" quake2 \
|| die "newgamesbin ${client} failed"
if use demo ; then
games_make_wrapper quake2-demo "quake2 +set game demo"
make_desktop_entry quake2-demo "Quake 2 (Demo)" "${icon}"
else
make_desktop_entry quake2 "Quake 2" "${icon}"
fi
fi
if use dedicated ; then
newgamesbin release/q2ded quake2-ded \
|| die "newgamesbin q2ded failed"
fi
local d
for d in "" baseq2 ctf rogue xatrix ; do
if [[ "$( ls release/${d}/*.so | wc -l )" -ne "0" ]] ; then
exeinto "${libdir}/${d}"
doexe release/${d}/*.so || die "doexe ${d}/*.so failed"
fi
done
if [[ "${build_qmax}" = "YES" ]] ; then
insinto "${libdir}"/baseq2
doins "${DISTDIR}/${QMAX_PAK}" || die
fi
dodoc README readme.txt
prepgamesdirs
}