about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorMarkus Kowalewski <markus.kowalewski@fysik.su.se>2019-01-29 14:34:02 +0100
committerMarkus Kowalewski <markus.kowalewski@fysik.su.se>2019-01-29 14:34:02 +0100
commit57c37456db25d7986b43d4cb157a167ede2e0658 (patch)
treee38c8649cb9325132f2b6d1625f698bfe78dfe66 /pkgs/development
parent5c6892e1a277ca4bd39340a2548c84b0a7b96f81 (diff)
downloadnixlib-57c37456db25d7986b43d4cb157a167ede2e0658.tar
nixlib-57c37456db25d7986b43d4cb157a167ede2e0658.tar.gz
nixlib-57c37456db25d7986b43d4cb157a167ede2e0658.tar.bz2
nixlib-57c37456db25d7986b43d4cb157a167ede2e0658.tar.lz
nixlib-57c37456db25d7986b43d4cb157a167ede2e0658.tar.xz
nixlib-57c37456db25d7986b43d4cb157a167ede2e0658.tar.zst
nixlib-57c37456db25d7986b43d4cb157a167ede2e0658.zip
openblas: make the optimazation target overridable
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/libraries/science/math/openblas/default.nix18
1 files changed, 12 insertions, 6 deletions
diff --git a/pkgs/development/libraries/science/math/openblas/default.nix b/pkgs/development/libraries/science/math/openblas/default.nix
index 120fa25090a4..8bba26efd35f 100644
--- a/pkgs/development/libraries/science/math/openblas/default.nix
+++ b/pkgs/development/libraries/science/math/openblas/default.nix
@@ -3,6 +3,10 @@
 # pointer width, but some expect to use 32-bit integers always
 # (for compatibility with reference BLAS).
 , blas64 ? null
+
+# Select a specifc optimization target (other than the default)
+# See https://github.com/xianyi/OpenBLAS/blob/develop/TargetList.txt
+, target ? null
 }:
 
 with stdenv.lib;
@@ -10,11 +14,13 @@ with stdenv.lib;
 let blas64_ = blas64; in
 
 let
+  setTarget = x: if target == null then x else target;
+
   # To add support for a new platform, add an element to this set.
   configs = {
     armv6l-linux = {
       BINARY = "32";
-      TARGET = "ARMV6";
+      TARGET = setTarget "ARMV6";
       DYNAMIC_ARCH = "0";
       CC = "gcc";
       USE_OPENMP = "1";
@@ -22,7 +28,7 @@ let
 
     armv7l-linux = {
       BINARY = "32";
-      TARGET = "ARMV7";
+      TARGET = setTarget "ARMV7";
       DYNAMIC_ARCH = "0";
       CC = "gcc";
       USE_OPENMP = "1";
@@ -30,7 +36,7 @@ let
 
     aarch64-linux = {
       BINARY = "64";
-      TARGET = "ARMV8";
+      TARGET = setTarget "ARMV8";
       DYNAMIC_ARCH = "1";
       CC = "gcc";
       USE_OPENMP = "1";
@@ -38,7 +44,7 @@ let
 
     i686-linux = {
       BINARY = "32";
-      TARGET = "P2";
+      TARGET = setTarget "P2";
       DYNAMIC_ARCH = "1";
       CC = "gcc";
       USE_OPENMP = "1";
@@ -46,7 +52,7 @@ let
 
     x86_64-darwin = {
       BINARY = "64";
-      TARGET = "ATHLON";
+      TARGET = setTarget "ATHLON";
       DYNAMIC_ARCH = "1";
       # Note that clang is available through the stdenv on OSX and
       # thus is not an explicit dependency.
@@ -57,7 +63,7 @@ let
 
     x86_64-linux = {
       BINARY = "64";
-      TARGET = "ATHLON";
+      TARGET = setTarget "ATHLON";
       DYNAMIC_ARCH = "1";
       CC = "gcc";
       USE_OPENMP = "1";