# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI="2" inherit eutils games MY_BUILD="2387" DESCRIPTION="Port of Duke Nukem 3D for SDL" HOMEPAGE="http://www.eduke32.com/ http://hrp.duke4.net/" SRC_URI="http://dukeworld.duke4.net/eduke32/synthesis/${PV}-${MY_BUILD}/${PN}_src_${PV}-${MY_BUILD}.tar.bz2 textures? ( http://www.duke4.org/files/nightfright/polymer/polymer_hrp.zip http://www.duke4.org/files/nightfright/polymer/polymer_upd.zip ) music? ( http://www.duke4.org/files/nightfright/eduke32_mus.zip ) xxx? ( http://www.duke4.org/files/nightfright/xxx_pack.zip ) xxx-lite? ( http://www.duke4.org/files/nightfright/xxx_lite.zip )" LICENSE="as-is" SLOT="0" KEYWORDS="amd64 ~x86" IUSE="caribbean +cdinstall debug dukedc editor gtk nwinter +opengl png textures music utils vpx xxx xxx-lite" RDEPEND="cdinstall? ( games-fps/duke3d-data ) gtk? ( x11-libs/gtk+ ) media-libs/libsdl music? ( media-libs/sdl-mixer ) !music? ( media-libs/sdl-mixer[timidity] ) media-libs/libvorbis opengl? ( virtual/opengl ) png? ( media-libs/libpng ) vpx? ( media-libs/libvpx )" #PDEPEND is necessary, as caribbean requires eduke32 to be installed first PDEPEND="dukedc? ( games-fps/duke3d-dukedc[textures=] ) caribbean? ( games-fps/duke3d-caribbean[textures=] ) nwinter? ( games-fps/duke3d-nwinter[textures=] )" DEPEND="${RDEPEND} app-arch/unzip" S=${WORKDIR}/${PN}_${PV}-${MY_BUILD} pkg_setup() { # Validate USE flags if (use textures && ! use opengl); then ewarn "You must enable opengl if you wish to use the high resolution textures." die "textures requires opengl" elif (use xxx && use xxx-lite); then ewarn "You must enable only one XXX USE flag: xxx or xxx-lite" die "use single xxx USE flag" elif ( (use xxx || use xxx-lite) && ! use textures ); then ewarn "Enabling support for XXX textures requires the textures USE flag" die "xxx or xxx-lite requires textures" fi } src_unpack() { unpack "${PN}_src_${PV}-${MY_BUILD}.tar.bz2" } src_prepare() { # Point eduk32 to data files in shared duke3d folder sed -e "s;/usr/share/games/eduke32;${GAMES_DATADIR}/duke3d;" \ -i source/{astub,game}.c || die "sed path update failed" # Redirect log file so it's not always written in $PWD sed -e 's;OSD_SetLogFile("\(\w\+32.log\)");OSD_SetLogFile("/tmp/\1");' \ -i source/{astub,game}.c || die "sed log fix failed" } src_compile() { local MY_OPTS="ARCH= STRIP=touch" use debug && MY_OPTS+=" RELEASE=0" use gtk || MY_OPTS+=" WITHOUT_GTK=1" use opengl || MY_OPTS+=" USE_OPENGL=0" use png && MY_OPTS+=" USE_LIBPNG=1" use vpx || MY_OPTS+=" USE_LIBVPX=0" emake ${MY_OPTS} || die "make failed" if use utils; then cd build emake ${MY_OPTS} || die "make utils failed" fi } src_install() { local ARGS insinto "${GAMES_DATADIR}/duke3d" if use textures; then doins "${DISTDIR}"/polymer_{hrp,upd}.zip || die "texture install failed" unzip -q "${DISTDIR}"/polymer_hrp.zip "*.txt" dodoc hrp_*.txt unzip -q "${DISTDIR}"/polymer_upd.zip "changelog.txt" newdoc changelog.txt hrp_upd_changelog.txt ARGS+=" -g polymer_hrp.zip -g polymer_upd.zip" fi if use xxx; then doins "${DISTDIR}/xxx_pack.zip" || die "xxx install failed" unzip -q "${DISTDIR}/xxx_pack.zip" "xxx_readme.txt" dodoc "xxx_readme.txt" ARGS+=" -g xxx_pack.zip" elif use xxx-lite; then doins "${DISTDIR}/xxx_lite.zip" || die "xxx-lite install failed" unzip -q "${DISTDIR}/xxx_lite.zip" "xxx-lite_readme.txt" dodoc "xxx-lite_readme.txt" ARGS+=" -g xxx_lite.zip" fi if use music; then doins "${DISTDIR}/eduke32_mus.zip" || die "music install failed" unzip -q "${DISTDIR}/eduke32_mus.zip" "music_readme.txt" dodoc "music_readme.txt" ARGS+=" -g eduke32_mus.zip" fi if use editor; then newgamesbin "mapster32" "mapster32.bin" || die "editor install failed" games_make_wrapper "mapster32" "${GAMES_BINDIR}/mapster32.bin" doins "m32help.hlp" || die "editor help install failed" fi if use utils; then dobin build/{kextract,kgroup,md2tool,transpal,wad2art,wad2map} dodoc build/doc/*.txt fi newgamesbin "${PN}" "${PN}.bin" || die "binary install failed" games_make_wrapper "${PN}" "${GAMES_BINDIR}/${PN}.bin ${ARGS}" make_desktop_entry "${PN}" "EDuke32" dodoc buildlic.txt if use dukedc; then local EXPARGS="-g dukedc.grp" use textures && EXPARGS+=" -g dukedc_hrp.zip" games_make_wrapper "${PN}-dukedc" "${GAMES_BINDIR}/${PN}.bin ${ARGS} ${EXPARGS}" make_desktop_entry "${PN}-dukedc" "EDuke32 - Duke It Out in D.C." fi if use caribbean; then local TITLE="Duke Caribbean" local EXPARGS="-g vacation.grp" if use textures; then TITLE+=" - Vacation Plus" EXPARGS+=" -x VacaEDuke.con -g vaca_plus.zip" if (use xxx || use xxx-lite); then EXPARGS+=" -h vaca_xxx.def" else EXPARGS+=" -h vacation.def" fi else EXPARGS+=" -x vacationgame.con" fi games_make_wrapper "${PN}-caribbean" "${GAMES_BINDIR}/${PN}.bin ${ARGS} ${EXPARGS}" make_desktop_entry "${PN}-caribbean" "EDuke32 - ${TITLE}" fi if use nwinter; then local TITLE="Nuclear Winter" local EXPARGS="-g nwinter.grp" if use textures; then TITLE+=" Plus" EXPARGS+=" -x NWEDuke.con -g nw_plus.zip" if (use xxx || use xxx-lite); then EXPARGS+=" -h nw_xxx.def" else EXPARGS+=" -h nwinter.def" fi else EXPARGS+=" -x nwinternwinter.con" fi games_make_wrapper "${PN}-nwinter" "${GAMES_BINDIR}/${PN}.bin ${ARGS} ${EXPARGS}" make_desktop_entry "${PN}-nwinter" "EDuke32 - ${TITLE}" fi prepgamesdirs } pkg_postinst() { games_pkg_postinst if ! use cdinstall; then echo ewarn "Note: You must also install the game data files, either manually or with" ewarn "games-fps/duke3d-data, before playing. Demo files are also supported." echo fi echo einfo "EDuke32 has been preconfigured to launch the following games:" einfo "eduke32 - Duke Nukem 3D" use dukedc && einfo "eduke32-dukedc - Duke It Out in D.C." use caribbean && einfo "eduke32-caribbean - Duke Caribbean: Life's a Beach" use nwinter && einfo "eduke32-nwinter - Duke - Nuclear Winter" echo }