1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
6 inherit desktop toolchain-funcs xdg-utils
8 EGIT_COMMIT="0b0e9923c"
9 MY_BUILD="$(ver_cut 2)"
10 MY_DATE="$(ver_cut 1)"
12 MY_PV_OFFENSIVE_XXX="1.33"
18 DESCRIPTION="An open source engine port of the classic PC first person shooter Duke Nukem 3D"
19 HOMEPAGE="http://www.eduke32.com/"
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 )
31 LICENSE="BUILDLIC GPL-2 HRP"
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"
38 hrp? ( ^^ ( demo cdinstall )
40 offensive? ( ^^ ( demo cdinstall ) )
41 opl? ( ^^ ( demo cdinstall )
43 psx? ( ^^ ( demo cdinstall ) )
44 sc-55? ( ^^ ( demo cdinstall )
51 # instead it tries to build a test game, which does not compile
52 RESTRICT="bindist test"
54 S="${WORKDIR}/${PN}_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}"
57 media-libs/libsdl2[joystick,opengl?,sound,video]
58 media-libs/sdl2-mixer[flac?,fluidsynth?,midi,timidity?,vorbis?]
60 flac? ( media-libs/flac )
61 gtk? ( x11-libs/gtk+:2 )
66 png? ( media-libs/libpng:0= )
67 vpx? ( media-libs/libvpx:= )
72 xmp? ( media-libs/exempi:2= )
77 cdinstall? ( games-fps/duke3d-data )
78 demo? ( games-fps/duke3d-demodata )
79 timidity? ( media-sound/timidity++ )
84 x86? ( dev-lang/nasm )
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"
95 # Extract only the eduke32 archive
96 unpack ${PN}_src_${MY_DATE}-${MY_BUILD}-${EGIT_COMMIT}.tar.xz
98 # Unpack only the documentation
100 unzip -q "${DISTDIR}"/duke3d_hrp-${MY_PV_HRP}.zip hrp_readme.txt hrp_todo.txt || die
102 if use offensive; then
103 unzip -q "${DISTDIR}"/duke3d_xxx-${MY_PV_OFFENSIVE_XXX}.zip xxx_readme.txt || die
106 unzip -q "${DISTDIR}"/duke3d_musopl-${MY_PV_OPL}.zip readme.txt || die
107 mv readme.txt opl_readme.txt || die
110 unzip -q "${DISTDIR}"/duke3d_music-sc55-${MY_PV_SC55}.zip readme/music_readme.txt || die
113 unzip -q "${DISTDIR}"/duke3d_voxels-${MY_PV_VOXELS}.zip voxelpack_readme.txt || die
119 ALLOCACHE_AS_MALLOC=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)
139 NETCODE=$(usex server 1 0)
144 POLYMER=$(usex opengl 1 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)
158 WITHOUT_GTK=$(usex gtk 0 1)
161 emake "${myemakeopts[@]}"
164 emake utils "${myemakeopts[@]}"
169 dobin eduke32 mapster32 "${FILESDIR}"/eduke32-bin
195 keepdir /usr/share/games/eduke32
196 insinto /usr/share/games/eduke32
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
206 newicon "${DISTDIR}"/eduke32_classic.png eduke32.png
208 make_desktop_entry eduke32-bin EDuke32 eduke32 Game
209 make_desktop_entry mapster32 Mapster32 eduke32 Game
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 )
222 xdg_icon_cache_update
226 xdg_icon_cache_update