aboutsummaryrefslogtreecommitdiffstats
path: root/testing/openblas
diff options
context:
space:
mode:
authorIsaac Dunham <ibid.ag@gmail.com>2014-08-28 15:19:03 -0700
committerNatanael Copa <ncopa@alpinelinux.org>2014-08-30 11:58:18 +0000
commit51f5f0c4b9d7a93ab711dbe877451a367176fed9 (patch)
tree0ebb1634507f267e925c125e7ecd2cbbc88e6ce0 /testing/openblas
parente3b27ebbe49d04b7b9a6823faad73b86cbc25648 (diff)
downloadaports-51f5f0c4b9d7a93ab711dbe877451a367176fed9.tar.bz2
aports-51f5f0c4b9d7a93ab711dbe877451a367176fed9.tar.xz
Add testing/openblas.
OpenBLAS is a fast implementation of BLAS that's easier to build than ATLAS; it also includes LAPACK support.
Diffstat (limited to 'testing/openblas')
-rw-r--r--testing/openblas/00-cpuid.patch34
-rw-r--r--testing/openblas/APKBUILD53
2 files changed, 87 insertions, 0 deletions
diff --git a/testing/openblas/00-cpuid.patch b/testing/openblas/00-cpuid.patch
new file mode 100644
index 0000000000..7758b4691a
--- /dev/null
+++ b/testing/openblas/00-cpuid.patch
@@ -0,0 +1,34 @@
+commit db7e6366cd86b57cd0712293968938058288bde0
+Author: Isaac Dunham <ibid.ag@gmail.com>
+Date: Thu Aug 28 13:05:07 2014 -0700
+
+ Workaround PIC limitations in cpuid.
+
+ cpuid uses register ebx, but ebx is reserved in PIC.
+ So save ebx, swap ebx & edi, and return edi.
+
+ Copied from Igor Pavlov's equivalent fix for 7zip (in CpuArch.c),
+ which is public domain and thus OK license-wise.
+
+diff --git a/cpuid_x86.c b/cpuid_x86.c
+index 53016e1..f9df722 100644
+--- a/cpuid_x86.c
++++ b/cpuid_x86.c
+@@ -59,9 +59,16 @@
+ void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx);
+ #else
+ static inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx){
++#if defined(__i386__) && defined(__PIC__)
++ __asm__ __volatile__
++ ("mov %%ebx, %%edi;"
++ "cpuid;"
++ "xchgl %%ebx, %%edi;"
++ : "=a" (*eax), "=D" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc");
++#else
+ __asm__ __volatile__
+ ("cpuid": "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (op) : "cc");
+-
++#endif
+ }
+ #endif
+
diff --git a/testing/openblas/APKBUILD b/testing/openblas/APKBUILD
new file mode 100644
index 0000000000..ce6f2fcd46
--- /dev/null
+++ b/testing/openblas/APKBUILD
@@ -0,0 +1,53 @@
+# Contributor: Isaac Dunham <ibid.ag@gmail.com>
+# Maintainer: Isaac Dunham <ibid.ag@gmail.com>
+pkgname=openblas
+pkgver=0.2.11
+pkgrel=0
+pkgdesc="A fast BSD-licensed BLAS based on gotoBLAS2, with LAPACK"
+url="http://www.openblas.net"
+arch="all"
+license="BSD"
+depends=""
+depends_dev="gfortran"
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::http://github.com/xianyi/OpenBLAS/archive/v$pkgver.tar.gz
+ 00-cpuid.patch"
+
+_builddir="$srcdir"/OpenBLAS-$pkgver
+prepare() {
+ local i
+ cd "$_builddir"
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
+}
+
+build() {
+ cd "$_builddir"
+#USE_OPENMP=0: see GCC bug 60035
+#NO_AFFINITY: don't expect to work on musl, also breaks R
+#DYNAMIC_ARCH=1 requires 00-cpuid.patch
+ make USE_OPENMP=0 NO_LAPACK=0 NUM_THREADS=8 MAJOR_VERSION=3 \
+ NO_AFFINITY=1 DYNAMIC_ARCH=1 PREFIX=/usr || return 1
+}
+
+package() {
+ cd "$_builddir"
+ mkdir -pm 0755 "$pkgdir/usr/lib" "$pkgdir/usr/include" \
+ "$pkgdir/usr/share/doc/$pkgname" || return 1
+ make USE_OPENMP=0 NO_LAPACK=0 NUM_THREADS=2 MAJOR_VERSION=3 \
+ NO_AFFINITY=1 DYNAMIC_ARCH=1 PREFIX="$pkgdir/usr" install || return 1
+ for FILE in *.txt *.md LICENSE; do
+ install -m 0644 $FILE "$pkgdir/usr/share/doc/$pkgname" || return 1
+ done
+}
+md5sums="c456f3c5e84c3ab69ef89b22e616627a openblas-0.2.11.tar.gz
+0b8b59052a6387fe4aa9e3e473b3749b 00-cpuid.patch"
+sha256sums="dc06836e700ef26519933af309a25958150693c376a536fe35d633d76f1a5606 openblas-0.2.11.tar.gz
+65a809e9f0f06fd9ccefd0af6bc7c398fefe011404f699926946320783050d8b 00-cpuid.patch"
+sha512sums="68abdf8366d4766fe5d852ca3850ea6236d4dc5bad044fa4116ca60872716003746bcfdb1005aac87533d9a085ae319ef18b7ed6f293baf88c79fd7c8562c9f0 openblas-0.2.11.tar.gz
+1f41a324a9f233ef5fe037cd16c4aeabaf5895ba42e2f3758f8bb7a2cddda967fc01df50d86218f316d9406bb6ced4e91d4aec8119fc8f9c2f11b4ecf24e551f 00-cpuid.patch"