# Description: Open Source H265/HEVC video encoder.
# URL: https://bitbucket.org/multicoreware/x265_git/wiki/Home
# Maintainer: Danny Rawlins, crux at romster dot me
# Depends on: cmake

name=x265
version=3.5
release=2
source=(https://bitbucket.org/multicoreware/${name}_git/downloads/${name}_$version.tar.gz
  Version.cmake)

build() {
	# https://bitbucket.org/multicoreware/x265_git/src/ce882936d5f62ea94c13972fa42cab6192864a7d/source/CMakeLists.txt#lines-676
	# we don't depend on git to figure out which version we are building, do we?
	sed "s!@@VERSION@@!$version!g" -i Version.cmake && mv Version.cmake ${name}_$version/source/cmake/Version.cmake

	[[ -e '/usr/bin/ninja' ]] && PKGMK_X265+=' -G Ninja'

	# common args
	local common_args=(
		-D CMAKE_INSTALL_PREFIX=/usr
		-D CMAKE_BUILD_TYPE=Release
		-D CMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS -Wno-restrict -Wno-format-overflow"
		-D CMAKE_ASM_NASM_FLAGS_RELEASE=' -wno-macro-params-legacy'
		-D HIGH_BIT_DEPTH=TRUE
		-D EXPORT_C_API=FALSE
		-D ENABLE_CLI=FALSE
		-D ENABLE_SHARED=FALSE
	)

	# build 12
	cmake -S $SRC/${name}_$version/source -B build-12 $PKGMK_X265 \
		-D MAIN12=TRUE \
		"${common_args[@]}" \
		-Wno-dev
	cmake --build build-12

	# build 10
	cmake -S $SRC/${name}_$version/source -B build-10 $PKGMK_X265 \
		"${common_args[@]}" \
		-Wno-dev
	cmake --build build-10

	# build 8
	mkdir build-8
	ln -s $SRC/build-12/libx265.a $SRC/build-8/libx265_main12.a
	ln -s $SRC/build-10/libx265.a $SRC/build-8/libx265_main10.a

	cmake -S $SRC/${name}_$version/source -B build-8 $PKGMK_X265 \
		"${common_args[@]:0:10}" \
		-D ENABLE_SHARED=TRUE \
		-D EXTRA_LIB='x265_main10.a;x265_main12.a' \
		-D EXTRA_LINK_FLAGS='-L.' \
		-D LINKED_10BIT=TRUE \
		-D LINKED_12BIT=TRUE \
		-D ENABLE_HDR10_PLUS=TRUE \
		-Wno-dev
	cmake --build build-8
	DESTDIR=$PKG cmake --install build-8
}
