# Template file for 'python3-numpy'
pkgname=python3-numpy
version=1.19.5
revision=2
wrksrc="numpy-${version}"
build_style=python3-module
hostmakedepends="python3-setuptools python3-Cython gcc-fortran"
makedepends="python3-devel
 $(vopt_if openblas 'openblas-devel' 'lapack-devel cblas-devel')"
depends="python3-setuptools"
short_desc="Fast and sophisticated array facility to Python3"
maintainer="bra1nwave <bra1nwave@protonmail.com>"
license="BSD-3-Clause"
homepage="https://www.numpy.org/"
distfiles="https://github.com/numpy/numpy/archive/v${version}.tar.gz"
checksum=43fe3bcdf27a2eb27196a1d140385aeece71c8b1a6eda18d2c6365239e50c60f
alternatives="numpy:f2py:/usr/bin/f2py3"

build_options="openblas"
desc_option_openblas="Enable support for openblas accelerated linear algebra"

case "$XBPS_TARGET_MACHINE" in
	x86_64*|i686*|aarch64*|armv[67]*|ppc64*)
		# Prefer accelerated routines where available
		build_options_default="openblas"
		;;
	*) ;;
esac

post_patch() {
	case "${XBPS_TARGET_MACHINE}" in
		armv5tel-musl)
			cp "${FILESDIR}/fenv-constants.h" numpy/core/src/npymath/
			patch -Np0 -i "${FILESDIR}/fenv-constants.patch"
			;;
	esac

	if [ "$XBPS_TARGET_LIBC" = musl ] ; then
		vsed -i 's|"backtrace",||' numpy/core/setup_common.py
	fi
}

pre_build() {
	# Build numpy in parallel
	make_build_args+=" ${makejobs}"

	# Find the right linear algebra subroutines on the target arch
	: > site.cfg
	for _blaslib in $(vopt_if openblas openblas "lapack blas"); do
		cat >> site.cfg <<-EOF
		[$_blaslib]
		libraries = ${_blaslib}
		include_dirs = ${XBPS_CROSS_BASE}/usr/include
		library_dirs = ${XBPS_CROSS_BASE}/usr/lib
		runtime_library_dirs = ${XBPS_CROSS_BASE}/usr/lib
		EOF
	done
}

do_check() {
	echo "Skipping check: tests do not function properly in builddir"
}

post_install() {
	# create compat symlinks for .h files
	vmkdir ${py3_inc}
	ln -sfr ${DESTDIR}/${py3_sitelib}/numpy/core/include/numpy \
		${DESTDIR}/${py3_inc}

	rm -f ${DESTDIR}/usr/bin/f2py

	rm -f ${DESTDIR}/usr/lib/python*/site-packages/numpy/LICENSE.txt
	vlicense LICENSE.txt LICENSE
}
