/[gentoo-x86]/media-video/libav/libav-10.9999.ebuild
Gentoo

Contents of /media-video/libav/libav-10.9999.ebuild

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (show annotations) (download)
Mon Jun 16 22:03:07 2014 UTC (6 years, 1 month ago) by mgorny
Branch: MAIN
Changes since 1.4: +5 -1 lines
Wrap libavutil/avconfig.h since in some cases it differs per-ABI, bug #513184.

(Portage version: 2.2.10/cvs/Linux x86_64, signed Manifest commit with key EFB4464E!)

1 # Copyright 1999-2014 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/media-video/libav/libav-10.9999.ebuild,v 1.4 2014/06/07 21:32:06 mgorny Exp $
4
5 EAPI=5
6
7 if [[ ${PV} == *9999 ]] ; then
8 SCM="git-2"
9 EGIT_REPO_URI="git://git.libav.org/libav.git"
10 [[ ${PV%9999} != "" ]] && EGIT_BRANCH="release/${PV%.9999}"
11 fi
12
13 inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
14
15 DESCRIPTION="Complete solution to record, convert and stream audio and video."
16 HOMEPAGE="http://libav.org/"
17 if [[ ${PV} == *9999 ]] ; then
18 SRC_URI=""
19 elif [[ ${PV%_p*} != ${PV} ]] ; then # Gentoo snapshot
20 SRC_URI="http://dev.gentoo.org/~lu_zero/libav/${P}.tar.xz"
21 else # Official release
22 SRC_URI="http://${PN}.org/releases/${P}.tar.xz"
23 fi
24
25 SRC_URI+=" test? ( http://dev.gentoo.org/~lu_zero/libav/fate-10.tar.xz )"
26
27 LICENSE="LGPL-2.1 gpl? ( GPL-3 )"
28 SLOT="0/10"
29 [[ ${PV} == *9999 ]] || KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64
30 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
31 ~x64-solaris ~x86-solaris"
32 IUSE="aac alsa amr bindist +bzip2 cdio cpudetection custom-cflags debug doc
33 +encode faac fdk frei0r +gpl gsm +hardcoded-tables ieee1394 jack jpeg2k mp3
34 +network openssl opus oss pic pulseaudio rtmp schroedinger sdl speex ssl
35 static-libs test theora threads tools truetype v4l vaapi vdpau vorbis vpx X
36 wavpack webp x264 xvid +zlib"
37
38 # String for CPU features in the useflag[:configure_option] form
39 # if :configure_option isn't set, it will use 'useflag' as configure option
40 CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext altivec avx mmx mmxext neon ssse3 vis avx2"
41 for i in ${CPU_FEATURES} ; do
42 IUSE+=" ${i%:*}"
43 done
44
45 RDEPEND="
46 !media-video/ffmpeg:0
47 alsa? ( media-libs/alsa-lib[${MULTILIB_USEDEP}] )
48 amr? ( media-libs/opencore-amr[${MULTILIB_USEDEP}] )
49 bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
50 cdio? (
51 || (
52 dev-libs/libcdio-paranoia[${MULTILIB_USEDEP}]
53 <dev-libs/libcdio-0.90[-minimal,${MULTILIB_USEDEP}]
54 )
55 )
56 encode? (
57 aac? ( media-libs/vo-aacenc[${MULTILIB_USEDEP}] )
58 amr? ( media-libs/vo-amrwbenc[${MULTILIB_USEDEP}] )
59 faac? ( media-libs/faac[${MULTILIB_USEDEP}] )
60 fdk? ( media-libs/fdk-aac[${MULTILIB_USEDEP}] )
61 mp3? ( >=media-sound/lame-3.98.3[${MULTILIB_USEDEP}] )
62 theora? (
63 >=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
64 media-libs/libogg[${MULTILIB_USEDEP}]
65 )
66 vorbis? (
67 media-libs/libvorbis[${MULTILIB_USEDEP}]
68 media-libs/libogg[${MULTILIB_USEDEP}]
69 )
70 webp? ( media-libs/libwebp[${MULTILIB_USEDEP}] )
71 wavpack? ( media-sound/wavpack[${MULTILIB_USEDEP}] )
72 x264? ( >=media-libs/x264-0.0.20111017:=[${MULTILIB_USEDEP}] )
73 xvid? ( >=media-libs/xvid-1.1.0[${MULTILIB_USEDEP}] )
74 )
75 frei0r? ( media-plugins/frei0r-plugins )
76 gsm? ( >=media-sound/gsm-1.0.12-r1[${MULTILIB_USEDEP}] )
77 ieee1394? (
78 media-libs/libdc1394[${MULTILIB_USEDEP}]
79 sys-libs/libraw1394[${MULTILIB_USEDEP}]
80 )
81 jack? ( media-sound/jack-audio-connection-kit[${MULTILIB_USEDEP}] )
82 jpeg2k? ( >=media-libs/openjpeg-1.3-r2:0[${MULTILIB_USEDEP}] )
83 opus? ( media-libs/opus[${MULTILIB_USEDEP}] )
84 pulseaudio? ( media-sound/pulseaudio[${MULTILIB_USEDEP}] )
85 rtmp? ( >=media-video/rtmpdump-2.2f[${MULTILIB_USEDEP}] )
86 ssl? (
87 openssl? ( dev-libs/openssl[${MULTILIB_USEDEP}] )
88 !openssl? ( net-libs/gnutls[${MULTILIB_USEDEP}] )
89 )
90 sdl? ( >=media-libs/libsdl-1.2.13-r1[sound,video,${MULTILIB_USEDEP}] )
91 schroedinger? ( media-libs/schroedinger[${MULTILIB_USEDEP}] )
92 speex? ( >=media-libs/speex-1.2_beta3[${MULTILIB_USEDEP}] )
93 truetype? ( media-libs/freetype:2[${MULTILIB_USEDEP}] )
94 vaapi? ( x11-libs/libva[${MULTILIB_USEDEP}] )
95 vdpau? ( x11-libs/libvdpau[${MULTILIB_USEDEP}] )
96 vpx? ( >=media-libs/libvpx-0.9.6[${MULTILIB_USEDEP}] )
97 X? (
98 x11-libs/libX11[${MULTILIB_USEDEP}]
99 x11-libs/libXext[${MULTILIB_USEDEP}]
100 x11-libs/libXfixes[${MULTILIB_USEDEP}]
101 )
102 zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
103 "
104
105 DEPEND="${RDEPEND}
106 >=sys-devel/make-3.81
107 doc? ( app-text/texi2html )
108 ieee1394? ( virtual/pkgconfig[${MULTILIB_USEDEP}] )
109 mmx? ( dev-lang/yasm )
110 rtmp? ( virtual/pkgconfig[${MULTILIB_USEDEP}] )
111 schroedinger? ( virtual/pkgconfig[${MULTILIB_USEDEP}] )
112 ssl? ( virtual/pkgconfig[${MULTILIB_USEDEP}] )
113 test? ( sys-devel/bc )
114 truetype? ( virtual/pkgconfig[${MULTILIB_USEDEP}] )
115 v4l? ( sys-kernel/linux-headers )
116 "
117
118 RDEPEND="${RDEPEND}
119 abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
120 !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
121
122 # faac can't be binary distributed
123 # openssl support marked as nonfree
124 # faac and aac are concurent implementations
125 # amr and aac require at least lgpl3
126 # x264 requires gpl2
127 REQUIRED_USE="bindist? ( !faac !openssl !fdk )
128 rtmp? ( network )
129 amr? ( gpl ) aac? ( gpl ) x264? ( gpl ) X? ( gpl ) cdio? ( gpl )
130 test? ( encode zlib )
131 "
132
133 # Test on live ebuild are not possible as they require trunk fate
134 RESTRICT="test"
135
136 MULTILIB_WRAPPED_HEADERS=(
137 /usr/include/libavutil/avconfig.h
138 )
139
140 src_prepare() {
141 # if we have snapshot then we need to hardcode the version
142 if [[ ${PV%_p*} != ${PV} ]]; then
143 sed -i -e "s/UNKNOWN/DATE-${PV#*_pre}/" "${S}/version.sh" || die
144 fi
145
146 TOOLS=( aviocat graph2dot ismindex pktdumper qt-faststart trasher )
147 use zlib && TOOLS+=( cws2fws )
148
149 MAKEOPTS+=" V=1"
150 }
151
152 multilib_src_configure() {
153 local myconf=( ${EXTRA_LIBAV_CONF} )
154 local uses i
155
156 myconf+=(
157 $(use_enable gpl)
158 $(use_enable gpl version3)
159 --enable-avfilter
160 )
161
162 # enabled by default
163 uses="debug doc network zlib"
164 for i in ${uses}; do
165 use ${i} || myconf+=( --disable-${i} )
166 done
167 use bzip2 || myconf+=( --disable-bzlib )
168 use sdl || myconf+=( --disable-avplay )
169
170 if use ssl; then
171 use openssl && myconf+=( --enable-openssl --enable-nonfree ) \
172 || myconf+=( --enable-gnutls )
173 fi
174
175 use custom-cflags && myconf+=( --disable-optimizations )
176 use cpudetection && myconf+=( --enable-runtime-cpudetect )
177
178 use vdpau || myconf+=( --disable-vdpau )
179
180 use vaapi && myconf+=( --enable-vaapi )
181
182 # Encoders
183 if use encode; then
184 use faac && myconf+=( --enable-nonfree )
185 use fdk && myconf+=( --enable-nonfree --enable-libfdk-aac )
186 use mp3 && myconf+=( --enable-libmp3lame )
187 use amr && myconf+=( --enable-libvo-amrwbenc )
188 use aac && myconf+=( --enable-libvo-aacenc )
189 uses="faac theora vorbis wavpack webp x264 xvid"
190 for i in ${uses}; do
191 use ${i} && myconf+=( --enable-lib${i} )
192 done
193 else
194 myconf+=( --disable-encoders )
195 fi
196
197 # libavdevice options
198 use cdio && myconf+=( --enable-libcdio )
199 use ieee1394 && myconf+=( --enable-libdc1394 )
200 use pulseaudio && myconf+=( --enable-libpulse )
201
202 # Indevs
203 # v4l1 is gone since linux-headers-2.6.38
204 myconf+=( --disable-indev=v4l )
205 use v4l || myconf+=( --disable-indev=v4l2 )
206 for i in alsa oss jack; do
207 use ${i} || myconf+=( --disable-indev=${i} )
208 done
209 use X && myconf+=( --enable-x11grab )
210 # Outdevs
211 for i in alsa oss ; do
212 use ${i} || myconf+=( --disable-outdev=${i} )
213 done
214 # libavfilter options
215 multilib_is_native_abi && use frei0r && myconf+=( --enable-frei0r )
216 use truetype && myconf+=( --enable-libfreetype )
217
218 # Threads; we only support pthread for now
219 use threads && myconf+=( --enable-pthreads )
220
221 # Decoders
222 use amr && myconf+=( --enable-libopencore-amrwb --enable-libopencore-amrnb )
223 uses="gsm opus rtmp schroedinger speex vpx"
224 for i in ${uses}; do
225 use ${i} && myconf+=( --enable-lib${i} )
226 done
227 use jpeg2k && myconf+=( --enable-libopenjpeg )
228
229 # CPU features
230 for i in ${CPU_FEATURES}; do
231 use ${i%:*} || myconf+=( --disable-${i#*:} )
232 done
233
234 # pass the right -mfpu as extra
235 use neon && myconf+=( --extra-cflags=-mfpu=neon )
236
237 # disable mmx accelerated code if PIC is required
238 # as the provided asm decidedly is not PIC for x86.
239 if use pic && [[ ${ABI} == x86 ]]; then
240 myconf+=( --disable-mmx --disable-mmxext )
241 fi
242
243 # Option to force building pic
244 use pic && myconf+=( --enable-pic )
245
246 # cross compile support
247 if tc-is-cross-compiler ; then
248 myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
249 case ${CHOST} in
250 *freebsd*)
251 myconf+=( --target-os=freebsd )
252 ;;
253 mingw32*)
254 myconf+=( --target-os=mingw32 )
255 ;;
256 *linux*)
257 myconf+=( --target-os=linux )
258 ;;
259 esac
260 fi
261
262 # Misc stuff
263 use hardcoded-tables && myconf+=( --enable-hardcoded-tables )
264
265 # Specific workarounds for too-few-registers arch...
266 if [[ ${ABI} == x86 ]]; then
267 local CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS}
268 filter-flags -fforce-addr -momit-leaf-frame-pointer
269 append-flags -fomit-frame-pointer
270 is-flag -O? || append-flags -O2
271 if use debug; then
272 # no need to warn about debug if not using debug flag
273 ewarn ""
274 ewarn "Debug information will be almost useless as the frame pointer is omitted."
275 ewarn "This makes debugging harder, so crashes that has no fixed behavior are"
276 ewarn "difficult to fix. Please have that in mind."
277 ewarn ""
278 fi
279 fi
280
281 "${S}"/configure \
282 --prefix="${EPREFIX}"/usr \
283 --libdir="${EPREFIX}"/usr/$(get_libdir) \
284 --shlibdir="${EPREFIX}"/usr/$(get_libdir) \
285 --mandir="${EPREFIX}"/usr/share/man \
286 --enable-shared \
287 --cc="$(tc-getCC)" \
288 --ar="$(tc-getAR)" \
289 --optflags="${CFLAGS}" \
290 --extra-cflags="${CFLAGS}" \
291 $(use_enable static-libs static) \
292 "${myconf[@]}" || die
293 }
294
295 multilib_src_compile() {
296 emake
297
298 if use tools; then
299 tc-export CC
300
301 emake ${TOOLS[@]/#/tools/}
302 fi
303 }
304
305 multilib_src_install() {
306 emake DESTDIR="${D}" install install-man
307
308 if use tools; then
309 dobin ${TOOLS[@]/#/tools/}
310 fi
311 }
312
313 multilib_src_install_all() {
314 dodoc Changelog README INSTALL
315 dodoc doc/*.txt
316 use doc && dodoc doc/*.html
317 }
318
319 multilib_src_test() {
320 LD_LIBRARY_PATH="${BUILD_DIR}/libavcore:${BUILD_DIR}/libswscale:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil" \
321 emake -j1 fate
322 }

  ViewVC Help
Powered by ViewVC 1.1.20