764443f246c5fab56e4d155f60d1b166a4a64fac
[gentoo.git] / games-strategy / freeciv / freeciv-2.6.0-r1.ebuild
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 MY_PV="${PV/_beta/-beta}"
7 MY_PV="${MY_PV/_rc/-RC}"
8 MY_P="${PN}-${MY_PV}"
9 inherit desktop flag-o-matic xdg
10
11 DESCRIPTION="multiplayer strategy game (Civilization Clone)"
12 HOMEPAGE="http://www.freeciv.org/"
13
14 if [[ ${PV} != *_beta* ]] && [[ ${PV} != *_rc* ]] ; then
15         SRC_URI="mirror://sourceforge/freeciv/${MY_P}.tar.bz2"
16         KEYWORDS="~amd64 ~x86"
17 fi
18
19 LICENSE="GPL-2+"
20 SLOT="0"
21 IUSE="aimodules auth dedicated +gtk ipv6 mapimg modpack mysql nls qt5 readline sdl +server +sound sqlite system-lua"
22
23 # postgres isn't yet really supported by upstream
24 BDEPEND="
25         virtual/pkgconfig
26         !dedicated? (
27                 x11-base/xorg-proto
28                 nls? ( sys-devel/gettext )
29         )
30 "
31 DEPEND="
32         app-arch/bzip2
33         app-arch/xz-utils
34         net-misc/curl
35         sys-libs/zlib
36         auth? (
37                 !mysql? ( ( !sqlite? ( dev-db/mysql-connector-c:0= ) ) )
38                 mysql? ( dev-db/mysql-connector-c:0= )
39                 sqlite? ( dev-db/sqlite:3 )
40         )
41         dedicated? ( aimodules? ( dev-libs/libltdl:0 ) )
42         !dedicated? (
43                 media-libs/libpng:0
44                 gtk? ( x11-libs/gtk+:2 )
45                 mapimg? ( media-gfx/imagemagick:= )
46                 modpack? ( x11-libs/gtk+:2 )
47                 nls? ( virtual/libintl )
48                 qt5? (
49                         dev-qt/qtcore:5
50                         dev-qt/qtgui:5
51                         dev-qt/qtwidgets:5
52                 )
53                 !sdl? ( !gtk? ( x11-libs/gtk+:2 ) )
54                 sdl? (
55                         media-libs/libsdl2[video]
56                         media-libs/sdl2-gfx
57                         media-libs/sdl2-image[png]
58                         media-libs/sdl2-ttf
59                 )
60                 server? ( aimodules? ( sys-devel/libtool:2 ) )
61                 sound? (
62                         media-libs/libsdl2[sound]
63                         media-libs/sdl2-mixer[vorbis]
64                 )
65         )
66         readline? ( sys-libs/readline:0= )
67         system-lua? ( >=dev-lang/lua-5.3:= )
68 "
69 RDEPEND="${DEPEND}"
70
71 S="${WORKDIR}/${MY_P}"
72
73 pkg_setup() {
74         if use !dedicated && use !server ; then
75                 ewarn "Disabling server USE flag will make it impossible"
76                 ewarn "to start local games, but you will still be able to"
77                 ewarn "join multiplayer games."
78         fi
79 }
80
81 src_prepare() {
82         default
83
84         # install the .desktop in /usr/share/applications
85         # install the icons in /usr/share/pixmaps
86         sed -i \
87                 -e 's:^.*\(desktopfiledir = \).*:\1/usr/share/applications:' \
88                 -e 's:^\(icon[0-9]*dir = \)$(prefix)\(.*\):\1/usr\2:' \
89                 -e 's:^\(icon[0-9]*dir = \)$(datadir)\(.*\):\1/usr/share\2:' \
90                 client/Makefile.in \
91                 server/Makefile.in \
92                 tools/Makefile.in \
93                 data/icons/Makefile.in || die
94         sed -i -e 's/=SDL/=X-SDL/' bootstrap/freeciv-sdl.desktop.in || die
95 }
96
97 src_configure() {
98         local myclient=() mydatabase=() myeconfargs=()
99
100         if use auth ; then
101                 if ! use mysql && ! use sqlite ; then
102                         einfo "No database backend chosen, defaulting"
103                         einfo "to mysql!"
104                         mydatabase=( mysql )
105                 else
106                         use mysql && mydatabase+=( mysql )
107                         use sqlite && mydatabase+=( sqlite3 )
108                 fi
109         else
110                 mydatabase=( no )
111         fi
112
113         if use dedicated ; then
114                 myclient=( no )
115                 myeconfargs+=(
116                         --enable-server
117                         --enable-freeciv-manual=html
118                 )
119         else
120                 if use !sdl && use !gtk && ! use qt5 ; then
121                         einfo "No client backend given, defaulting to"
122                         einfo "gtk2 client!"
123                         myclient=( gtk2 )
124                 else
125                         use sdl && myclient+=( sdl2 )
126                         use gtk && myclient+=( gtk2 )
127                         if use qt5 ; then
128                                 myclient+=( qt )
129                                 append-cxxflags -std=c++11
130                         fi
131                 fi
132                 myeconfargs+=(
133                         $(use_enable server)
134                         $(use_enable server freeciv-manual html )
135                 )
136         fi
137
138         myeconfargs+=(
139                 --enable-aimodules="$(usex aimodules "yes" "no")"
140                 --enable-client="${myclient[*]}"
141                 --enable-fcdb="${mydatabase[*]}"
142                 --enable-fcmp="$(usex modpack "gtk2" "no")"
143                 # disabling shared libs will break aimodules USE flag
144                 --enable-shared
145                 --localedir=/usr/share/locale
146                 $(use_enable ipv6)
147                 $(use_enable mapimg)
148                 $(use_enable nls)
149                 $(use_enable sound sdl-mixer)
150                 $(use_enable system-lua sys-lua)
151                 $(use_with readline)
152         )
153         econf "${myeconfargs[@]}"
154 }
155
156 src_install() {
157         default
158
159         if use dedicated ; then
160                 rm -rf "${ED}"/usr/share/pixmaps
161                 rm -f "${ED}"/usr/share/man/man6/freeciv-{client,gtk2,gtk3,modpack,qt,sdl,xaw}*
162         else
163                 if use server ; then
164                         # Create and install the html manual. It can't be done for dedicated
165                         # servers, because the 'freeciv-manual' tool is then not built. Also
166                         # delete freeciv-manual from the GAMES_BINDIR, because it's useless.
167                         # Note: to have it localized, it should be ran from _postinst, or
168                         # something like that, but then it's a PITA to avoid orphan files...
169                         ./tools/freeciv-manual || die
170                         docinto html
171                         dodoc classic*.html
172                 fi
173                 if use sdl ; then
174                         make_desktop_entry freeciv-sdl "Freeciv (SDL)" freeciv-client
175                 else
176                         rm -f "${ED}"/usr/share/man/man6/freeciv-sdl*
177                 fi
178                 rm -f "${ED}"/usr/share/man/man6/freeciv-xaw*
179         fi
180         find "${ED}" -name "freeciv-manual*" -delete
181
182         rm -f "${ED}/usr/$(get_libdir)"/*.a
183         find "${ED}" -name "*.la" -delete || die
184 }