dev-python/pip: arm64 stable (bug #719946)
[gentoo.git] / games-fps / eduke32 / eduke32-20200505.8904.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=7
5
6 inherit desktop toolchain-funcs xdg-utils
7
8 EGIT_COMMIT="0b0e9923c"
9 MY_BUILD="$(ver_cut 2)"
10 MY_DATE="$(ver_cut 1)"
11 MY_PV_HRP="5.4"
12 MY_PV_OFFENSIVE_XXX="1.33"
13 MY_PV_OPL="2.01"
14 MY_PV_PSX="1.11"
15 MY_PV_SC55="4.02"
16 MY_PV_VOXELS="1.21"
17
18 DESCRIPTION="An open source engine port of the classic PC first person shooter Duke Nukem 3D"
19 HOMEPAGE="http://www.eduke32.com/"
20 SRC_URI="
21         https://dukeworld.com/eduke32/synthesis/latest/${PN}_src_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}.tar.xz
22         https://www.eduke32.com/images/eduke32_classic.png
23         hrp? ( http://www.duke4.org/files/nightfright/hrp/duke3d_hrp.zip -> duke3d_hrp-${MY_PV_HRP}.zip )
24         offensive? ( http://www.duke4.org/files/nightfright/related/duke3d_xxx.zip -> duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip )
25         opl? ( https://www.moddb.com/downloads/mirror/95750/102/ce9e8f422c6cccdb297852426e96740a -> duke3d_musopl-${MY_PV_OPL}.zip )
26         psx? ( http://www.duke4.org/files/nightfright/related/duke3d_psx.zip -> duke3d_psx-${MY_PV_PSX}.zip )
27         sc-55? ( http://www.duke4.org/files/nightfright/music/duke3d_music-sc55.zip -> duke3d_music-sc55-${MY_PV_SC55}.zip )
28         voxels? ( https://www.dropbox.com/s/yaxfahyvskyvt4r/duke3d_voxels.zip -> duke3d_voxels-${MY_PV_VOXELS}.zip )
29 "
30
31 LICENSE="BUILDLIC GPL-2 HRP"
32 SLOT="0"
33 KEYWORDS="~amd64 ~x86"
34 IUSE="cdinstall demo flac fluidsynth gtk hrp offensive opengl opl png psx sc-55 server sdk timidity tools vorbis voxels vpx xmp"
35 REQUIRED_USE="
36         cdinstall? ( !demo )
37         demo? ( !cdinstall )
38         hrp? ( ^^ ( demo cdinstall )
39                 !voxels )
40         offensive? ( ^^ ( demo cdinstall ) )
41         opl? ( ^^ ( demo cdinstall )
42                 !sc-55 )
43         psx? ( ^^ ( demo cdinstall ) )
44         sc-55? ( ^^ ( demo cdinstall )
45                 !opl )
46         voxels? ( !hrp )
47         vpx? ( opengl )
48 "
49
50 # There are no tests,
51 # instead it tries to build a test game, which does not compile
52 RESTRICT="bindist test"
53
54 S="${WORKDIR}/${PN}_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}"
55
56 RDEPEND="
57         media-libs/libsdl2[joystick,opengl?,sound,video]
58         media-libs/sdl2-mixer[flac?,fluidsynth?,midi,timidity?,vorbis?]
59         sys-libs/zlib
60         flac? ( media-libs/flac )
61         gtk? ( x11-libs/gtk+:2 )
62         opengl? (
63                 virtual/glu
64                 virtual/opengl
65         )
66         png? ( media-libs/libpng:0= )
67         vpx? ( media-libs/libvpx:= )
68         vorbis? (
69                 media-libs/libogg
70                 media-libs/libvorbis
71         )
72         xmp? ( media-libs/exempi:2= )
73 "
74
75 DEPEND="
76         ${RDEPEND}
77         cdinstall? ( games-fps/duke3d-data )
78         demo? ( games-fps/duke3d-demodata )
79         timidity? ( media-sound/timidity++ )
80 "
81
82 BDEPEND="
83         app-arch/unzip
84         x86? ( dev-lang/nasm )
85 "
86
87 PATCHES=(
88         "${FILESDIR}/${PN}-20190419.7615-wad2map-buildfix.patch"
89         "${FILESDIR}/${PN}-20190820.8043-log-to-tmpdir.patch"
90         "${FILESDIR}/${PN}-20190820.8043-search-duke3d-path.patch"
91         "${FILESDIR}/${PN}-20200505.8904-gcc10.patch"
92 )
93
94 src_unpack() {
95         # Extract only the eduke32 archive
96         unpack ${PN}_src_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}.tar.xz
97
98         # Unpack only the documentation
99         if use hrp; then
100                 unzip -q "${DISTDIR}"/duke3d_hrp-${MY_PV_HRP}.zip hrp_readme.txt hrp_todo.txt || die
101         fi
102         if use offensive; then
103                 unzip -q "${DISTDIR}"/duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip xxx_readme.txt || die
104         fi
105         if use opl; then
106                 unzip -q "${DISTDIR}"/duke3d_musopl-${MY_PV_OPL}.zip readme.txt || die
107                 mv readme.txt opl_readme.txt || die
108         fi
109         if use sc-55; then
110                 unzip -q "${DISTDIR}"/duke3d_music-sc55-${MY_PV_SC55}.zip readme/music_readme.txt || die
111         fi
112         if use voxels; then
113                 unzip -q "${DISTDIR}"/duke3d_voxels-${MY_PV_VOXELS}.zip voxelpack_readme.txt || die
114         fi
115 }
116
117 src_compile() {
118         local myemakeopts=(
119                 ALLOCACHE_AS_MALLOC=0
120                 AS=$(tc-getAS)
121                 CC=$(tc-getCC)
122                 CXX=$(tc-getCXX)
123                 CLANG=0
124                 CPLUSPLUS=1
125                 CUSTOMOPT=""
126                 DEBUGANYWAY=0
127                 F_JUMP_TABLES=""
128                 FORCEDEBUG=0
129                 HAVE_FLAC=$(usex flac 1 0)
130                 HAVE_GTK2=$(usex gtk 1 0)
131                 HAVE_VORBIS=$(usex vorbis 1 0)
132                 HAVE_XMP=$(usex xmp 1 0)
133                 LINKED_GTK=$(usex gtk 1 0)
134                 LTO=1
135                 LUNATIC=0
136                 KRANDDEBUG=0
137                 MEMMAP=0
138                 MIXERTYPE=SDL
139                 NETCODE=$(usex server 1 0)
140                 NOASM=0
141                 OPTLEVEL=0
142                 OPTOPT=""
143                 PACKAGE_REPOSITORY=1
144                 POLYMER=$(usex opengl 1 0)
145                 PRETTY_OUTPUT=0
146                 PROFILER=0
147                 RELEASE=1
148                 RENDERTYPE=SDL
149                 SDL_TARGET=2
150                 SIMPLE_MENU=0
151                 STRIP=""
152                 TANDALONE=0
153                 STARTUP_WINDOW=$(usex gtk 1 0)
154                 USE_OPENGL=$(usex opengl 1 0)
155                 USE_LIBVPX=$(usex vpx 1 0)
156                 USE_LIBPNG=$(usex png 1 0)
157                 USE_LUAJIT_2_1=0
158                 WITHOUT_GTK=$(usex gtk 0 1)
159         )
160
161         emake "${myemakeopts[@]}"
162
163         if use tools; then
164                 emake utils "${myemakeopts[@]}"
165         fi
166 }
167
168 src_install() {
169         dobin eduke32 mapster32 "${FILESDIR}"/eduke32-bin
170
171         if use tools; then
172                 local tools=(
173                         arttool
174                         bsuite
175                         cacheinfo
176                         generateicon
177                         givedepth
178                         ivfrate
179                         kextract
180                         kgroup
181                         kmd2tool
182                         makesdlkeytrans
183                         map2stl
184                         md2tool
185                         mkpalette
186                         transpal
187                         unpackssi
188                         wad2art
189                         wad2map
190                 )
191
192                 dobin "${tools[@]}"
193         fi
194
195         keepdir /usr/share/games/eduke32
196         insinto /usr/share/games/eduke32
197
198         use hrp && doins "${DISTDIR}"/duke3d_hrp-${MY_PV_HRP}.zip
199         use offensive && doins "${DISTDIR}"/duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip
200         use opl && doins "${DISTDIR}"/duke3d_musopl-${MY_PV_OPL}.zip
201         use psx && doins "${DISTDIR}"/duke3d_psx-${MY_PV_PSX}.zip
202         use sc-55 && doins "${DISTDIR}"/duke3d_music-sc55-${MY_PV_SC55}.zip
203         use sdk && doins -r package/sdk
204         use voxels && doins "${DISTDIR}"/duke3d_voxels-${MY_PV_VOXELS}.zip
205
206         newicon "${DISTDIR}"/eduke32_classic.png eduke32.png
207
208         make_desktop_entry eduke32-bin EDuke32 eduke32 Game
209         make_desktop_entry mapster32 Mapster32 eduke32 Game
210
211         local DOCS=( package/sdk/samples/*.txt source/build/doc/*.txt source/duke3d/src/lunatic/doc/*.txt )
212         use hrp && DOCS+=( "${WORKDIR}"/hrp_readme.txt "${WORKDIR}"/hrp_todo.txt )
213         use offensive && DOCS+=( "${WORKDIR}"/xxx_readme.txt )
214         use opl && DOCS+=( "${WORKDIR}"/opl_readme.txt )
215         use sc-55 && DOCS+=( "${WORKDIR}"/readme/music_readme.txt )
216         use voxels && DOCS+=( "${WORKDIR}"/voxelpack_readme.txt )
217
218         einstalldocs
219 }
220
221 pkg_postinst() {
222         xdg_icon_cache_update
223 }
224
225 pkg_postrm() {
226         xdg_icon_cache_update
227 }