summaryrefslogtreecommitdiff
blob: 5792fa5ac7e7d843d8e0693a0c109c2fa4f99541 (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
133
134
135
136
137
138
139
# Copyright 1999-2018 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit autotools flag-o-matic gnome2-utils xdg-utils

DESCRIPTION="Super Nintendo Entertainment System (SNES) emulator"
HOMEPAGE="https://github.com/snes9xgit/snes9x"
SRC_URI="https://github.com/snes9xgit/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="Snes9x GPL-2 GPL-2+ LGPL-2.1 LGPL-2.1+ ISC MIT ZLIB Info-ZIP"
SLOT="0"
KEYWORDS="~amd64 ~ppc64 ~x86 ~x86-fbsd"
IUSE="alsa debug gtk joystick multilib netplay nls opengl oss png pulseaudio portaudio wayland xinerama +xv"
RESTRICT="bindist"

RDEPEND="
	sys-libs/zlib:=[minizip]
	x11-libs/libX11
	x11-libs/libXext
	png? ( media-libs/libpng:0= )
	gtk? (
		dev-libs/glib:2
		dev-libs/libxml2
		>=x11-libs/gtk+-3.22:3[wayland?]
		x11-libs/libXrandr
		x11-misc/xdg-utils
		alsa? ( media-libs/alsa-lib )
		joystick? ( media-libs/libsdl2[joystick] )
		opengl? (
			media-libs/libepoxy
			virtual/opengl
		)
		portaudio? ( >=media-libs/portaudio-19_pre )
		pulseaudio? ( media-sound/pulseaudio )
		xv? ( x11-libs/libXv )
		wayland? ( dev-libs/wayland )
	)
	xinerama? ( x11-libs/libXinerama )"
DEPEND="${RDEPEND}
	virtual/pkgconfig
	x11-base/xorg-proto
	nls? ( dev-util/intltool )"

S="${WORKDIR}/${P}/unix"

PATCHES=(
	"${FILESDIR}"/${PN}-1.53-cross-compile.patch
	"${FILESDIR}"/${PN}-1.56-build-system.patch
)

src_prepare() {
	cd "${WORKDIR}"/${P} || die
	rm -r unzip || die
	default
	cd unix || die
	eautoreconf
	if use gtk; then
		cd ../gtk || die
		eautoreconf
	fi
}

src_configure() {
	append-ldflags -Wl,-z,noexecstack

	# build breaks when zlib/zip support is disabled
	local myeconfargs=(
		--enable-gzip
		--enable-zip
		--with-system-zip
		$(use_enable joystick gamepad)
		$(use_enable debug debugger)
		$(use_enable netplay)
		$(use_enable png screenshot)
		$(use_enable xinerama)
	)
	econf "${myeconfargs[@]}"

	if use gtk; then
		cd ../gtk || die
		myeconfargs=(
			--with-gtk3
			--with-zlib
			--with-system-zip
			--without-gtk2
			$(use_enable nls)
			$(use_with opengl)
			$(use_with joystick)
			$(use_with xv)
			$(use_with netplay)
			$(use_with alsa)
			$(use_with oss)
			$(use_with pulseaudio)
			$(use_with portaudio)
			$(use_with png screenshot)
			$(use_with wayland)
		)
		econf "${myeconfargs[@]}"
	fi
}

src_compile() {
	emake
	use gtk && emake -C ../gtk
}

src_install() {
	dobin ${PN}

	dodoc ../docs/{snes9x.conf.default,{changes,control-inputs,controls,snapshots}.txt}

	if use gtk; then
		emake -C ../gtk DESTDIR="${D}" install
		dodoc ../gtk/{AUTHORS,doc/README}
	fi

	docinto html
	dodoc {.,..}/docs/*.html
}

pkg_preinst() {
	use gtk && gnome2_icon_savelist
}

pkg_postinst() {
	if use gtk ; then
		gnome2_icon_cache_update
		xdg_desktop_database_update
	fi
}

pkg_postrm() {
	if use gtk ; then
		gnome2_icon_cache_update
		xdg_desktop_database_update
	fi
}