# Contributor: Isaac Dunham # Contributor: Jakub Jirutka # Maintainer: Isaac Dunham pkgname=openblas _pkgname=OpenBLAS pkgver=0.2.19 pkgrel=3 pkgdesc="A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK" url="http://www.openblas.net" # does not build yet on s390x arch="all !s390x" license="BSD" depends="" depends_dev="gfortran" makedepends="$depends_dev perl linux-headers" subpackages="$pkgname-dev $pkgname-doc" source="$pkgname-$pkgver.tar.gz::https://github.com/xianyi/$_pkgname/archive/v$pkgver.tar.gz" builddir="$srcdir/$_pkgname-$pkgver" _builddir64="$builddir-64" # ILP64 is not supported on aarch64 (https://github.com/xianyi/OpenBLAS/issues/956) _ilp64=false if [ "$CARCH" = "x86_64" ]; then subpackages="$subpackages $pkgname-ilp64" _ilp64=true fi # USE_OPENMP=0: see GCC bug 60035 # NO_AFFINITY: don't expect to work on musl, also breaks R and not # recommended for Julia _flags="USE_OPENMP=0 NO_LAPACK=0 MAJOR_VERSION=3 NO_AFFINITY=1" case "$CARCH" in ppc64le) _flags="$_flags NUM_THREADS=64";; # POWER machines are big *64) _flags="$_flags NUM_THREADS=32";; # match kernel's CONFIG_NR_CPUS *) _flags="$_flags NUM_THREADS=8";; # 32bit machines usually have less cores esac # DYNAMIC_ARCH is supported on x86* only, see https://github.com/xianyi/OpenBLAS/issues/709 case "$CARCH" in x86*) _flags="$_flags TARGET=core2 DYNAMIC_ARCH=1";; armhf) _flags="$_flags TARGET=ARMV7 DYNAMIC_ARCH=0";; aarch64) _flags="$_flags TARGET=ARMV8 DYNAMIC_ARCH=0";; ppc64le) _flags="$_flags TARGET=POWER8 DYNAMIC_ARCH=0";; *) _flags="$_flags DYNAMIC_ARCH=0";; esac # Flags for ILP64 variant. _flags64="$_flags INTERFACE64=1 SYMBOLSUFFIX=64_" prepare() { default_prepare || return 1 if [ "$CARCH" = "ppc64le" ] ; then # Skip test level 3 on ppc64le for a while sed 's/level2 level3/level2/g' -i "$builddir"/test/Makefile sed 's/all2 all3/all2/g' -i "$builddir"/ctest/Makefile fi cp -ar "$builddir" "$_builddir64" } build() { CFLAGS= make -C "$builddir" \ $_flags CFLAGS="$CFLAGS" PREFIX=/usr || return 1 if $_ilp64; then msg "Building with ILP64..." CFLAGS= make -C "$_builddir64" \ $_flags64 CFLAGS="$CFLAGS" PREFIX=/usr || return 1 fi } package() { if $_ilp64; then make -C "$_builddir64" $_flags64 \ PREFIX="$pkgdir/usr" install || return 1 fi cd "$builddir" make $_flags PREFIX="$pkgdir/usr" install || return 1 # Remove reference to $pkgdir. sed -i "s|$pkgdir||" "$pkgdir"/usr/lib/cmake/$pkgname/OpenBLASConfig.cmake mkdir -p "$pkgdir"/usr/share/doc/$pkgname install -m 0644 Changelog.txt TargetList.txt USAGE.md \ "$pkgdir"/usr/share/doc/$pkgname/ || return 1 install -Dm 0644 LICENSE \ "$pkgdir"/usr/share/licenses/$pkgname/LICENSE } ilp64() { pkgdesc="$pkgdesc (ILP64)" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libopenblas64_* "$subpkgdir"/usr/lib/ } sha512sums="7081a8540b8037c0d4d6db0ec4b51277856c0e0f4e2575671984e5deb3482102da8936c43691087c8475d67070f89ac6925e4867ead60802aa2a29e8517e7495 openblas-0.2.19.tar.gz"