# 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 }