blob: 7befe16d9c72a46d2744094fd6c36568305d1e4b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# Contributor: Isaac Dunham <ibid.ag@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Isaac Dunham <ibid.ag@gmail.com>
pkgname=openblas
_pkgname=OpenBLAS
pkgver=0.3.6
pkgrel=0
pkgdesc="A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"
url="http://www.openblas.net"
arch="all"
license="BSD-3-Clause"
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|s390x) _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
[ "${CARCH%%_64*}" = "x86" ] && _flags="$_flags DYNAMIC_ARCH=1" || _flags="$_flags DYNAMIC_ARCH=0"
case "$CARCH" in
x86*) _flags="$_flags TARGET=CORE2";;
armhf) _flags="$_flags TARGET=ARMV7";;
aarch64) _flags="$_flags TARGET=ARMV8";;
ppc64le) _flags="$_flags TARGET=POWER8";;
s390x) _flags="$_flags TARGET=ZARCH_GENERIC";;
esac
# Flags for ILP64 variant.
_flags64="$_flags
INTERFACE64=1
SYMBOLSUFFIX=64_"
prepare() {
default_prepare
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
if $_ilp64; then
msg "Building with ILP64..."
CFLAGS= make -C "$_builddir64" \
$_flags64 CFLAGS="$CFLAGS" PREFIX=/usr
fi
}
check() {
cd "$builddir"
CFLAGS= make $_flags CFLAGS="$CFLAGS" tests
}
package() {
if $_ilp64; then
make -C "$_builddir64" $_flags64 \
PREFIX="$pkgdir/usr" install
fi
cd "$builddir"
make $_flags PREFIX="$pkgdir/usr" install
# 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/
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="1ad980176a51f70d8b0b2d158da8c01f30f77b7cf385b24a6340d3c5feb1513bd04b9390487d05cc9557db7dc5f7c135b1688dec9f17ebef35dba884ef7ddee9 openblas-0.3.6.tar.gz"
|