# Copyright 1999-2021 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 EGIT_REPO_URI="https://github.com/spring/spring.git" EGIT_BRANCH="master" KEYWORDS="~amd64 ~x86" S="${WORKDIR}/${PN}-$PV" inherit git-r3 cmake flag-o-matic java-pkg-opt-2 xdg-utils DESCRIPTION="A 3D multiplayer real-time strategy game engine" HOMEPAGE="https://springrts.com" LICENSE="GPL-2" SLOT="0" IUSE="+ai java +default headless dedicated test-ai debug -profile -custom-march -custom-cflags +tcmalloc +threaded bindist -lto test" RESTRICT="mirror strip" REQUIRED_USE=" || ( default headless dedicated ) java? ( ai ) " GUI_DEPEND=" media-libs/devil[jpeg,png,opengl,tiff,gif] >=media-libs/freetype-2.0.0 >=media-libs/glew-1.6:* media-libs/libsdl2[X,opengl] x11-libs/libXcursor media-libs/openal media-libs/libvorbis media-libs/libogg virtual/glu virtual/opengl " RDEPEND=" >=dev-libs/boost-1.35 >=sys-libs/zlib-1.2.5.1[minizip] media-libs/devil[jpeg,png] java? ( >=virtual/jdk-1.8:* ) default? ( ${GUI_DEPEND} ) " DEPEND="${RDEPEND} >=sys-devel/gcc-4.2 app-arch/p7zip >=dev-util/cmake-2.6.0 tcmalloc? ( dev-util/google-perftools ) sys-libs/libunwind " # Some patches from the 'develop' branch # to build with GCC 11 # See commits 931543c774 and d525928cd3 # LIBDIR is badly hardcoded in main CMakeLists.txt # Should be replaced by CMAKE_INSTALL_LIBDIR PATCHES=( "${FILESDIR}/spring-105.0-lua.patch" "${FILESDIR}/spring-105.0-weapon.patch" "${FILESDIR}/spring-9999-libdir.patch" ) src_test() { cmake_src_test } src_prepare() { if use java; then java-pkg-opt-2_src_prepare else cmake_src_prepare fi } src_configure() { local -a mycmakeargs # Custom cflags break online play if use custom-cflags ; then ewarn "\e[1;31m*********************************************************************\e[0m" ewarn "You enabled Custom-CFlags! ('custom-cflags' USE flag)" ewarn "It's \e[1;31mimpossible\e[0m that this build will work in online play." ewarn "Disable it before doing a bugreport." ewarn "\e[1;31m*********************************************************************\e[0m" else strip-flags fi # Custom march may break online play if use custom-march ; then ewarn "\e[1;31m*********************************************************************\e[0m" ewarn "You enabled Custom-march! ('custom-march' USE flag)" ewarn "It may break online play." ewarn "If so, disable it before doing a bugreport." ewarn "\e[1;31m*********************************************************************\e[0m" mycmakeargs+=("-DMARCH_FLAG=$(get-flag march)") fi # tcmalloc mycmakeargs+=(-DUSE_TCMALLOC=$(usex tcmalloc)) # dxt recompression mycmakeargs+=(-DUSE_LIBSQUISH=$(usex bindist no yes)) # threadpool mycmakeargs+=(-DUSE_THREADPOOL=$(usex threaded)) # LinkingTimeOptimizations mycmakeargs+=(-DLTO=$(usex lto)) if use lto; then ewarn "\e[1;31m*********************************************************************\e[0m" ewarn "You enabled LinkingTimeOptimizations! ('lto' USE flag)" ewarn "It's likely that the compilation fails and/or online play may break." ewarn "If so, disable it before doing a bugreport." ewarn "\e[1;31m*********************************************************************\e[0m" fi # AI if use ai ; then if use !java ; then # Don't build Java AI mycmakeargs+=("-DAI_TYPES=NATIVE") fi if use !test-ai ; then # Don't build example AIs mycmakeargs+=("-DAI_EXCLUDE_REGEX='Null|Test'") fi else if use !test-ai ; then mycmakeargs+=("-DAI_TYPES=NONE") else mycmakeargs+=("-DAI_TYPES=NATIVE") mycmakeargs+=("-DAI_EXCLUDE_REGEX='^[^N].*AI'") fi fi # Selectivly enable/disable build targets for build_type in default headless dedicated do mycmakeargs+=(-DBUILD_spring-${build_type}=$(usex $build_type)) done # Enable/Disable debug symbols if use profile ; then CMAKE_BUILD_TYPE="PROFILE" else if use debug ; then CMAKE_BUILD_TYPE="RELWITHDEBINFO" else CMAKE_BUILD_TYPE="RELEASE" fi fi # Configure cmake_src_configure } src_compile () { cmake_src_compile } src_install () { cmake_src_install } pkg_postinst() { xdg_mimeinfo_database_update xdg_desktop_database_update }