# Contributor: Isaac Dunham # Contributor: Jakub Jirutka # Maintainer: Isaac Dunham setvar pkgname = 'openblas' setvar _pkgname = 'OpenBLAS' setvar pkgver = '0.2.19' setvar pkgrel = '3' setvar pkgdesc = ""A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"" setvar url = ""http://www.openblas.net"" # does not build yet on s390x setvar arch = ""all !s390x"" setvar license = ""BSD"" setvar depends = """" setvar depends_dev = ""gfortran"" setvar makedepends = ""$depends_dev perl linux-headers"" setvar subpackages = ""$pkgname-dev $pkgname-doc"" setvar source = ""$pkgname-$pkgver.tar.gz::http://github.com/xianyi/$_pkgname/archive/v$pkgver.tar.gz"" setvar builddir = ""$srcdir/$_pkgname-$pkgver"" setvar _builddir64 = ""$builddir-64"" # ILP64 is not supported on aarch64 (https://github.com/xianyi/OpenBLAS/issues/956) setvar _ilp64 = 'false' if test $CARCH = "x86_64" { setvar subpackages = ""$subpackages $pkgname-ilp64"" setvar _ilp64 = 'true' } # USE_OPENMP=0: see GCC bug 60035 # NO_AFFINITY: don't expect to work on musl, also breaks R and not # recommended for Julia setvar _flags = ""USE_OPENMP=0 NO_LAPACK=0 MAJOR_VERSION=3 NO_AFFINITY=1"" case (CARCH) { ppc64le { setvar _flags = ""$_flags NUM_THREADS=64""} # POWER machines are big *64 { setvar _flags = ""$_flags NUM_THREADS=32""} # match kernel's CONFIG_NR_CPUS * { setvar _flags = ""$_flags NUM_THREADS=8""} # 32bit machines usually have less cores } # DYNAMIC_ARCH is supported on x86* only, see https://github.com/xianyi/OpenBLAS/issues/709 case (CARCH) { x86* { setvar _flags = ""$_flags TARGET=core2 DYNAMIC_ARCH=1""} armhf { setvar _flags = ""$_flags TARGET=ARMV7 DYNAMIC_ARCH=0""} aarch64 { setvar _flags = ""$_flags TARGET=ARMV8 DYNAMIC_ARCH=0""} ppc64le { setvar _flags = ""$_flags TARGET=POWER8 DYNAMIC_ARCH=0""} * { setvar _flags = ""$_flags DYNAMIC_ARCH=0""} } # Flags for ILP64 variant. setvar _flags64 = ""$_flags INTERFACE64=1 SYMBOLSUFFIX=64_"" proc prepare { default_prepare || return 1 if test $CARCH = "ppc64le" { # 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 } cp -ar $builddir $_builddir64 } proc build ''{ CFLAGS= make -C $builddir \ $_flags CFLAGS="$CFLAGS" PREFIX=/usr || return 1 if $_ilp64 { msg "Building with ILP64...''" CFLAGS= make -C $_builddir64 \ $_flags64 CFLAGS="$CFLAGS" PREFIX=/usr || return 1 } } proc package { if $_ilp64 { make -C $_builddir64 $_flags64 \ PREFIX="$pkgdir/usr" install || return 1 } 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 } proc ilp64 { setvar pkgdesc = ""$pkgdesc (ILP64)"" mkdir -p "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libopenblas64_* "$subpkgdir"/usr/lib/ } setvar sha512sums = ""7081a8540b8037c0d4d6db0ec4b51277856c0e0f4e2575671984e5deb3482102da8936c43691087c8475d67070f89ac6925e4867ead60802aa2a29e8517e7495 openblas-0.2.19.tar.gz""