diff options
Diffstat (limited to 'media-video/ffmpeg/ffmpeg-20099999.ebuild')
-rw-r--r-- | media-video/ffmpeg/ffmpeg-20099999.ebuild | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/media-video/ffmpeg/ffmpeg-20099999.ebuild b/media-video/ffmpeg/ffmpeg-20099999.ebuild new file mode 100644 index 0000000..163aa36 --- /dev/null +++ b/media-video/ffmpeg/ffmpeg-20099999.ebuild @@ -0,0 +1,187 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="1" +inherit subversion eutils flag-o-matic multilib toolchain-funcs + +ESVN_REPO_URI="svn://svn.mplayerhq.hu/ffmpeg/trunk" +DESCRIPTION="Complete solution to record, convert and stream audio and video (source from SVN)" +HOMEPAGE="http://ffmpeg.org/" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc64 ~sparc ~x86" +IUSE="+aac altivec amrnb amrwb -bindist -debug dirac doc gsm + +hardcoded-tables icc ieee1394 imlib ipv6 mmx +mp3 network oss schroedinger + sdl test theora +threads +truetype v4l vdpau +vorbis X +x264 +xvid +zlib" + +RDEPEND="aac? ( media-libs/faad2 media-libs/faac ) + !bindist? ( + amrnb? ( media-libs/amrnb ) + amrwb? ( media-libs/amrwb ) + ) + dirac? ( media-video/dirac ) + gsm? ( >=media-sound/gsm-1.0.12-r1 ) + ieee1394? ( media-libs/libdc1394 + sys-libs/libraw1394 ) + imlib? ( media-libs/imlib2 ) + mp3? ( media-sound/lame ) + schroedinger? ( media-libs/schroedinger ) + sdl? ( >=media-libs/libsdl-1.2.10 ) + theora? ( media-libs/libtheora media-libs/libogg ) + truetype? ( >=media-libs/freetype-2 ) + vdpau? ( >=x11-drivers/nvidia-drivers-180.08 ) + vorbis? ( media-libs/libvorbis media-libs/libogg ) + X? ( x11-libs/libX11 x11-libs/libXext ) + x264? ( >=media-libs/x264-0.0.20081006 ) + xvid? ( >=media-libs/xvid-1.1.0 ) + zlib? ( sys-libs/zlib )" + +DEPEND="${RDEPEND} + doc? ( app-text/texi2html ) + mmx? ( dev-lang/yasm ) + test? ( net-misc/wget ) + v4l? ( sys-kernel/linux-headers )" + +S=${WORKDIR}/${PN} + +src_unpack() { + subversion_src_unpack + + # For Version Branding + cd "${ESVN_STORE_DIR}/${ESVN_CO_DIR}/${ESVN_PROJECT}/${ESVN_REPO_URI##*/}" + ./version.sh . version.h + mv version.h "${S}" + cd "${S}" + + # disable version rebranding +# epatch "${FILESDIR}/disable-version-rebranding-2009.01.patch" + + # Make it use pic always since we don't need textrels + sed -i -e "s:LIBOBJFLAGS=\"\":LIBOBJFLAGS=\'\$\(PIC\)\':" configure + + # To make sure the ffserver test will work + sed -i -e "s:-e debug=off::" tests/server-regression.sh + + epatch "${FILESDIR}"/ffmpeg-x86-pic-fix-20080916.patch + use icc && epatch "${FILESDIR}"/ffmpeg-icc.patch +} + +src_compile() { + #Note; library makefiles don't propogate flags from config.mak so + #use specified CFLAGS are only used in executables + replace-flags -O0 -O2 + #x86, what a wonderful arch.... + replace-flags -O1 -O2 + + # Append -fomit-frame-pointer to avoid some common issues + use debug || append-flags "-fomit-frame-pointer" + + # Append -DBROKEN_RELOCATIONS to build for bug 179872. + append-flags "-DBROKEN_RELOCATIONS" + + # temporary fix for bug reported at http://forums.gentoo.org/viewtopic-p-5186627.html#5186627 + append-flags "-D_BSD_SOURCE" + + local myconf="${EXTRA_ECONF}" + + # disable mmx accelerated code if not requested, or if PIC is required + # as the provided asm decidedly is not PIC. + if ( gcc-specs-pie || ! use mmx ) && ( ! use amd64 ); then + myconf="${myconf} --disable-mmx --disable-mmx2" + fi + + if use elibc_FreeBSD; then + myconf="${myconf} --enable-memalign-hack" + fi + + use amd64 && myconf="${myconf} --arch=x86_64 --cpu=athlon64" + + # enabled by default + use altivec || myconf="${myconf} --disable-altivec" + use debug || myconf="${myconf} --disable-debug" + use network || myconf="${myconf} --disable-network" + use ipv6 || myconf="${myconf} --disable-ipv6" + use zlib || myconf="${myconf} --disable-zlib" + use sdl || myconf="${myconf} --disable-ffplay" + + # disabled by default + use mp3 && myconf="${myconf} --enable-libmp3lame" + use ieee1394 && myconf="${myconf} --enable-libdc1394" + use threads && myconf="${myconf} --enable-pthreads" + use xvid && myconf="${myconf} --enable-libxvid" + use vorbis && myconf="${myconf} --enable-libvorbis" + use x264 && myconf="${myconf} --enable-libx264" + use theora && myconf="${myconf} --enable-libtheora" + use aac && myconf="${myconf} --enable-libfaad --enable-libfaac" + use hardcoded-tables && myconf="${myconf} --enable-hardcoded-tables" + use dirac && myconf="${myconf} --enable-libdirac" + use schroedinger && myconf="${myconf} --enable-libschroedinger" + use vdpau && myconf="${myconf} --enable-vdpau" + use X && myconf="${myconf} --enable-x11grab" + if use gsm; then + myconf="${myconf} --enable-libgsm" + append-flags -I/usr/include/gsm + fi + + if ! use bindist ; then + use amrnb && myconf="${myconf} --enable-libamr-nb --enable-nonfree" + use amrwb && myconf="${myconf} --enable-libamr-wb --enable-nonfree" + fi + + myconf="${myconf} --enable-gpl --enable-postproc --disable-stripping" + myconf="${myconf} --enable-avfilter --enable-avfilter-lavf" + + tc-is-cross-compiler && myconf="${myconf} --cross-compile --arch=$(tc-arch-kernel)" + + # Specific workarounds for too-few-registers arch... + if [[ $(tc-arch) == "x86" ]]; then + filter-flags -fforce-addr -momit-leaf-frame-pointer + append-flags -fomit-frame-pointer + is-flag -O? || append-flags -O2 + if use debug; then + # no need to warn about debug if not using debug flag + ewarn "" + ewarn "Debug information will be almost useless as the frame pointer is omitted." + ewarn "This makes debugging harder, so crashes that has no fixed behavior are" + ewarn "difficult to fix. Please have that in mind." + ewarn "" + fi + fi + + cd "${S}" + ./configure \ + --prefix=/usr \ + --libdir=/usr/$(get_libdir) \ + --shlibdir=/usr/$(get_libdir) \ + --mandir=/usr/share/man \ + --enable-static --enable-shared \ + "--cc=$(tc-getCC)" \ + ${myconf} || die "configure failed" + + emake -j1 depend || die "depend failed" + emake || die "make failed" +} + +src_install() { + emake -j1 LDCONFIG=true DESTDIR=${D} install || die "Install Failed" + + use doc && emake -j1 documentation + dodoc Changelog README INSTALL + dodoc doc/* +} + +# Never die for now... +src_test() { + cd "${S}/tests" + for t in "codectest libavtest test-server" ; do + make ${t} || ewarn "Some tests in ${t} failed" + done +} + +pkg_postinst() { + echo + ewarn "ffmpeg may have had ABI changes, if ffmpeg based programs" + ewarn "like xine-lib or vlc stop working, please rebuild them." + echo +} |