# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ EAPI=3 inherit eutils cmake-utils wxwidgets games MY_GAMES_BINDIR="${GAMES_BINDIR#/usr/}" MY_GAMES_DATADIR="${GAMES_DATADIR#/usr/}" DESCRIPTION="Cross-platform 3D realtime strategy game" HOMEPAGE="http://www.megaglest.org/" SRC_URI="mirror://sourceforge/${PN}/${PN}-source-${PV}.tar.xz" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="+configurator curl_dynamic debug +editor +freetype +ftgl +libircclient +manpages +miniupnpc sse sse2 sse3 static-libs +streflop +tools +unicode universal +viewer" # MegaGlest configuration script will only attempt to locate an external libircclient or miniupnpc if -DWANT_STATIC_LIBS="off" # If static-libs is off and an external copy is not present, it will use an embedded libircclient or miniupnpc. # It will ALWAYS use embedded versions of these libraries if static-libs is enabled. DEPEND="app-arch/p7zip app-arch/xz-utils >=dev-util/cmake-2.8 >=dev-lang/lua-5.1 dev-libs/icu dev-libs/libxml2 >=dev-libs/xerces-c-3 media-libs/fontconfig freetype? ( media-libs/freetype ) ftgl? ( media-libs/ftgl ) media-libs/glew >=media-libs/libsdl-1.2.5[audio,joystick,video] media-libs/libogg >=media-libs/libpng-1.4 media-libs/libvorbis media-libs/openal net-libs/gnutls libircclient? ( !static-libs? ( >=net-libs/libircclient-1.6 ) ) >=net-misc/curl-7.21.0 miniupnpc? ( !static-libs? ( net-libs/miniupnpc ) ) manpages? ( sys-apps/help2man ) sys-libs/zlib virtual/jpeg virtual/opengl virtual/glu x11-libs/libX11 x11-libs/libXext x11-libs/wxGTK:2.8[X]" RDEPEND="${DEPEND} =games-strategy/megaglest-data-${PV}" S=${WORKDIR}/${PN}-${PV} pkg_setup() { games_pkg_setup if use libircclient || use miniupnpc; then einfo einfo "If you experience compilation failures with either the libircclient or miniupnpc" einfo "USE flags enabled. Try disabling these USE flags in order to use the embedded" einfo "versions of these libraries." einfo fi } src_prepare() { #The help2man patch resolves an issue where the compilation may fail when creating the man pages. epatch "${FILESDIR}"/${P}-help2man.patch # Ensure wxwidgets is the right version WX_GTK_VER=2.8 need-wxwidgets unicode } src_configure() { # Determine build type # To Do: The default setting for cmake-utils is CMAKE_BUILD_TYPE=Gentoo. This is the "proper" setting. # However, when the setting is "Gentoo", MegaGlest is unable to find certain data files even if the # --data-path=x parameter is passed to megaglest. So we should try to figure out how to fix that. # By default, "Debug" and "Release" do not respect /etc/make.conf or its CFLAGS settings. To compensate, # the hard set cmake parameters below compensate to ensure CFLAGS in make.conf are respected. # See http://devmanual.gentoo.org/eclass-reference/cmake-utils.eclass/index.html for more info. if use debug; then CMAKE_BUILD_TYPE=Debug else CMAKE_BUILD_TYPE=Release fi # Determine SSE optimization level if use sse3; then SSE=3 elif use sse2; then SSE=2 elif use sse; then SSE=1 elif use !sse; then SSE=0 fi # Configure cmake # Please be aware that MegaGlest seems to be very picky about path names. # Avoid trailing backslashes as they can cause runtime errors resulting in binaries being unable to find their config or data files. # Hard set options. mycmakeargs=( "-DCMAKE_C_FLAGS_DEBUG:STRING=${CFLAGS}" "-DCMAKE_C_FLAGS_RELEASE:STRING=${CFLAGS} -DNDEBUG" "-DCMAKE_CXX_FLAGS_DEBUG:STRING=${CXXFLAGS}" "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CXXFLAGS} -DNDEBUG" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=${LDFLAGS}" "-DCMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=${LDFLAGS}" "-DCMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=${LDFLAGS}" "-DCMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=${LDFLAGS}" "-DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=${LDFLAGS}" "-DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=${LDFLAGS}" "-DMAX_SSE_LEVEL_DESIRED:STRING=${SSE}" "-DMEGAGLEST_BIN_INSTALL_PATH=${MY_GAMES_BINDIR}" "-DMEGAGLEST_DATA_INSTALL_PATH=${MY_GAMES_DATADIR}/${PN}" "-DMEGAGLEST_DESKTOP_INSTALL_PATH=/usr/share/applications" "-DMEGAGLEST_ICON_INSTALL_PATH=/usr/share/pixmaps" "-DMEGAGLEST_MANPAGE_INSTALL_PATH=/usr/share/man/man6" "-DWANT_SVN_STAMP=off" ) # Use cmake-utils to set options according to use flags. mycmakeargs+=( $(cmake-utils_use_build configurator MEGAGLEST_CONFIGURATOR) $(cmake-utils_use curl_dynamic FORCE_CURL_DYNAMIC_LIBS) $(cmake-utils_use_build editor MEGAGLEST_MAP_EDITOR) $(cmake-utils_use_use freetype FREETYPEGL) $(cmake-utils_use_use ftgl FTGL) $(cmake-utils_use_want static-libs STATIC_LIBS) $(cmake-utils_use static-libs wxWidgets_USE_STATIC) $(cmake-utils_use_want streflop STREFLOP) $(cmake-utils_use_build tools MEGAGLEST_MODEL_IMPORT_EXPORT_TOOLS) $(cmake-utils_use unicode wxWidgets_USE_UNICODE) $(cmake-utils_use universal wxWidgets_USE_UNIVERSAL) $(cmake-utils_use_build viewer MEGAGLEST_MODEL_VIEWER) ) # Most of the options below require empty values which are not supported by EAPI 3 or otherwise don't fit well with cmake-utils. if use debug; then mycmakeargs+=( "-DBUILD_MEGAGLEST_UPNP_DEBUG:BOOL=ON" "-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON" "-DCMAKE_VERBOSE:BOOL=TRUE" "-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE" "-DwxWidgets_USE_DEBUG:BOOL=ON" "-LA" ) fi if use !manpages; then mycmakeargs+=( "-DHELP2MAN:FILEPATH=" ) fi if use !libircclient; then mycmakeargs+=( "-DIRCCLIENT_INCLUDE_DIR=" "-DIRCCLIENT_LIBRARY=" ) fi if use !miniupnpc; then mycmakeargs+=( "-DMINIUPNP_INCLUDE_DIR=" "-DMINIUPNP_LIBRARY=" ) fi cmake-utils_src_configure } src_compile() { cmake-utils_src_compile } src_install() { # Create desktop menu entries for programs which do not have an included .desktop file. if use editor; then make_desktop_entry megaglest_editor "MegaGlest Map Editor" ${PN} "Game;StrategyGame;" fi if use viewer; then make_desktop_entry megaglest_g3dviewer "MegaGlest Model Viewer" ${PN} "Game;StrategyGame;" fi if use configurator; then make_desktop_entry megaglest_configurator "MegaGlest Configurator" ${PN} "Game;StrategyGame;" fi DOCS="AUTHORS.source_code.txt CHANGELOG.txt README.txt" cmake-utils_src_install prepgamesdirs } pkg_postinst() { echo einfo Note about Configuration: einfo DO NOT directly edit glest.ini and glestkeys.ini but rather edit glestuser.ini einfo and glestuserkeys.ini and create your user over-ride values in these files. einfo On Linux, these files are located in \~/.megaglest/ einfo einfo If you have an older graphics card which only fully supports OpenGL 1.2, and the einfo game crashes when you try to play, try starting with \"megaglest --disable-vbo\" einfo Some graphics cards may require setting Max Lights to 1. echo games_pkg_postinst }