# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header$ WANT_AUTOMAKE="latest" WANT_AUTOCONF="latest" inherit autotools eutils games #MY_PV=${PV:0:4}_${PV:4:2}_${PV:6:2} MY_PV="2007_08_29" PATCH="2007-09-04" EDITION="summer_edition" DESCRIPTION="Open Source Game Engine (major rewrite of Cube FPS) and two freeware games: Sauerbraten (FPS) and Eisenstern (RPG in early development)" HOMEPAGE="http://sauerbraten.org" SRC_URI="mirror://sourceforge/${PN}/${PN}_${MY_PV}_${EDITION}_linux.tar.bz2 mirror://sourceforge/${PN}/patch-${PATCH}_linux.tar.gz" LICENSE="ZLIB freedist" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="debug dedicated" DEPEND=" !dedicated? ( >=media-libs/libsdl-1.2 >=media-libs/sdl-mixer-1.2 >=media-libs/sdl-image-1.2 media-libs/libpng sys-libs/zlib virtual/opengl )" S=${WORKDIR}/${PN} LIBEXECDIR="${GAMES_PREFIX}/libexec" DATADIR="${GAMES_DATADIR}/${PN}" STATEDIR="${GAMES_STATEDIR}/${PN}" src_unpack() { unpack ${A} # Remove cruft # Not technically nessesary, but will guard against some potential trouble find -name CVS -print0 | xargs -0 rm -rf rm -rf "${S}"/sauerbraten_unix "${S}"/bin_unix "${S}"/src/{include,lib,mingw,vcpp,xcode} # Remove static_wiki to avoid upgrade breakage # Remove this section when portage doesn't break on filenames with spaces. rm -rf "${S}"/docs/static_wiki epatch "${FILESDIR}"/${P}-no-static-wiki.diff # Patch the makefile to honor global CXXFLAGS epatch "${FILESDIR}"/${P}-makefile.diff # Enable debugging support in Makefile if use debug ; then sed -i "${S}"/src/Makefile \ -e 's:^CXXFLAGS.*$:& -D_DEBUG:g' \ || die "sed Makefile failed" fi # Use a global statedir instead of ${PWD} for FILE in {autoexec,config,servers}.cfg ; do sed -i "${S}"/src/engine/{command,main,serverbrowser}.cpp \ -e "s:${FILE}:${STATEDIR}/${FILE}:" \ || die "sed cfg ${FILE} failed" done # Fix links so they point to the correct directory sed -i "${S}"/README.html \ -e 's:docs/::' \ || die "sed README.html failed" # Recreate the enet configure script cd "${S}/src/enet" eautoreconf chmod +x configure } src_compile() { cd "${S}/src/enet" econf || die "econf enet failed" emake || die "emake enet failed" cd "${S}/src" if use dedicated ; then emake server || die "make failed!" else emake client || die "make failed!" fi } src_install() { if use dedicated ; then newgamesbin src/sauer_server ${PN}-server else # Setup the global statedir dodir "${STATEDIR}" for FILE in {autoexec,config,servers}.cfg ; do touch "${D}${STATEDIR}/${FILE}" || die "touch ${FILE} failed" fperms 660 "${STATEDIR}/${FILE}" || die "fperms ${FILE} failed" done # Install the game data insinto "${DATADIR}" doins -r data packages # Install the executable exeinto "${LIBEXECDIR}" newexe src/sauer_client ${PN} # Install the wrappers games_make_wrapper "${PN}-client" "${LIBEXECDIR}/${PN}" "${DATADIR}" games_make_wrapper "${PN}-server" "${LIBEXECDIR}/${PN} -d" "${DATADIR}" games_make_wrapper "eisenstern" "${LIBEXECDIR}/${PN} -grpg" "${DATADIR}" # Create menu entries insinto /usr/share/pixmaps doins "${FILESDIR}"/${PN}.png make_desktop_entry ${PN}-client "Sauerbraten" ${PN}.png "Game;ActionGame" # make_desktop_entry eisenstern "Eisenstern" ${PN}.png "Game;RolePlaying" fi dodoc src/*.txt docs/dev/*.txt dohtml -r README.html docs/* prepgamesdirs }