# Contributor: Damian Kurek <starfire24680@gmail.com>
# Maintainer: Leon Marz <main@lmarz.org>
pkgname=osl
pkgver=1.14.5.1
pkgrel=0
pkgdesc="Advanced shading language for production GI renderers"
url="https://github.com/AcademySoftwareFoundation/OpenShadingLanguage"
# armhf armv7 x86: only supports 64-bit
# s390x: blocked by openimageio
arch="all !armhf !armv7 !s390x !x86"
license="BSD-3-Clause"
_llvmver=19
makedepends="cmake
	bison
	clang$_llvmver-dev
	flex-dev
	llvm$_llvmver-dev
	openexr-dev
	openimageio-dev
	openimageio-tools
	pugixml-dev
	python3-dev
	py3-pybind11-dev
	qt6-qtbase-dev
	samurai
	"
checkdepends="
	font-droid
	py3-openimageio
	"
subpackages="
	$pkgname-libs
	$pkgname-dev
	$pkgname-doc
	py3-$pkgname:python
	openimageio-plugin-osl:_osl
	"
source="$pkgname-$pkgver.tar.gz::https://github.com/AcademySoftwareFoundation/OpenShadingLanguage/archive/v$pkgver.tar.gz
	fix-install.patch
	0001-musl-fix.patch
	"
builddir="$srcdir/OpenShadingLanguage-$pkgver"

# aarch64|loongarch64: incomplete required cpu features for target are not specified
# riscv64: Hard-float 'd' ABI can't be used for a target that doesn't support the D instruction set extension (ignoring target-abi)
case $CARCH in
	aarch64|loongarch64|riscv64) options="$options !check" ;;
esac

build() {
	if [ "$CBUILD" != "$CHOST" ]; then
		CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
	fi

	cmake -B build -G Ninja -Wno-dev \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DCMAKE_INSTALL_LIBDIR=lib \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_CXX_STANDARD=17 \
		-DCMAKE_SKIP_RPATH=ON \
		-DLLVM_ROOT="/usr/lib/llvm$_llvmver" \
		-DLLVM_BC_GENERATOR="/usr/bin/clang++-$_llvmver" \
		-DLLVM_AS_TOOL="/usr/lib/llvm$_llvmver/bin/llvm-as" \
		-DLLVM_LINK_TOOL="/usr/lib/llvm$_llvmver/bin/llvm-link" \
		-DLLVM_STATIC=OFF \
		-DOSL_BUILD_TESTS="$(want_check && echo ON || echo OFF)" \
		-DUSE_PARTIO=OFF \
		$CMAKE_CROSSOPTS
	cmake --build build
}

check() {
	local exclude=
	case $CARCH in
		ppc64le) exclude="|render*|blackbody*" ;;
	esac
	cd build
	OIIO_LIBRARY_PATH=$builddir/build/lib \
	PYTHONPATH=$builddir/build/lib/python/site-packages \
	ctest -E "example-deformer$exclude"
}

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

python() {
	pkgdesc="Python3 bindings for OSL"
	depends="py3-openimageio"
	provides="$pkgname-python=$pkgver-r$pkgrel"
	amove usr/lib/python3*
}

doc() {
	default_doc
	# Example shaders
	amove usr/share/OSL/shaders/*.osl
	amove usr/share/OSL/shaders/*.oso
}

_osl() {
	pkgdesc="Plugin to access OSL from OpenImageIO"
	depends=""
	amove usr/lib/osl.imageio.so
}

sha512sums="
4dfa3659dacc78dc82b943f0d16685e9353924fab40127c69cb2fbdf6d0794970bf283f8711119c31369b9fe507c45e12137d2121f217678da9be86b44b4e2dc  osl-1.14.5.1.tar.gz
6e640dc2b6814968306bc11aed89055dd87e1668544128c3665afbc6f5c2e0c3b7a30c24e85467ec1679da815dadb878a6825a9e01dd50af2570b3e548115bfb  fix-install.patch
317926d9b7a8697a489340b7d8588d4fbb4ef519042e99feb47d6f23a0c43e32e682b000d95d86be82d2069d50c689305158f37ac6701723c8f4c2f9ad158279  0001-musl-fix.patch
"
