| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| inherit eutils toolchain-funcs games |
| |
| MY_P="quake2-r${PV}" |
| DESCRIPTION="The icculus.org Linux port of iD's Quake 2 engine" |
| HOMEPAGE="http://icculus.org/quake2/" |
| SRC_URI="http://icculus.org/quake2/files/${MY_P}.tar.gz |
| qmax? ( http://icculus.org/quake2/files/maxpak.pak ) |
| rogue? ( mirror://idsoftware/quake2/source/roguesrc320.shar.Z ) |
| xatrix? ( mirror://idsoftware/quake2/source/xatrixsrc320.shar.Z )" |
| |
| LICENSE="GPL-2" |
| SLOT="0" |
| KEYWORDS="~amd64 ~ia64 ppc sparc x86 ~x86-fbsd" |
| IUSE="aalib alsa cdinstall dedicated demo ipv6 joystick opengl qmax rogue sdl X xatrix" |
| |
| UIDEPEND="aalib? ( media-libs/aalib ) |
| alsa? ( media-libs/alsa-lib ) |
| opengl? ( virtual/opengl ) |
| sdl? ( media-libs/libsdl[sound,joystick?,video] ) |
| X? ( |
| x11-libs/libXxf86dga |
| x11-libs/libXxf86vm |
| )" |
| RDEPEND="${UIDEPEND} |
| cdinstall? ( games-fps/quake2-data ) |
| demo? ( games-fps/quake2-demodata )" |
| DEPEND="${UIDEPEND} |
| X? ( x11-proto/xf86dgaproto ) |
| rogue? ( || ( sys-freebsd/freebsd-ubin app-arch/sharutils ) ) |
| xatrix? ( || ( sys-freebsd/freebsd-ubin app-arch/sharutils ) )" |
| |
| S=${WORKDIR}/${MY_P} |
| |
| pkg_setup() { |
| games_pkg_setup |
| |
| if ! use qmax && $( use opengl || use sdl ) ; then |
| elog "The 'qmax' graphical improvements are recommended." |
| echo |
| fi |
| } |
| |
| src_prepare() { |
| # Now we deal with the silly rogue / xatrix addons ... this is ugly :/ |
| ln -s $(type -P echo) "${T}"/more |
| for g in rogue xatrix ; do |
| use ${g} || continue |
| mkdir -p src/${g} |
| pushd src/${g} |
| local shar=../../../${g}src320.shar |
| sed -i -e 's:^read ans:ans=yes :' ${shar} || die |
| echo ">>> Unpacking ${shar} to ${PWD}" |
| env PATH="${T}:${PATH}" unshar ${shar} || die |
| popd |
| done |
| sed -i -e 's:jpeg_mem_src:_&:' src/ref_candygl/gl_image.c || die |
| |
| sed -i -e 's:BUILD_SOFTX:BUILD_X11:' Makefile || die |
| # -amd64.patch # make sure this is still needed in future versions |
| epatch \ |
| "${FILESDIR}"/${P}-amd64.patch \ |
| "${FILESDIR}"/${P}-gentoo-paths.patch \ |
| "${FILESDIR}"/${P}-ldflags.patch \ |
| "${FILESDIR}"/${P}-no-asm-io.patch \ |
| "${FILESDIR}"/${P}-gnusource.patch \ |
| "${FILESDIR}"/${P}-x11_soft.patch \ |
| "${FILESDIR}"/${P}-x11_mouse.patch \ |
| "${FILESDIR}"/${P}-alsa.patch \ |
| "${FILESDIR}"/${P}-ia64.patch |
| |
| if use xatrix ; then |
| epatch "${FILESDIR}/${P}"-gcc41.patch |
| fi |
| if use rogue ; then |
| cd src |
| epatch \ |
| "${FILESDIR}"/0.16-rogue-nan.patch \ |
| "${FILESDIR}"/0.16-rogue-armor.patch |
| fi |
| } |
| |
| yesno() { |
| for f in "$@" ; do |
| if ! use $f ; then |
| echo NO |
| return 1 |
| fi |
| done |
| echo YES |
| return 0 |
| } |
| |
| src_compile() { |
| # xatrix fails to build |
| # rogue fails to build |
| local libsuffix |
| for BUILD_QMAX in YES NO ; do |
| ! use qmax && [[ ${BUILD_QMAX} == "YES" ]] && continue |
| [[ ${BUILD_QMAX} == "YES" ]] \ |
| && libsuffix=-qmax \ |
| || libsuffix= |
| emake -j1 clean |
| emake -j1 build_release \ |
| BUILD_SDLQUAKE2=$(yesno sdl) \ |
| BUILD_SVGA=NO \ |
| BUILD_X11=$(yesno X) \ |
| BUILD_GLX=$(yesno opengl) \ |
| BUILD_SDL=$(yesno sdl) \ |
| BUILD_SDLGL=$(yesno sdl opengl) \ |
| BUILD_CTFDLL=YES \ |
| BUILD_XATRIX=$(yesno xatrix) \ |
| BUILD_ROGUE=$(yesno rogue) \ |
| BUILD_JOYSTICK=$(yesno joystick) \ |
| BUILD_DEDICATED=$(yesno dedicated) \ |
| BUILD_AA=$(yesno aalib) \ |
| BUILD_QMAX=${BUILD_QMAX} \ |
| HAVE_IPV6=$(yesno ipv6) \ |
| BUILD_ARTS=NO \ |
| BUILD_ALSA=$(yesno alsa) \ |
| SDLDIR=/usr/lib \ |
| DEFAULT_BASEDIR="${GAMES_DATADIR}/quake2" \ |
| DEFAULT_LIBDIR="$(games_get_libdir)/${PN}${libsuffix}" \ |
| OPT_CFLAGS="${CFLAGS}" \ |
| CC="$(tc-getCC)" |
| # now we save the build dir ... except for the object files ... |
| rm release*/*/*.o |
| mv release* my-rel-${BUILD_QMAX} |
| cd my-rel-${BUILD_QMAX} |
| rm -rf ref_{gl,soft} ded game client ctf/*.o |
| mkdir baseq2 |
| mv game*.so baseq2/ |
| cd .. |
| done |
| } |
| |
| src_install() { |
| local q2dir=$(games_get_libdir)/${PN} |
| local q2maxdir=$(games_get_libdir)/${PN}-qmax |
| |
| dodoc readme.txt README TODO "${FILESDIR}"/README-postinstall |
| |
| # regular q2 files |
| dodir "${q2dir}" |
| cp -rf my-rel-NO/* "${D}/${q2dir}"/ |
| dogamesbin "${D}/${q2dir}"/quake2 |
| rm "${D}/${q2dir}"/quake2 |
| use dedicated \ |
| && dogamesbin "${D}/${q2dir}"/q2ded \ |
| && rm "${D}/${q2dir}"/q2ded |
| use sdl \ |
| && dogamesbin "${D}/${q2dir}"/sdlquake2 \ |
| && rm "${D}/${q2dir}"/sdlquake2 |
| |
| doicon "${FILESDIR}"/quake2.xpm |
| make_desktop_entry quake2 "Quake 2" quake2 |
| |
| # q2max files |
| if use qmax ; then |
| dodir "${q2maxdir}" |
| cp -rf my-rel-YES/* "${D}/${q2maxdir}"/ || die |
| newgamesbin "${D}/${q2maxdir}"/quake2 quake2-qmax |
| rm "${D}/${q2maxdir}"/quake2 |
| use dedicated \ |
| && newgamesbin "${D}/${q2maxdir}"/q2ded q2ded-qmax \ |
| && rm "${D}/${q2maxdir}"/q2ded |
| use sdl \ |
| && newgamesbin "${D}/${q2maxdir}"/sdlquake2 sdlquake2-qmax \ |
| && rm "${D}/${q2maxdir}"/sdlquake2 |
| |
| insinto "${q2maxdir}"/baseq2 |
| doins "${DISTDIR}"/maxpak.pak |
| |
| make_desktop_entry quake2-qmax Quake2-qmax quake2 |
| fi |
| |
| prepgamesdirs |
| } |
| |
| pkg_postinst() { |
| games_pkg_postinst |
| |
| elog "Go read README-postinstall in /usr/share/doc/${PF}" |
| elog "right now! It's important - This install is just the engine, you still need" |
| elog "the data paks. Go read." |
| |
| if use demo && ! has_version "games-fps/quake2-demodata[symlink]" ; then |
| ewarn "To play the Quake 2 demo," |
| ewarn "emerge games-fps/quake2-demodata with the 'symlink' USE flag." |
| echo |
| fi |
| } |