summaryrefslogtreecommitdiff
path: root/media-libs/x265
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /media-libs/x265
reinit the tree, so we can have metadata
Diffstat (limited to 'media-libs/x265')
-rw-r--r--media-libs/x265/Manifest15
-rw-r--r--media-libs/x265/files/arm.patch34
-rw-r--r--media-libs/x265/files/neon.patch16
-rw-r--r--media-libs/x265/files/ppc64.patch15
-rw-r--r--media-libs/x265/metadata.xml17
-rw-r--r--media-libs/x265/x265-2.2.ebuild193
-rw-r--r--media-libs/x265/x265-2.3.ebuild193
-rw-r--r--media-libs/x265/x265-2.4.ebuild197
-rw-r--r--media-libs/x265/x265-2.5.ebuild197
-rw-r--r--media-libs/x265/x265-9999.ebuild197
10 files changed, 1074 insertions, 0 deletions
diff --git a/media-libs/x265/Manifest b/media-libs/x265/Manifest
new file mode 100644
index 000000000000..15784054fa1d
--- /dev/null
+++ b/media-libs/x265/Manifest
@@ -0,0 +1,15 @@
+AUX arm.patch 1188 SHA256 09b21f21ca08ed5d3d7fd936b19661a4ec1c0e4993a8dcc031f1f022356386af SHA512 2591fdb86494e36d4c44b31ae73c1d544018776f21b4a22410aa48ea3f950c74ee808a8c2759faf9b84e29e4ee4fddd6b1baaa23ac2924da3e408b9947977dec WHIRLPOOL a6efa542581c00e7a3ee1e890d09630422ff3c0469d4f3e19c6ce195f6cfe76aee63b8959c4eaefd34fdf693a115b9953a3d01b660486f5ee1c6b0d6d57691ca
+AUX neon.patch 677 SHA256 2a55dfff7591c0b1ca3a6c4076b4b5c2c9b74898573c286de33c5103e7eedc24 SHA512 69e3d7c6d987ccbbaa7111eb8efc1e02c1e02096936a0eedfbe7e9e1c1377bed0f50f7b09aec0768e8de31251b8e3d2191aab56f19259c0e4aeda9684ab55bc6 WHIRLPOOL dd4ec2dbea7382762fb35a5c6107be3a485d72cf9963f6a536a54e7ae333c47ade50a1372b6c5e7323bab3be33a0ae94e3d8cbd697c0156a22dd5adf83c9597e
+AUX ppc64.patch 619 SHA256 53b5a62daccfe35d0f68343d899ff7b462fdc7543029744e6a537bba12b99ccb SHA512 7b23e9bdb3cc634206ffd42fc381bb3b7915b7b788b30567e01592d83b3d8aee8ba794a20587a31e5ead02c837deae9c8f3d9e82b2b05409892dbe6ff37fe822 WHIRLPOOL 5201ac453efc3b3c26b78091d4becd4da02c80cc473bc7eae08141d25147e0199ec3991bcbe489a1bd5b4dd1409beb66259f832c999f33d169fee486c7a6b141
+DIST x265_2.2.tar.gz 1203801 SHA256 b872552535e41fbffa03ba7cbcd3479c42c4053868309292e78e147b7773ac4b SHA512 335bb38cf0892f2c4310033b076d51115c0b7faa9596a4f556dde5e3d1378d04f3d0055cb0bf2441eb725b7f84c246174bdc315eeb4ddde61ef9d79469f44eef WHIRLPOOL 6aa6fb3669abbb6e3fd9dd9ffe38f595805a61beedcfccd509606a9c3a19f79037a518269206ddcac7231de45165f000e59c3b0f279921a6aa8de2cb5b38a7ec
+DIST x265_2.3.tar.gz 1215719 SHA256 47520ac3424790168ea5c2db4a3cf12ca4d55a1790720007916652f07af3e41f SHA512 c863e4bd95323baf5c1ee388c2d9e460749940b947a795e0bce7bffab620258fb7aafbbf2956225491f4532f715392df3d40f19301964e00c3ac2971cd7d8809 WHIRLPOOL c7fa65f74b342ae32ae7b89aed86e6270607ec22479c95b62bd6b3e2cb958635d459e3770fe73e7599e572b01b171d101f5fb50c161139c867bea1ddda217c10
+DIST x265_2.4.tar.gz 1242300 SHA256 9c2aa718d78f6fecdd783f08ab83b98d3169e5f670404da4c16439306907d729 SHA512 40d0e57104839454226cdba928806c12e533eade391a89e9587e1f9c11b8fd70cc54d20136a09a1127784fe7799c80425617280076b29e1a1ffff7ce44f07dbe WHIRLPOOL 63ab1989856912e8922db66862901511e5f7e4f2bd429319b3f419f8267a442374e8f8626065ccf96766c3075750525755d91df6976352b7b59f229aab94ac86
+DIST x265_2.5.tar.gz 1256678 SHA256 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17 SHA512 f39b0b06a9f6ab9ab19fcdc1cba1578ace433e22dc8ec3f549ec3e5eeaaf40d17de6c7d419c12c16717ae795c45d953ef34a2fc9376d7e83eb7e9e74ab19ec93 WHIRLPOOL a5abfbbb533f22b2f243ff2053ab569d758d72b2cd0ec4ffb264688d9c4666b1354b7933d8e2a9197766cb33cda3e25c6771439ad34ad979ffbde361c2ecf0d5
+EBUILD x265-2.2.ebuild 5669 SHA256 1ad50506f3751f2f8a6880e749610897b884c8c2ce31231b1544822dfb92415e SHA512 da130e2f5236993a10368c79355003d3761e8dea48df66649cf5d6adfc31b52a7fb7c4558221f6d8b6d934b38627d75a6e4aaa4678d7b9b3382cc2eb4bb72aa5 WHIRLPOOL d6bad8c7fab28d5d3276bfe864bba21a020dffb720f6e8ed57a3d7db742394b76f04cd3868ca12f32c2d8574e6d916d9393bf76a24cfc394873a2d5d13b38f5e
+EBUILD x265-2.3.ebuild 5676 SHA256 67b9ef6837bef53ff1a0ac8640334578d43b63f2d8d1c01c168d9bdf3e182435 SHA512 f7c88430a632db2b3bfd32f9537171f62fa422e8e8464556434ad11c6f5fc5a32eb9b0a74b861258589abaadc4f7f284710451d1b7703c5c136fa07f9faf70b1 WHIRLPOOL a63155504435587b31c2eb174c64e9d53ad8a98f98af24fb1dad13babfef0e91f5f791a4ca084de02a780533decd72485547715c2bd0463b2ffd0dbefdbfd466
+EBUILD x265-2.4.ebuild 5728 SHA256 cf32171451ae72fc7f8afe77da763af8274f25967a02f6d86751fe7a219fbc35 SHA512 975f18079c0d18483319848722996c73492d9e26c2352429512319237f339f2b03bb884a8ca8c98708090578e12310a136f8d0930bc60d33fd9e6d3b3c5a44cd WHIRLPOOL 8a47f8550f136e1d91dff6660b09febf13b99c0dac1c13728c5461155ff34204140d2a1c10d22569f088fb400a35b0b0b8a6134e2999649fd57448ebe5e4d232
+EBUILD x265-2.5.ebuild 5728 SHA256 1c781bf80606498de244d4ed0d33adab08f65a22c230164a0f89890484a3e63c SHA512 a3d6d7d11df7c4982018edbab7869a5499e776286bdd117c2fe340a385872c410f76e47ddd8f79808680fa414b91ad9d2afc09d61cb657b7c84c84db5fb65f44 WHIRLPOOL b5472a92ede7975aa3078092770098265ce1d93bee5ea038c149895748cd5c2f456a59e04e098f97de9d752fc865e98fd94490a9cbb4d0ecb7d95f575f6363f5
+EBUILD x265-9999.ebuild 5728 SHA256 1c781bf80606498de244d4ed0d33adab08f65a22c230164a0f89890484a3e63c SHA512 a3d6d7d11df7c4982018edbab7869a5499e776286bdd117c2fe340a385872c410f76e47ddd8f79808680fa414b91ad9d2afc09d61cb657b7c84c84db5fb65f44 WHIRLPOOL b5472a92ede7975aa3078092770098265ce1d93bee5ea038c149895748cd5c2f456a59e04e098f97de9d752fc865e98fd94490a9cbb4d0ecb7d95f575f6363f5
+MISC ChangeLog 7850 SHA256 347b611870bc6fde672d31c535bc6f9c893fafebf99f409e7f84ca46da0e4b5e SHA512 59ac43c8044e932cc9c0e0d92a801c21d37563b6bee9caa3ed2206ad9f2aebbb89b9dacb150336dd20804d8ca00af9a00d8666b210f0a25cad8b1302840df5a5 WHIRLPOOL 37e900003eadf932675a96de637cb10fc08494d968d48c79d56352cea83de6ad2d9a680b0d20d071da38e7d9f6ea5ce4fc9cbf21af8b6532f86f6c1e54f8f8bb
+MISC ChangeLog-2015 4238 SHA256 0f7d8a91ecb7274912565ce569f499aabb66dd641b44808621f1edd39af40d22 SHA512 03784ebe441ab114e783c3e5423a24f9d4a47bfea21d17ea2d5b043bfd47bd132b5aaa6c022b81652f044aad3ad4f538231d3c27c1d52de28be28da803052d28 WHIRLPOOL 951b6af698980d0a098e7e7c172afb003c6d6c029f4b3d64d6d66a6cb5272aecfb36fa007c6f7d439c61ff7cb7a6c3d3ac447f6c438bb9e6c498b25302d145e1
+MISC metadata.xml 703 SHA256 96fd28a16e757c58ea08b5e4c8f6a124c3aa98db54a81841fb01d7ba07ebc8a3 SHA512 b9f2ac6ed88fce31fa7459321cc7cc2114caee48066b0ae1773a8711f2d652370d154a6167d8c8eb0dc47f55ca211812b99d11c4a1941a3a2553c62a6f21abf6 WHIRLPOOL 5043252ce9dd2c7a3a673a69183b38ca54eb5a482626d6195fb59de5cf17b92826ff03f7f81dcb7438b20e10221535fa0888dbca19c0d5615b6a61979c32d468
diff --git a/media-libs/x265/files/arm.patch b/media-libs/x265/files/arm.patch
new file mode 100644
index 000000000000..69edcdecfb91
--- /dev/null
+++ b/media-libs/x265/files/arm.patch
@@ -0,0 +1,34 @@
+More aliases for ARM.
+Do not force CFLAGS for ARM.
+
+Index: source/CMakeLists.txt
+===================================================================
+--- source.orig/CMakeLists.txt
++++ source/CMakeLists.txt
+@@ -41,7 +41,7 @@ SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_
+ # System architecture detection
+ string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC)
+ set(X86_ALIASES x86 i386 i686 x86_64 amd64)
+-set(ARM_ALIASES armv6l armv7l)
++set(ARM_ALIASES armv6l armv6j armv7l armv7a)
+ list(FIND X86_ALIASES "${SYSPROC}" X86MATCH)
+ list(FIND ARM_ALIASES "${SYSPROC}" ARMMATCH)
+ set(POWER_ALIASES ppc64 ppc64le)
+@@ -208,15 +208,11 @@ if(GCC)
+ endif()
+ endif()
+ endif()
+- if(ARM AND CROSS_COMPILE_ARM)
+- set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC)
+- elseif(ARM)
++ if(ARM)
+ find_package(Neon)
+ if(CPU_HAS_NEON)
+- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC)
++ set(ARM_ARGS -mfpu=neon)
+ add_definitions(-DHAVE_NEON)
+- else()
+- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
+ endif()
+ endif()
+ add_definitions(${ARM_ARGS})
diff --git a/media-libs/x265/files/neon.patch b/media-libs/x265/files/neon.patch
new file mode 100644
index 000000000000..444c899a0b63
--- /dev/null
+++ b/media-libs/x265/files/neon.patch
@@ -0,0 +1,16 @@
+These functions are only built when enabling assembly on ARM; use proper check
+to avoid undefined symbols.
+
+Index: source/common/primitives.cpp
+===================================================================
+--- source.orig/common/primitives.cpp
++++ source/common/primitives.cpp
+@@ -270,7 +270,7 @@ void PFX(cpu_emms)(void) {}
+ void PFX(cpu_cpuid)(uint32_t, uint32_t *eax, uint32_t *, uint32_t *, uint32_t *) { *eax = 0; }
+ void PFX(cpu_xgetbv)(uint32_t, uint32_t *, uint32_t *) {}
+
+-#if X265_ARCH_ARM == 0
++#if X265_ARCH_ARM == 0 || !defined(ENABLE_ASSEMBLY)
+ void PFX(cpu_neon_test)(void) {}
+ int PFX(cpu_fast_neon_mrc_test)(void) { return 0; }
+ #endif // X265_ARCH_ARM
diff --git a/media-libs/x265/files/ppc64.patch b/media-libs/x265/files/ppc64.patch
new file mode 100644
index 000000000000..f453c0de0a57
--- /dev/null
+++ b/media-libs/x265/files/ppc64.patch
@@ -0,0 +1,15 @@
+More complete ppc64 matches.
+
+Index: x265_2.2/source/CMakeLists.txt
+===================================================================
+--- x265_2.2.orig/source/CMakeLists.txt
++++ x265_2.2/source/CMakeLists.txt
+@@ -44,7 +44,7 @@ set(X86_ALIASES x86 i386 i686 x86_64 amd
+ set(ARM_ALIASES armv6l armv6j armv7l armv7a)
+ list(FIND X86_ALIASES "${SYSPROC}" X86MATCH)
+ list(FIND ARM_ALIASES "${SYSPROC}" ARMMATCH)
+-set(POWER_ALIASES ppc64 ppc64le)
++set(POWER_ALIASES ppc64 ppc64le powerpc64 powerpc64le)
+ list(FIND POWER_ALIASES "${SYSPROC}" POWERMATCH)
+ if("${SYSPROC}" STREQUAL "" OR X86MATCH GREATER "-1")
+ set(X86 1)
diff --git a/media-libs/x265/metadata.xml b/media-libs/x265/metadata.xml
new file mode 100644
index 000000000000..22a07293b836
--- /dev/null
+++ b/media-libs/x265/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>media-video@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="10bit">Add support for producing 10bits HEVC.</flag>
+ <flag name="12bit">Add support for producing 12bits HEVC.</flag>
+ <flag name="numa">Build with support for NUMA nodes.</flag>
+ <flag name="pic">Disable optimized assembly code that is not PIC friendly</flag>
+ <flag name="power8">Enable support for Power 8 assembly optimizations.</flag>
+ </use>
+ <upstream>
+ <remote-id type="bitbucket">multicoreware/x265</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/media-libs/x265/x265-2.2.ebuild b/media-libs/x265/x265-2.2.ebuild
new file mode 100644
index 000000000000..8f78a69d267d
--- /dev/null
+++ b/media-libs/x265/x265-2.2.ebuild
@@ -0,0 +1,193 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib-minimal multilib multibuild flag-o-matic
+
+if [[ ${PV} = 9999* ]]; then
+ inherit mercurial
+ EHG_REPO_URI="https://bitbucket.org/multicoreware/x265"
+else
+ SRC_URI="
+ https://bitbucket.org/multicoreware/x265/downloads/${PN}_${PV}.tar.gz
+ https://ftp.videolan.org/pub/videolan/x265/${PN}_${PV}.tar.gz"
+ KEYWORDS="amd64 arm hppa ia64 ppc ppc64 x86"
+fi
+
+DESCRIPTION="Library for encoding video streams into the H.265/HEVC format"
+HOMEPAGE="http://x265.org/"
+
+LICENSE="GPL-2"
+# subslot = libx265 soname
+SLOT="0/102"
+IUSE="+10bit +12bit neon numa pic power8 test"
+
+ASM_DEPEND=">=dev-lang/yasm-1.2.0"
+RDEPEND="numa? ( >=sys-process/numactl-2.0.10-r1[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ abi_x86_32? ( ${ASM_DEPEND} )
+ abi_x86_64? ( ${ASM_DEPEND} )"
+
+PATCHES=( "${FILESDIR}/arm.patch" "${FILESDIR}/neon.patch" "${FILESDIR}/ppc64.patch" )
+
+src_unpack() {
+ if [[ ${PV} = 9999* ]]; then
+ mercurial_src_unpack
+ # Can't set it at global scope due to mercurial.eclass limitations...
+ export S=${WORKDIR}/${P}/source
+ else
+ unpack ${A}
+ export S="$(echo "${WORKDIR}/${PN}_"*"/source")"
+ fi
+}
+
+# By default, the library and the encoder is configured for only one output bit
+# depth. Meaning, one has to rebuild libx265 if (s)he wants to produce HEVC
+# files with a different bit depth, which is annoying. However, upstream
+# supports proper namespacing for 8bits, 10bits & 12bits HEVC and linking all
+# that together so that the resulting library can produce all three of them
+# instead of only one.
+# The API requires the bit depth parameter, so that libx265 can then chose which
+# variant of the encoder to use.
+# To achieve this, we have to build one (static) library for each non-main
+# variant, and link it into the main library.
+# Upstream documents using the 8bit variant as main library, hence we do not
+# allow disabling it: "main" *MUST* come last in the following list.
+
+x265_get_variants() {
+ local variants=""
+ use 12bit && variants+="main12 "
+ use 10bit && variants+="main10 "
+ variants+="main"
+ echo "${variants}"
+}
+
+x265_variant_src_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+ pushd "${BUILD_DIR}" >/dev/null || die
+
+ local mycmakeargs=( "${myabicmakeargs[@]}" )
+ case "${MULTIBUILD_VARIANT}" in
+ "main12")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ -DMAIN12=ON
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main10")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main")
+ if (( "${#MULTIBUILD_VARIANTS[@]}" > 1 )) ; then
+ local myvariants=( "${MULTIBUILD_VARIANTS[@]}" )
+ unset myvariants[${#MULTIBUILD_VARIANTS[@]}-1]
+ local liblist=""
+ for v in "${myvariants[@]}" ; do
+ ln -s "${BUILD_DIR%-*}-${v}/libx265.a" "libx265_${v}.a" || die
+ liblist+="libx265_${v}.a;"
+ done
+ mycmakeargs+=(
+ -DEXTRA_LIB="${liblist}"
+ -DEXTRA_LINK_FLAGS=-L.
+ -DLINKED_10BIT=$(usex 10bit)
+ -DLINKED_12BIT=$(usex 12bit)
+ )
+ fi
+ ;;
+ *)
+ die "Unknown variant: ${MULTIBUILD_VARIANT}";;
+ esac
+ cmake-utils_src_configure
+ popd >/dev/null || die
+}
+
+multilib_src_configure() {
+ append-cflags -fPIC
+ append-cxxflags -fPIC
+ local myabicmakeargs=(
+ $(cmake-utils_use_enable test TESTS)
+ $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF")
+ -DENABLE_LIBNUMA=$(usex numa ON OFF)
+ -DCPU_POWER8=$(usex power8 ON OFF)
+ -DENABLE_ALTIVEC=$(usex power8 ON OFF)
+ -DLIB_INSTALL_DIR="$(get_libdir)"
+ )
+
+ if [[ ${ABI} = x86 ]] ; then
+ # Bug #528202
+ if use pic ; then
+ ewarn "PIC has been requested but x86 asm is not PIC-safe, disabling it."
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ elif [[ ${ABI} = x32 ]] ; then
+ # bug #510890
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ elif [[ ${ABI} = arm ]] ; then
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=$(usex pic OFF $(usex neon ON OFF)) )
+ use neon && use pic && ewarn "PIC has been requested but arm neon asm is not PIC-safe, disabling it."
+ fi
+
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_configure
+}
+
+multilib_src_compile() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant cmake-utils_src_compile
+}
+
+x265_variant_src_test() {
+ if [ -x "${BUILD_DIR}/test/TestBench" ] ; then
+ "${BUILD_DIR}/test/TestBench" || die
+ else
+ einfo "Unit tests check only assembly."
+ einfo "You do not seem to have any for ABI=${ABI}, x265 variant=${MULTIBUILD_VARIANT}"
+ einfo "Skipping tests."
+ fi
+}
+
+multilib_src_test() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_test
+}
+
+multilib_src_install() {
+ # Install only "main" variant since the others are already linked into it.
+ local MULTIBUILD_VARIANTS=( "main" )
+ multibuild_foreach_variant cmake-utils_src_install
+}
+
+multilib_src_install_all() {
+ dodoc -r "${S}/../doc/"*
+}
diff --git a/media-libs/x265/x265-2.3.ebuild b/media-libs/x265/x265-2.3.ebuild
new file mode 100644
index 000000000000..75812c4cad22
--- /dev/null
+++ b/media-libs/x265/x265-2.3.ebuild
@@ -0,0 +1,193 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib-minimal multilib multibuild flag-o-matic
+
+if [[ ${PV} = 9999* ]]; then
+ inherit mercurial
+ EHG_REPO_URI="https://bitbucket.org/multicoreware/x265"
+else
+ SRC_URI="
+ https://bitbucket.org/multicoreware/x265/downloads/${PN}_${PV}.tar.gz
+ https://ftp.videolan.org/pub/videolan/x265/${PN}_${PV}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~x86"
+fi
+
+DESCRIPTION="Library for encoding video streams into the H.265/HEVC format"
+HOMEPAGE="http://x265.org/"
+
+LICENSE="GPL-2"
+# subslot = libx265 soname
+SLOT="0/110"
+IUSE="+10bit +12bit neon numa pic power8 test"
+
+ASM_DEPEND=">=dev-lang/yasm-1.2.0"
+RDEPEND="numa? ( >=sys-process/numactl-2.0.10-r1[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ abi_x86_32? ( ${ASM_DEPEND} )
+ abi_x86_64? ( ${ASM_DEPEND} )"
+
+PATCHES=( "${FILESDIR}/arm.patch" "${FILESDIR}/neon.patch" "${FILESDIR}/ppc64.patch" )
+
+src_unpack() {
+ if [[ ${PV} = 9999* ]]; then
+ mercurial_src_unpack
+ # Can't set it at global scope due to mercurial.eclass limitations...
+ export S=${WORKDIR}/${P}/source
+ else
+ unpack ${A}
+ export S="$(echo "${WORKDIR}/${PN}_"*"/source")"
+ fi
+}
+
+# By default, the library and the encoder is configured for only one output bit
+# depth. Meaning, one has to rebuild libx265 if (s)he wants to produce HEVC
+# files with a different bit depth, which is annoying. However, upstream
+# supports proper namespacing for 8bits, 10bits & 12bits HEVC and linking all
+# that together so that the resulting library can produce all three of them
+# instead of only one.
+# The API requires the bit depth parameter, so that libx265 can then chose which
+# variant of the encoder to use.
+# To achieve this, we have to build one (static) library for each non-main
+# variant, and link it into the main library.
+# Upstream documents using the 8bit variant as main library, hence we do not
+# allow disabling it: "main" *MUST* come last in the following list.
+
+x265_get_variants() {
+ local variants=""
+ use 12bit && variants+="main12 "
+ use 10bit && variants+="main10 "
+ variants+="main"
+ echo "${variants}"
+}
+
+x265_variant_src_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+ pushd "${BUILD_DIR}" >/dev/null || die
+
+ local mycmakeargs=( "${myabicmakeargs[@]}" )
+ case "${MULTIBUILD_VARIANT}" in
+ "main12")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ -DMAIN12=ON
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main10")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main")
+ if (( "${#MULTIBUILD_VARIANTS[@]}" > 1 )) ; then
+ local myvariants=( "${MULTIBUILD_VARIANTS[@]}" )
+ unset myvariants[${#MULTIBUILD_VARIANTS[@]}-1]
+ local liblist=""
+ for v in "${myvariants[@]}" ; do
+ ln -s "${BUILD_DIR%-*}-${v}/libx265.a" "libx265_${v}.a" || die
+ liblist+="libx265_${v}.a;"
+ done
+ mycmakeargs+=(
+ -DEXTRA_LIB="${liblist}"
+ -DEXTRA_LINK_FLAGS=-L.
+ -DLINKED_10BIT=$(usex 10bit)
+ -DLINKED_12BIT=$(usex 12bit)
+ )
+ fi
+ ;;
+ *)
+ die "Unknown variant: ${MULTIBUILD_VARIANT}";;
+ esac
+ cmake-utils_src_configure
+ popd >/dev/null || die
+}
+
+multilib_src_configure() {
+ append-cflags -fPIC
+ append-cxxflags -fPIC
+ local myabicmakeargs=(
+ $(cmake-utils_use_enable test TESTS)
+ $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF")
+ -DENABLE_LIBNUMA=$(usex numa ON OFF)
+ -DCPU_POWER8=$(usex power8 ON OFF)
+ -DENABLE_ALTIVEC=$(usex power8 ON OFF)
+ -DLIB_INSTALL_DIR="$(get_libdir)"
+ )
+
+ if [[ ${ABI} = x86 ]] ; then
+ # Bug #528202
+ if use pic ; then
+ ewarn "PIC has been requested but x86 asm is not PIC-safe, disabling it."
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ elif [[ ${ABI} = x32 ]] ; then
+ # bug #510890
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ elif [[ ${ABI} = arm ]] ; then
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=$(usex pic OFF $(usex neon ON OFF)) )
+ use neon && use pic && ewarn "PIC has been requested but arm neon asm is not PIC-safe, disabling it."
+ fi
+
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_configure
+}
+
+multilib_src_compile() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant cmake-utils_src_compile
+}
+
+x265_variant_src_test() {
+ if [ -x "${BUILD_DIR}/test/TestBench" ] ; then
+ "${BUILD_DIR}/test/TestBench" || die
+ else
+ einfo "Unit tests check only assembly."
+ einfo "You do not seem to have any for ABI=${ABI}, x265 variant=${MULTIBUILD_VARIANT}"
+ einfo "Skipping tests."
+ fi
+}
+
+multilib_src_test() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_test
+}
+
+multilib_src_install() {
+ # Install only "main" variant since the others are already linked into it.
+ local MULTIBUILD_VARIANTS=( "main" )
+ multibuild_foreach_variant cmake-utils_src_install
+}
+
+multilib_src_install_all() {
+ dodoc -r "${S}/../doc/"*
+}
diff --git a/media-libs/x265/x265-2.4.ebuild b/media-libs/x265/x265-2.4.ebuild
new file mode 100644
index 000000000000..97a42c088bde
--- /dev/null
+++ b/media-libs/x265/x265-2.4.ebuild
@@ -0,0 +1,197 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib-minimal multilib multibuild flag-o-matic
+
+if [[ ${PV} = 9999* ]]; then
+ inherit mercurial
+ EHG_REPO_URI="https://bitbucket.org/multicoreware/x265"
+else
+ SRC_URI="
+ https://bitbucket.org/multicoreware/x265/downloads/${PN}_${PV}.tar.gz
+ https://ftp.videolan.org/pub/videolan/x265/${PN}_${PV}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~x86"
+fi
+
+DESCRIPTION="Library for encoding video streams into the H.265/HEVC format"
+HOMEPAGE="http://x265.org/"
+
+LICENSE="GPL-2"
+# subslot = libx265 soname
+SLOT="0/116"
+IUSE="+10bit +12bit cpu_flags_arm_neon numa pic power8 test"
+
+ASM_DEPEND=">=dev-lang/yasm-1.2.0"
+RDEPEND="numa? ( >=sys-process/numactl-2.0.10-r1[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ abi_x86_32? ( ${ASM_DEPEND} )
+ abi_x86_64? ( ${ASM_DEPEND} )"
+
+PATCHES=(
+ "${FILESDIR}/arm.patch"
+ "${FILESDIR}/neon.patch"
+ "${FILESDIR}/ppc64.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = 9999* ]]; then
+ mercurial_src_unpack
+ # Can't set it at global scope due to mercurial.eclass limitations...
+ export S=${WORKDIR}/${P}/source
+ else
+ unpack ${A}
+ export S="$(echo "${WORKDIR}/${PN}_"*"/source")"
+ fi
+}
+
+# By default, the library and the encoder is configured for only one output bit
+# depth. Meaning, one has to rebuild libx265 if (s)he wants to produce HEVC
+# files with a different bit depth, which is annoying. However, upstream
+# supports proper namespacing for 8bits, 10bits & 12bits HEVC and linking all
+# that together so that the resulting library can produce all three of them
+# instead of only one.
+# The API requires the bit depth parameter, so that libx265 can then chose which
+# variant of the encoder to use.
+# To achieve this, we have to build one (static) library for each non-main
+# variant, and link it into the main library.
+# Upstream documents using the 8bit variant as main library, hence we do not
+# allow disabling it: "main" *MUST* come last in the following list.
+
+x265_get_variants() {
+ local variants=""
+ use 12bit && variants+="main12 "
+ use 10bit && variants+="main10 "
+ variants+="main"
+ echo "${variants}"
+}
+
+x265_variant_src_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+ pushd "${BUILD_DIR}" >/dev/null || die
+
+ local mycmakeargs=( "${myabicmakeargs[@]}" )
+ case "${MULTIBUILD_VARIANT}" in
+ "main12")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ -DMAIN12=ON
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main10")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main")
+ if (( "${#MULTIBUILD_VARIANTS[@]}" > 1 )) ; then
+ local myvariants=( "${MULTIBUILD_VARIANTS[@]}" )
+ unset myvariants[${#MULTIBUILD_VARIANTS[@]}-1]
+ local liblist=""
+ for v in "${myvariants[@]}" ; do
+ ln -s "${BUILD_DIR%-*}-${v}/libx265.a" "libx265_${v}.a" || die
+ liblist+="libx265_${v}.a;"
+ done
+ mycmakeargs+=(
+ -DEXTRA_LIB="${liblist}"
+ -DEXTRA_LINK_FLAGS=-L.
+ -DLINKED_10BIT=$(usex 10bit)
+ -DLINKED_12BIT=$(usex 12bit)
+ )
+ fi
+ ;;
+ *)
+ die "Unknown variant: ${MULTIBUILD_VARIANT}";;
+ esac
+ cmake-utils_src_configure
+ popd >/dev/null || die
+}
+
+multilib_src_configure() {
+ append-cflags -fPIC
+ append-cxxflags -fPIC
+ local myabicmakeargs=(
+ $(cmake-utils_use_enable test TESTS)
+ $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF")
+ -DENABLE_LIBNUMA=$(usex numa ON OFF)
+ -DCPU_POWER8=$(usex power8 ON OFF)
+ -DENABLE_ALTIVEC=$(usex power8 ON OFF)
+ -DLIB_INSTALL_DIR="$(get_libdir)"
+ )
+
+ if [[ ${ABI} = x86 ]] ; then
+ # Bug #528202
+ if use pic ; then
+ ewarn "PIC has been requested but x86 asm is not PIC-safe, disabling it."
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ elif [[ ${ABI} = x32 ]] ; then
+ # bug #510890
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ elif [[ ${ABI} = arm ]] ; then
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=$(usex pic OFF $(usex cpu_flags_arm_neon ON OFF)) )
+ use cpu_flags_arm_neon && use pic && ewarn "PIC has been requested but arm neon asm is not PIC-safe, disabling it."
+ fi
+
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_configure
+}
+
+multilib_src_compile() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant cmake-utils_src_compile
+}
+
+x265_variant_src_test() {
+ if [ -x "${BUILD_DIR}/test/TestBench" ] ; then
+ "${BUILD_DIR}/test/TestBench" || die
+ else
+ einfo "Unit tests check only assembly."
+ einfo "You do not seem to have any for ABI=${ABI}, x265 variant=${MULTIBUILD_VARIANT}"
+ einfo "Skipping tests."
+ fi
+}
+
+multilib_src_test() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_test
+}
+
+multilib_src_install() {
+ # Install only "main" variant since the others are already linked into it.
+ local MULTIBUILD_VARIANTS=( "main" )
+ multibuild_foreach_variant cmake-utils_src_install
+}
+
+multilib_src_install_all() {
+ dodoc -r "${S}/../doc/"*
+}
diff --git a/media-libs/x265/x265-2.5.ebuild b/media-libs/x265/x265-2.5.ebuild
new file mode 100644
index 000000000000..9b814039f1c4
--- /dev/null
+++ b/media-libs/x265/x265-2.5.ebuild
@@ -0,0 +1,197 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib-minimal multilib multibuild flag-o-matic
+
+if [[ ${PV} = 9999* ]]; then
+ inherit mercurial
+ EHG_REPO_URI="https://bitbucket.org/multicoreware/x265"
+else
+ SRC_URI="
+ https://bitbucket.org/multicoreware/x265/downloads/${PN}_${PV}.tar.gz
+ https://ftp.videolan.org/pub/videolan/x265/${PN}_${PV}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~x86"
+fi
+
+DESCRIPTION="Library for encoding video streams into the H.265/HEVC format"
+HOMEPAGE="http://x265.org/"
+
+LICENSE="GPL-2"
+# subslot = libx265 soname
+SLOT="0/130"
+IUSE="+10bit +12bit cpu_flags_arm_neon numa pic power8 test"
+
+ASM_DEPEND=">=dev-lang/yasm-1.2.0"
+RDEPEND="numa? ( >=sys-process/numactl-2.0.10-r1[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ abi_x86_32? ( ${ASM_DEPEND} )
+ abi_x86_64? ( ${ASM_DEPEND} )"
+
+PATCHES=(
+ "${FILESDIR}/arm.patch"
+ "${FILESDIR}/neon.patch"
+ "${FILESDIR}/ppc64.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = 9999* ]]; then
+ mercurial_src_unpack
+ # Can't set it at global scope due to mercurial.eclass limitations...
+ export S=${WORKDIR}/${P}/source
+ else
+ unpack ${A}
+ export S="$(echo "${WORKDIR}/${PN}_"*"/source")"
+ fi
+}
+
+# By default, the library and the encoder is configured for only one output bit
+# depth. Meaning, one has to rebuild libx265 if (s)he wants to produce HEVC
+# files with a different bit depth, which is annoying. However, upstream
+# supports proper namespacing for 8bits, 10bits & 12bits HEVC and linking all
+# that together so that the resulting library can produce all three of them
+# instead of only one.
+# The API requires the bit depth parameter, so that libx265 can then chose which
+# variant of the encoder to use.
+# To achieve this, we have to build one (static) library for each non-main
+# variant, and link it into the main library.
+# Upstream documents using the 8bit variant as main library, hence we do not
+# allow disabling it: "main" *MUST* come last in the following list.
+
+x265_get_variants() {
+ local variants=""
+ use 12bit && variants+="main12 "
+ use 10bit && variants+="main10 "
+ variants+="main"
+ echo "${variants}"
+}
+
+x265_variant_src_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+ pushd "${BUILD_DIR}" >/dev/null || die
+
+ local mycmakeargs=( "${myabicmakeargs[@]}" )
+ case "${MULTIBUILD_VARIANT}" in
+ "main12")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ -DMAIN12=ON
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main10")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main")
+ if (( "${#MULTIBUILD_VARIANTS[@]}" > 1 )) ; then
+ local myvariants=( "${MULTIBUILD_VARIANTS[@]}" )
+ unset myvariants[${#MULTIBUILD_VARIANTS[@]}-1]
+ local liblist=""
+ for v in "${myvariants[@]}" ; do
+ ln -s "${BUILD_DIR%-*}-${v}/libx265.a" "libx265_${v}.a" || die
+ liblist+="libx265_${v}.a;"
+ done
+ mycmakeargs+=(
+ -DEXTRA_LIB="${liblist}"
+ -DEXTRA_LINK_FLAGS=-L.
+ -DLINKED_10BIT=$(usex 10bit)
+ -DLINKED_12BIT=$(usex 12bit)
+ )
+ fi
+ ;;
+ *)
+ die "Unknown variant: ${MULTIBUILD_VARIANT}";;
+ esac
+ cmake-utils_src_configure
+ popd >/dev/null || die
+}
+
+multilib_src_configure() {
+ append-cflags -fPIC
+ append-cxxflags -fPIC
+ local myabicmakeargs=(
+ $(cmake-utils_use_enable test TESTS)
+ $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF")
+ -DENABLE_LIBNUMA=$(usex numa ON OFF)
+ -DCPU_POWER8=$(usex power8 ON OFF)
+ -DENABLE_ALTIVEC=$(usex power8 ON OFF)
+ -DLIB_INSTALL_DIR="$(get_libdir)"
+ )
+
+ if [[ ${ABI} = x86 ]] ; then
+ # Bug #528202
+ if use pic ; then
+ ewarn "PIC has been requested but x86 asm is not PIC-safe, disabling it."
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ elif [[ ${ABI} = x32 ]] ; then
+ # bug #510890
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ elif [[ ${ABI} = arm ]] ; then
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=$(usex pic OFF $(usex cpu_flags_arm_neon ON OFF)) )
+ use cpu_flags_arm_neon && use pic && ewarn "PIC has been requested but arm neon asm is not PIC-safe, disabling it."
+ fi
+
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_configure
+}
+
+multilib_src_compile() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant cmake-utils_src_compile
+}
+
+x265_variant_src_test() {
+ if [ -x "${BUILD_DIR}/test/TestBench" ] ; then
+ "${BUILD_DIR}/test/TestBench" || die
+ else
+ einfo "Unit tests check only assembly."
+ einfo "You do not seem to have any for ABI=${ABI}, x265 variant=${MULTIBUILD_VARIANT}"
+ einfo "Skipping tests."
+ fi
+}
+
+multilib_src_test() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_test
+}
+
+multilib_src_install() {
+ # Install only "main" variant since the others are already linked into it.
+ local MULTIBUILD_VARIANTS=( "main" )
+ multibuild_foreach_variant cmake-utils_src_install
+}
+
+multilib_src_install_all() {
+ dodoc -r "${S}/../doc/"*
+}
diff --git a/media-libs/x265/x265-9999.ebuild b/media-libs/x265/x265-9999.ebuild
new file mode 100644
index 000000000000..9b814039f1c4
--- /dev/null
+++ b/media-libs/x265/x265-9999.ebuild
@@ -0,0 +1,197 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib-minimal multilib multibuild flag-o-matic
+
+if [[ ${PV} = 9999* ]]; then
+ inherit mercurial
+ EHG_REPO_URI="https://bitbucket.org/multicoreware/x265"
+else
+ SRC_URI="
+ https://bitbucket.org/multicoreware/x265/downloads/${PN}_${PV}.tar.gz
+ https://ftp.videolan.org/pub/videolan/x265/${PN}_${PV}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~x86"
+fi
+
+DESCRIPTION="Library for encoding video streams into the H.265/HEVC format"
+HOMEPAGE="http://x265.org/"
+
+LICENSE="GPL-2"
+# subslot = libx265 soname
+SLOT="0/130"
+IUSE="+10bit +12bit cpu_flags_arm_neon numa pic power8 test"
+
+ASM_DEPEND=">=dev-lang/yasm-1.2.0"
+RDEPEND="numa? ( >=sys-process/numactl-2.0.10-r1[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ abi_x86_32? ( ${ASM_DEPEND} )
+ abi_x86_64? ( ${ASM_DEPEND} )"
+
+PATCHES=(
+ "${FILESDIR}/arm.patch"
+ "${FILESDIR}/neon.patch"
+ "${FILESDIR}/ppc64.patch"
+)
+
+src_unpack() {
+ if [[ ${PV} = 9999* ]]; then
+ mercurial_src_unpack
+ # Can't set it at global scope due to mercurial.eclass limitations...
+ export S=${WORKDIR}/${P}/source
+ else
+ unpack ${A}
+ export S="$(echo "${WORKDIR}/${PN}_"*"/source")"
+ fi
+}
+
+# By default, the library and the encoder is configured for only one output bit
+# depth. Meaning, one has to rebuild libx265 if (s)he wants to produce HEVC
+# files with a different bit depth, which is annoying. However, upstream
+# supports proper namespacing for 8bits, 10bits & 12bits HEVC and linking all
+# that together so that the resulting library can produce all three of them
+# instead of only one.
+# The API requires the bit depth parameter, so that libx265 can then chose which
+# variant of the encoder to use.
+# To achieve this, we have to build one (static) library for each non-main
+# variant, and link it into the main library.
+# Upstream documents using the 8bit variant as main library, hence we do not
+# allow disabling it: "main" *MUST* come last in the following list.
+
+x265_get_variants() {
+ local variants=""
+ use 12bit && variants+="main12 "
+ use 10bit && variants+="main10 "
+ variants+="main"
+ echo "${variants}"
+}
+
+x265_variant_src_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+ pushd "${BUILD_DIR}" >/dev/null || die
+
+ local mycmakeargs=( "${myabicmakeargs[@]}" )
+ case "${MULTIBUILD_VARIANT}" in
+ "main12")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ -DMAIN12=ON
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main10")
+ mycmakeargs+=(
+ -DHIGH_BIT_DEPTH=ON
+ -DEXPORT_C_API=OFF
+ -DENABLE_SHARED=OFF
+ -DENABLE_CLI=OFF
+ )
+ if [[ ${ABI} = x86 ]] ; then
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = arm ]] ; then
+ # 589674
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ if [[ ${ABI} = ppc64 ]] ; then
+ # https://bugs.gentoo.org/show_bug.cgi?id=607802#c5
+ mycmakeargs+=( -DENABLE_ASSEMBLY=OFF -DENABLE_ALTIVEC=OFF )
+ fi
+ ;;
+ "main")
+ if (( "${#MULTIBUILD_VARIANTS[@]}" > 1 )) ; then
+ local myvariants=( "${MULTIBUILD_VARIANTS[@]}" )
+ unset myvariants[${#MULTIBUILD_VARIANTS[@]}-1]
+ local liblist=""
+ for v in "${myvariants[@]}" ; do
+ ln -s "${BUILD_DIR%-*}-${v}/libx265.a" "libx265_${v}.a" || die
+ liblist+="libx265_${v}.a;"
+ done
+ mycmakeargs+=(
+ -DEXTRA_LIB="${liblist}"
+ -DEXTRA_LINK_FLAGS=-L.
+ -DLINKED_10BIT=$(usex 10bit)
+ -DLINKED_12BIT=$(usex 12bit)
+ )
+ fi
+ ;;
+ *)
+ die "Unknown variant: ${MULTIBUILD_VARIANT}";;
+ esac
+ cmake-utils_src_configure
+ popd >/dev/null || die
+}
+
+multilib_src_configure() {
+ append-cflags -fPIC
+ append-cxxflags -fPIC
+ local myabicmakeargs=(
+ $(cmake-utils_use_enable test TESTS)
+ $(multilib_is_native_abi || echo "-DENABLE_CLI=OFF")
+ -DENABLE_LIBNUMA=$(usex numa ON OFF)
+ -DCPU_POWER8=$(usex power8 ON OFF)
+ -DENABLE_ALTIVEC=$(usex power8 ON OFF)
+ -DLIB_INSTALL_DIR="$(get_libdir)"
+ )
+
+ if [[ ${ABI} = x86 ]] ; then
+ # Bug #528202
+ if use pic ; then
+ ewarn "PIC has been requested but x86 asm is not PIC-safe, disabling it."
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ fi
+ elif [[ ${ABI} = x32 ]] ; then
+ # bug #510890
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=OFF )
+ elif [[ ${ABI} = arm ]] ; then
+ myabicmakeargs+=( -DENABLE_ASSEMBLY=$(usex pic OFF $(usex cpu_flags_arm_neon ON OFF)) )
+ use cpu_flags_arm_neon && use pic && ewarn "PIC has been requested but arm neon asm is not PIC-safe, disabling it."
+ fi
+
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_configure
+}
+
+multilib_src_compile() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant cmake-utils_src_compile
+}
+
+x265_variant_src_test() {
+ if [ -x "${BUILD_DIR}/test/TestBench" ] ; then
+ "${BUILD_DIR}/test/TestBench" || die
+ else
+ einfo "Unit tests check only assembly."
+ einfo "You do not seem to have any for ABI=${ABI}, x265 variant=${MULTIBUILD_VARIANT}"
+ einfo "Skipping tests."
+ fi
+}
+
+multilib_src_test() {
+ local MULTIBUILD_VARIANTS=( $(x265_get_variants) )
+ multibuild_foreach_variant x265_variant_src_test
+}
+
+multilib_src_install() {
+ # Install only "main" variant since the others are already linked into it.
+ local MULTIBUILD_VARIANTS=( "main" )
+ multibuild_foreach_variant cmake-utils_src_install
+}
+
+multilib_src_install_all() {
+ dodoc -r "${S}/../doc/"*
+}