maintainer="leso-kn <info@lesosoftware.com>"
pkgname=onnxruntime
pkgver=1.22.0
pkgrel=0
pkgdesc="Cross-platform, high performance ML inferencing and training accelerator"
url="https://onnxruntime.ai/"
# x86, s390x, loongarch64: fails to build
# riscv64: tests fails
arch="all !x86 !s390x !riscv64 !loongarch64"
license="MIT"
makedepends="
	abseil-cpp-dev
	bash
	cmake
	gtest-dev
	icu-dev
	linux-headers
	nlohmann-json
	protobuf-dev
	py3-numpy-dev
	py3-protobuf
	py3-pybind11-dev
	py3-setuptools
	py3-wheel
	python3-dev
	re2-dev
	samurai
	zlib-dev
	"
subpackages="
	$pkgname-dev
	py3-$pkgname-pyc
	py3-$pkgname:py3
	"
source="$pkgname-$pkgver.tar.gz::https://github.com/microsoft/onnxruntime/archive/refs/tags/v$pkgver.tar.gz
	flatbuffers-locale.patch.noauto
	no-execinfo.patch
	system.patch
	0001-Remove-MATH_NO_EXCEPT-macro.patch
	upb-fix.patch
	"
options="net"

# tests fail on arm 32 bit, see https://github.com/microsoft/onnxruntime/issues/16387
case "$CARCH" in
armhf|armv7) options="!check $options"; _extra_cxxflags="-Wno-overflow";;
esac

build() {
	CFLAGS="$CFLAGS -O2 -flto=auto" \
	CXXFLAGS="$CXXFLAGS $_extra_cxxflags -O2 -Wno-deprecated-declarations -Wno-error=template-id-cdtor -flto=auto -U_FORTIFY_SOURCE" \
	LDFLAGS="$LDFLAGS -Wl,--copy-dt-needed-entries" \
	cmake -S cmake -B build -G Ninja \
		-DCMAKE_BUILD_TYPE=None \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DBUILD_ONNX_PYTHON=ON \
		-Donnxruntime_BUILD_SHARED_LIB=ON \
		-Donnxruntime_BUILD_UNIT_TESTS="$(want_check && echo ON || echo OFF)" \
		-Donnxruntime_ENABLE_PYTHON=ON \
		-Donnxruntime_USE_NEURAL_SPEED=OFF # fix for 1.17.0, see: https://github.com/microsoft/onnxruntime/pull/19382

	# from testing/flutter/shared-libcxx.patch.engine
	patch -p1 < ../flatbuffers-locale.patch.noauto

	cmake --build build

	cd build
	msg "building python module"
	python3 ../setup.py build
}

check() {
	ctest --test-dir build
}

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

	cd build
	python3 ../setup.py install --skip-build --root="$pkgdir"

	ln -sfv ../../../../libonnxruntime_providers_shared.so \
		"$(echo "$pkgdir"/usr/lib/python3*/site-packages/onnxruntime/capi/libonnxruntime_providers_shared.so)"
}

py3() {
	pkgdesc="$pkgname (python3 bindings)"
	depends="
		py3-coloredlogs
		py3-flatbuffers
		py3-numpy
		py3-packaging
		py3-sympy
		"

	amove usr/lib/python3*
}

sha512sums="
32310215a3646c64ff5e0a309c3049dbe02ae9dd5bda8c89796bd9f86374d0f43443aed756b941d9af20ef1758bb465981ac517bbe8ac33661a292d81c59b152  onnxruntime-1.22.0.tar.gz
52e1c1e4a69543b3b9bcfabbd3f6202edf309f56be129668ad226e7ad7c2f1220ce169f9957fbc1fc4f3cae5abc984f8fe5ea4990fb2ebb033d7111d1d298f95  flatbuffers-locale.patch.noauto
976913be90b0a82ff1ba403f46306ef4e5939bb05296227c99d3c4a609dd00f5750f9b1c6c30d20791ff0724c1bcffc6aa498eac906257aefefc6f35df796fe0  no-execinfo.patch
a8d51449f1f8bebab42e05603826d381da8b08ffee16fd987bef95d52ace50f7970116d03212fd945c412f501c1ede092f1777d87a7b3a2a7851e2883774c653  system.patch
8f6129686fc3f241df174b8a86e957642e0b0a3a9e2ef15bea98ddea199291b444b6b39e4f56f8a7a2e64ee03113ad140fd664a7b6f33a8a9e23c40e883e08df  0001-Remove-MATH_NO_EXCEPT-macro.patch
0a69996c407bc999bf3c5f1ca0594e2666890dddcce480213ca7c317613b0b1ad3382fb117bda492fbd2cd450dad1bb3a1d747b3565c16ae17dc0bbd3dc38577  upb-fix.patch
"
