# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 LUA_COMPAT=( lua5-4 ) inherit desktop lua-single qmake-utils xdg DESCRIPTION="Multiplayer strategy game (Civilization Clone)" HOMEPAGE="http://www.freeciv.org/" if [[ "${PV}" == "9999" ]]; then inherit git-r3 EGIT_REPO_URI="https://github.com/freeciv/freeciv" fi LICENSE="GPL-2+" SLOT="0" IUSE="aimodules auth dedicated +gtk ipv6 mapimg modpack mysql nls qt5 readline sdl +server +sound sqlite system-lua" REQUIRED_USE="system-lua? ( ${LUA_REQUIRED_USE} )" RDEPEND=" app-arch/bzip2 app-arch/xz-utils net-misc/curl sys-libs/zlib auth? ( !mysql? ( ( !sqlite? ( dev-db/mysql-connector-c:0= ) ) ) mysql? ( dev-db/mysql-connector-c:0= ) sqlite? ( dev-db/sqlite:3 ) ) dedicated? ( aimodules? ( dev-libs/libltdl:0 ) ) !dedicated? ( media-libs/libpng:0 gtk? ( x11-libs/gtk+:3 ) mapimg? ( media-gfx/imagemagick:= ) modpack? ( x11-libs/gtk+:3 ) nls? ( virtual/libintl ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtwidgets:5 ) !sdl? ( !gtk? ( x11-libs/gtk+:3 ) ) sdl? ( media-libs/libsdl2[video] media-libs/sdl2-gfx media-libs/sdl2-image[png] media-libs/sdl2-ttf ) server? ( aimodules? ( sys-devel/libtool:2 ) ) sound? ( media-libs/libsdl2[sound] media-libs/sdl2-mixer[vorbis] ) ) readline? ( sys-libs/readline:0= ) system-lua? ( ${LUA_DEPS} ) " DEPEND="${RDEPEND} !dedicated? ( x11-base/xorg-proto ) " # postgres isn't yet really supported by upstream BDEPEND=" virtual/pkgconfig !dedicated? ( nls? ( sys-devel/gettext ) ) " #S="${WORKDIR}/${MY_P}" pkg_setup() { if ! use dedicated && ! use server ; then ewarn "Disabling server USE flag will make it impossible to start local" ewarn "games, but you will still be able to join multiplayer games." fi use system-lua && lua-single_pkg_setup } src_prepare() { default if [[ "${PV}" == "9999" ]]; then sed -i \ -e 's/FC_RUN_CONFIGURE=yes/FC_RUN_CONFIGURE=no/' \ ./autogen.sh || die ./autogen.sh || die fi } src_configure() { local myclient=() mydatabase=() mymodpack=() myeconfargs=() if use auth ; then if ! use mysql && ! use sqlite ; then einfo "No database backend chosen, defaulting" einfo "to mysql!" mydatabase=( mysql ) else use mysql && mydatabase+=( mysql ) use sqlite && mydatabase+=( sqlite3 ) fi else mydatabase=( no ) fi if use dedicated ; then myclient=( no ) myeconfargs+=( --enable-server --enable-freeciv-manual ) else if use !sdl && use !gtk && ! use qt5 ; then einfo "No client backend given, defaulting to gtk3 client!" myclient=( gtk3.22 ) else use sdl && myclient+=( sdl2 ) use gtk && myclient+=( gtk3.22 ) if use qt5 ; then local -x MOCCMD=$(qt5_get_bindir)/moc myclient+=( qt ) fi fi myeconfargs+=( $(use_enable server) $(use_enable server freeciv-manual) ) fi if use !modpack ; then mymodpack=( no ) else if use !gtk && ! use qt5 ; then mymodpack=( gtk3 ) else use gtk && mymodpack+=( gtk3 ) use qt5 && mymodpack+=( qt ) fi fi myeconfargs+=( --enable-aimodules="$(usex aimodules "yes" "no")" --enable-client="${myclient[*]}" --enable-fcdb="${mydatabase[*]}" --enable-fcmp="${mymodpack[*]}" # disabling shared libs will break aimodules USE flag --enable-shared --localedir=/usr/share/locale --with-appdatadir="${EPREFIX}"/usr/share/metainfo $(use_enable ipv6) $(use_enable mapimg) $(use_enable nls) $(use_enable sound sdl-mixer) $(use_enable system-lua sys-lua) $(use_with readline) $(use_with qt5) ) econf "${myeconfargs[@]}" } src_install() { default if use dedicated ; then rm -rf "${ED}"/usr/share/pixmaps || die rm -f "${ED}"/usr/share/man/man6/freeciv-{client,gtk2,gtk3,modpack,qt,sdl,xaw}* || die else if use server ; then # Create and install the html manual. It can't be done for dedicated # servers, because the 'freeciv-manual' tool is then not built. Also # delete freeciv-manual from the GAMES_BINDIR, because it's useless. # Note: to have it localized, it should be ran from _postinst, or # something like that, but then it's a PITA to avoid orphan files... ./tools/freeciv-manual || die docinto html dodoc civ2civ3*.html fi if use sdl ; then make_desktop_entry freeciv-sdl "Freeciv (SDL)" freeciv-client else rm -f "${ED}"/usr/share/man/man6/freeciv-sdl* || die fi rm -f "${ED}"/usr/share/man/man6/freeciv-xaw* || die fi find "${ED}" -name "freeciv-manual*" -delete || die rm -f "${ED}/usr/$(get_libdir)"/*.a || die find "${ED}" -type f -name "*.la" -delete || die }