aboutsummaryrefslogtreecommitdiff
blob: b6b414221551706af355c0a0838ac56a20215a2b (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=5
inherit autotools eutils toolchain-funcs

# Map Gentoo IUSE expand vars to DirectFB drivers
# echo `sed -n '/Possible gfxdrivers are:/,/^$/{/Possible/d;s:\[ *::;s:\].*::;s:,::g;p}' configure.in`
I_TO_D_intel="i810,i830"
I_TO_D_mga="matrox"
I_TO_D_r128="ati128"
I_TO_D_via="cle266"
# cyber5k davinci ep9x omap pxa3xx sh772x savage pvr2d
IUSE_VIDEO_CARDS=" intel mga nvidia r128 radeon tdfx via vmware"
IUV=${IUSE_VIDEO_CARDS// / video_cards_}
# echo `sed -n '/Possible inputdrivers are:/,/^$/{/\(Possible\|^input\)/d;s:\[ *::;s:\].*::;s:,::g;p}' configure.in`
I_TO_D_elo2300="elo-input"
I_TO_D_evdev="linuxinput"
I_TO_D_mouse="ps2mouse,serialmouse"
# dbox2remote dreamboxremote gunze h3600_ts penmount sonypijogdial ucb1x00 wm97xx zytronic
IUSE_INPUT_DEVICES=" dynapro elo2300 evdev joystick keyboard lirc mouse tslib"
IUD=${IUSE_INPUT_DEVICES// / input_devices_}

DESCRIPTION="Thin library on top of the Linux framebuffer devices"
HOMEPAGE="http://www.directfb.net/"
SRC_URI="http://directfb.net/downloads/Core/${PN}-${PV:0:3}/${P}.tar.gz
	http://directfb.net/downloads/Old/${P}.tar.gz"

LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="amd64 arm ia64 -mips ppc sh -sparc x86"
IUSE="alsa bmp cddb debug divine drmkms +dynload doc egl fbcon fusiondale fusionsound gif gles2 gstreamer imlib2 input_hub jpeg jpeg2k mad cpu_flags_x86_mmx mng mpeg2 mpeg3 multicore opengl oss png pnm sawman sdl cpu_flags_x86_sse static-libs swfdec tiff timidity tremor truetype v4l vdpau vorbis webp X xine zlib ${IUV} ${IUD}"
REQUIRED_USE="gles2? ( opengl )"

# ffmpeg useflag broken
# ffmpeg? ( virtual/ffmpeg )
#	$(use_enable ffmpeg) \
RDEPEND="
	alsa? ( media-libs/alsa-lib )
	cddb? ( media-libs/libcddb )
	drmkms? ( x11-libs/libdrm[libkms] )
	gif? ( media-libs/giflib )
	gstreamer? ( media-libs/gstreamer:1.0 media-libs/gst-plugins-base:1.0 )
	imlib2? ( media-libs/imlib2 )
	jpeg? ( virtual/jpeg:0= )
	jpeg2k? ( media-libs/jasper:=[jpeg] )
	mad? ( media-libs/libmad )
	mng? ( media-libs/libmng )
	mpeg3? ( media-libs/libmpeg3 )
	opengl? ( media-libs/mesa[gbm,egl?,gles2?] x11-libs/libdrm )
	png? ( media-libs/libpng:0= )
	sdl? ( media-libs/libsdl )
	tiff? ( media-libs/tiff:0 )
	timidity? (
		media-libs/libtimidity
		media-sound/timidity++
	)
	tremor? ( media-libs/tremor )
	truetype? ( >=media-libs/freetype-2.0.1 )
	vdpau? ( x11-libs/libX11 x11-libs/libXext x11-libs/libvdpau )
	vorbis? ( media-libs/libvorbis )
	webp? ( media-libs/libwebp )
	X? ( x11-libs/libXext x11-libs/libX11 )
	xine? ( media-libs/xine-lib[vdpau?] )
	zlib? ( sys-libs/zlib )	"
DEPEND="${RDEPEND}"

src_prepare() {
	epatch \
		"${FILESDIR}"/${PN}-1.7.5-flags.patch \
		"${FILESDIR}"/${PN}-1.6.3-pkgconfig.patch \
		"${FILESDIR}"/${PN}-1.7.1-build.patch \
		"${FILESDIR}"/${PN}-1.6.3-setregion.patch \
		"${FILESDIR}"/${PN}-1.6.3-atomic-fix-compiler-error-when-building-for-thumb2.patch \
		"${FILESDIR}"/${PN}-1.7.6-cle266.patch \
		"${FILESDIR}"/${PN}-1.7.6-idivine.patch \
		"${FILESDIR}"/${PN}-1.7.6-tslib.patch \
		"${FILESDIR}"/${PN}-1.7.6-uint32_t.patch \
		"${FILESDIR}"/${PN}-1.7.6-union-sigval.patch \
		"${FILESDIR}"/${PN}-1.7.6-use-PTHREAD_MUTEX_RECURSIVE.patch
	sed -i \
		-e '/#define RASPBERRY_PI/d' \
		systems/egl/egl_system.c || die #497124
	sed -i \
		-e '/^CXXFLAGS=.*-Werror-implicit-function-declaration/d' \
		configure.in || die #526196

	mv configure.{in,ac} || die
	eautoreconf
}

driver_list() {
	local pfx=$1
	local dev devs map
	shift
	for dev in "$@" ; do
		use ${pfx}_${dev} || continue
		map="I_TO_D_${dev}"
		devs=${devs:+${devs},}${!map:-${dev}}
	done
	echo ${devs:-none}
}

src_configure() {
	local myaudio="wave"
	use alsa && myaudio+=",alsa"
	use oss && myaudio+=",oss"

	local sdlconf="--disable-sdl"
	if use sdl ; then
		# since SDL can link against DirectFB and trigger a
		# dependency loop, only link against SDL if it isn't
		# broken #61592
		echo 'int main(){}' > sdl-test.c
		$(tc-getCC) sdl-test.c -lSDL 2>/dev/null \
			&& sdlconf="--enable-sdl" \
			|| ewarn "Disabling SDL since libSDL.so is broken"
	fi

	# fix --with-gfxdrivers= logic, because opengl, vdpau and gles2 are no video_cards
	local gfxdrivers="$(driver_list video_cards ${IUSE_VIDEO_CARDS})"
	use opengl && gfxdrivers="${gfxdrivers},gl"
	use vdpau && gfxdrivers="${gfxdrivers},vdpau"
	use gles2 && gfxdrivers="${gfxdrivers},gles2"
	gfxdrivers="$(echo ${gfxdrivers} | sed 's/none,//')"

	# fix --with-inputdrivers= logic, don't know where to put "input_hub"
	local inputdrivers="$(driver_list input_devices ${IUSE_INPUT_DEVICES})"
	use input_hub && inputdrivers="${inputdrivers},input_hub"
	inputdrivers="$(echo ${inputdrivers} | sed 's/none,//')"

	# The xine-vdpau flag requires a custom patch to xine-lib which we don't carry:
	# http://git.directfb.org/?p=extras/DirectFB-extra.git;a=blob;f=interfaces/IDirectFBVideoProvider/xine-lib-1.2-vdpau-hooks.patch;hb=HEAD
	econf \
		$(use_enable static-libs static) \
		$(use_enable X x11) \
		$(use_enable divine) \
		$(use_enable sawman) \
		$(use_enable fusiondale) \
		$(use_enable fusionsound) \
		$(use_enable fbcon fbdev) \
		$(use_enable cpu_flags_x86_mmx mmx) \
		$(use_enable cpu_flags_x86_sse sse) \
		$(use_enable egl) \
		$(use_enable egl idirectfbgl-egl) \
		$(use_enable jpeg) \
		$(use_enable png) \
		$(use_enable mng) \
		$(use_enable gstreamer) \
		$(use_enable gif) \
		$(use_enable tiff) \
		$(use_enable imlib2) \
		$(use_enable pnm) \
		--disable-svg \
		$(use_enable mpeg2) \
		$(use_enable mpeg3 libmpeg3) \
		--disable-flash \
		$(use_enable xine) \
		--disable-xine-vdpau \
		--disable-ffmpeg \
		$(use_enable bmp) \
		$(use_enable jpeg2k jpeg2000) \
		--disable-openquicktime \
		--disable-avifile \
		$(use_enable truetype freetype) \
		$(use_enable webp) \
		$(use_enable debug) \
		$(use_enable zlib) \
		--disable-video4linux \
		$(use_enable v4l video4linux2) \
		$(use_enable vdpau x11vdpau) \
		$(use_enable multicore) \
		$(use_enable dynload) \
		$(use_enable opengl mesa) \
		$(use_enable drmkms) \
		--with-fs-drivers="${myaudio}" \
		$(use_with timidity) \
		--with-wave \
		$(use_with vorbis) \
		$(use_with tremor) \
		$(use_with mad) \
		$(use_with cddb cdda) \
		--with-playlist \
		${sdlconf} \
		--with-gfxdrivers="${gfxdrivers}" \
		--with-inputdrivers="${inputdrivers}" \
		--disable-vnc
}

src_install() {
	default
	dodoc fb.modes
	use doc && dohtml -r docs/html/*
}

pkg_postinst() {
	ewarn "Each DirectFB update breaks DirectFB related applications."
	ewarn "Please run \"revdep-rebuild\" which can be"
	ewarn "found by emerging the package 'gentoolkit'."
	ewarn
	ewarn "If you have an ALPS touchpad, then you might get your mouse"
	ewarn "unexpectedly set in absolute mode in all DirectFB applications."
	ewarn "This can be fixed by removing linuxinput from INPUT_DEVICES."
}