summaryrefslogtreecommitdiff
blob: 92f2ac4813da466bb94f7ddaa28df8fa0b75b8e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake desktop xdg

DESCRIPTION="Game Boy Advance emulator written in C"
HOMEPAGE="https://mgba.io"
if [[ "${PV}" == 9999 ]] ; then
	inherit git-r3
	EGIT_REPO_URI="https://github.com/mgba-emu/mgba.git"
else
	MY_PV="${PV/_beta/-b}"
	SRC_URI="https://github.com/${PN}-emu/${PN}/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
	[[ "${PV}" == *_beta* ]] || \
	KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
	S="${WORKDIR}/${PN}-${MY_PV}"
fi
LICENSE="MPL-2.0"
SLOT="0"
IUSE="debug discord elf ffmpeg gles2 gles3 opengl qt5 +sdl sqlite"
REQUIRED_USE="|| ( qt5 sdl )
		qt5? ( opengl )"

RDEPEND="
	media-libs/libpng:0=
	sys-libs/zlib[minizip]
	debug? ( dev-libs/libedit )
	elf? ( dev-libs/elfutils )
	ffmpeg? ( media-video/ffmpeg:= )
	opengl? ( media-libs/libglvnd )
	qt5? (
		dev-qt/qtcore:5
		dev-qt/qtgui:5
		dev-qt/qtmultimedia:5
		dev-qt/qtwidgets:5
		opengl? ( dev-qt/qtopengl:5 )
	)
	sdl? ( media-libs/libsdl2[X,sound,joystick,video,opengl?] )
	sqlite? ( dev-db/sqlite:3 )
"
DEPEND="${RDEPEND}
	gles2? ( media-libs/libglvnd )
	gles3? ( media-libs/libglvnd )
"

PATCHES=(
	"${FILESDIR}/${P}-ffmpeg5.patch" #834374
)

src_prepare() {
	xdg_environment_reset
	cmake_src_prepare

	# Get rid of any bundled stuff we don't want
	local pkg
	for pkg in libpng lzma sqlite3 zlib ; do
		rm -r src/third-party/${pkg} || die
	done
}

src_configure() {
	local mycmakeargs=(
		-DCMAKE_SKIP_RPATH=ON
		-DBUILD_GL="$(usex opengl)"
		-DBUILD_GLES2="$(usex gles2)"
		-DBUILD_GLES3="$(usex gles3)"
		-DBUILD_PYTHON=OFF
		-DBUILD_QT="$(usex qt5)"
		-DBUILD_SDL="$(usex sdl)"
		-DBUILD_SHARED=ON
		# test suite fails to build (>=0.6.0)
		-DBUILD_SUITE=OFF
		-DBUILD_TEST=OFF
		-DM_CORE_GB=ON
		-DM_CORE_GBA=ON
		-DUSE_DEBUGGERS="$(usex debug)"
		-DUSE_DISCORD_RPC="$(usex discord)"
		-DUSE_EDITLINE="$(usex debug)"
		-DUSE_ELF="$(usex elf)"
		-DUSE_EPOXY=OFF
		-DUSE_FFMPEG="$(usex ffmpeg)"
		-DUSE_GDB_STUB="$(usex debug)"
		-DUSE_LIBZIP=OFF
		-DUSE_LZMA=OFF
		-DUSE_MINIZIP=ON
		-DUSE_PNG=ON
		-DUSE_SQLITE3="$(usex sqlite)"
		-DUSE_ZLIB=ON
	)
	cmake_src_configure
}

src_compile() {
	cmake_src_compile
}

src_install() {
	if use qt5 ; then
		dobin ${BUILD_DIR}/qt/${PN}-qt
		doman doc/${PN}-qt.6
		domenu res/${PN}-qt.desktop
		for size in 16 24 32 48 64 96 128 256 ; do
			newicon -s ${size} res/${PN}-${size}.png ${PN}.png
		done
	fi
	if use sdl ; then
		doman doc/${PN}.6
		newbin ${BUILD_DIR}/sdl/${PN} ${PN}-sdl
	fi

	dolib.so ${BUILD_DIR}/lib${PN}.so*
}

pkg_preinst() {
	if use qt5 ; then
		xdg_pkg_preinst
	fi
}

pkg_postinst() {
	if use qt5 ; then
		xdg_pkg_postinst
	fi
}

pkg_postrm() {
	if use qt5 ; then
		xdg_pkg_postrm
	fi
}