# 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
"
