Name x265
Description Open Source H265/HEVC video encoder
Version 3.6-r0
Package Base x265
Homepage https://www.videolan.org/developers/x265.html
Maintainers ['Natanael Copa <ncopa@alpinelinux.org>']
Contributors ['Carlo Landmeter <clandmeter@alpinelinux.org>']
Distro-repo https://gitlab.alpinelinux.org/alpine/aports/-/tree/3.22-stable/community/x265
Sources ['https://bitbucket.org/multicoreware/x265_git/downloads/x265_3.6-r0.tar.gz']
Dependencies ['libc.musl-x86_64.so.1', 'libstdc++.so.6', 'libx265.so.209']
Optional-Dependencies []
Build-Dependencies ['cmake', 'nasm', 'ninja', 'numactl-dev']
Provides ['cmd:x265=3.6-r0']
Builddate 10-04-2024 21:27:17
Architecture x86_64
Distro-Version v3.22
Licenses ['GPL-2.0-or-later']
Hash Q1Q7o6AP4UKpvtsFzPjODn7qiaqvw=
# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=x265
pkgver=3.6
pkgrel=0
pkgdesc="Open Source H265/HEVC video encoder"
url="https://www.videolan.org/developers/x265.html"
arch="all"
license="GPL-2.0-or-later"
makedepends="cmake nasm ninja numactl-dev"
subpackages="$pkgname-dev $pkgname-libs"
source="https://bitbucket.org/multicoreware/x265_git/downloads/x265_$pkgver.tar.gz"
builddir="$srcdir/${pkgname}_$pkgver"

build() {
	local cmake_opts=""
	case "$CARCH" in
		# It has textrel on x86 so we disable asm.
		x86) cmake_opts="-DENABLE_ASSEMBLY=OFF";;
		ppc*) cmake_opts="-DENABLE_ALTIVEC=OFF -DCPU_POWER8=OFF";;
		# See https://bitbucket.org/multicoreware/x265_git/issues/559
		*) cmake_opts="-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy";;
	esac

	export CFLAGS="$CFLAGS -flto=auto"
	export CXXFLAGS="$CXXFLAGS -flto=auto"

	# CMAKE_BUILD_TYPE - Don't change to None! This is a video encoder,
	#   performance is the most important.
	# shellcheck disable=2046
	cmake -B build-12 -S source -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DHIGH_BIT_DEPTH=TRUE \
		-DMAIN12=TRUE \
		-DEXPORT_C_API=FALSE \
		-DENABLE_CLI=FALSE \
		-DENABLE_SHARED=FALSE \
		$([ "$CARCH" = "aarch64" ] && echo "-DENABLE_ASSEMBLY=OFF") \
		-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
		$cmake_opts
	cmake --build build-12

	# shellcheck disable=2046
	cmake -B build-10 -S source -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DHIGH_BIT_DEPTH=TRUE \
		-DEXPORT_C_API=FALSE \
		-DENABLE_CLI=FALSE \
		-DENABLE_SHARED=FALSE \
		$([ "$CARCH" = "aarch64" ] && echo "-DENABLE_ASSEMBLY=OFF") \
		-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
		$cmake_opts
	cmake --build build-10

	ln -s ../build-10/libx265.a build/libx265_main10.a
	ln -s ../build-12/libx265.a build/libx265_main12.a

	cmake -B build -S source -G Ninja -Wno-dev \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DEXTRA_LIB='x265_main10.a;x265_main12.a' \
		-DEXTRA_LINK_FLAGS='-L.' \
		-DLINKED_10BIT=TRUE \
		-DLINKED_12BIT=TRUE \
		-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
		$cmake_opts

	cmake --build build
}

check() {
	./build/x265 --version
}

package() {
	DESTDIR="$pkgdir" cmake --install build

	rm -fv "$pkgdir"/usr/lib/libx265.a
}

sha512sums="
570429c3f0b560b2f946ac9baba97d66d7d6485e46eb695b17003b5913028f62d35822477633e911cd3ea60e6ce0ecc7d9d82de7d8257272f9ca7b43761438be  x265_3.6.tar.gz
"