All pastes #208473 Raw Edit

/usr/local/portage/g

public text v1 · immutable
#208473 ·published 2006-10-18 17:15 UTC
rendered paste body
# 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
}