summaryrefslogtreecommitdiffstats
path: root/pkgs
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2019-05-05 19:12:12 +0000
committerGitHub <noreply@github.com>2019-05-05 19:12:12 +0000
commit7770495cd7c6431bd4b1ac6eadbae4e51479538b (patch)
treeae6489d5293cb1c74834db045accaa0dff9fdf15 /pkgs
parent24debf74ef5c6e7799a5bc7edc4b2d6eae8e3c07 (diff)
parent091de095c92ab1d2932ec9dd5e810ea2575e2432 (diff)
Merge pull request #59148 from volth/gcc.arch.v3
compilation for particular x86_64 architecture
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/office/libreoffice/default.nix2
-rw-r--r--pkgs/applications/office/libreoffice/still.nix2
-rw-r--r--pkgs/applications/science/math/nauty/default.nix11
-rw-r--r--pkgs/development/compilers/julia/shared.nix2
-rw-r--r--pkgs/development/libraries/crypto++/default.nix12
-rw-r--r--pkgs/development/libraries/fflas-ffpack/default.nix23
-rw-r--r--pkgs/development/libraries/givaro/default.nix26
-rw-r--r--pkgs/development/libraries/gsl/default.nix6
-rw-r--r--pkgs/development/libraries/gsl/disable-fma.patch32
-rw-r--r--pkgs/development/libraries/gsl/gsl-1_16.nix5
-rw-r--r--pkgs/development/libraries/linbox/default.nix24
-rw-r--r--pkgs/development/libraries/qt-5/modules/qtbase.nix17
-rw-r--r--pkgs/development/libraries/qt-5/modules/qtwebengine.nix5
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix6
-rw-r--r--pkgs/tools/archivers/zpaq/default.nix5
-rw-r--r--pkgs/tools/archivers/zpaq/zpaqd.nix4
16 files changed, 68 insertions, 114 deletions
diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix
index 787854ae8a92..894f152d6f67 100644
--- a/pkgs/applications/office/libreoffice/default.nix
+++ b/pkgs/applications/office/libreoffice/default.nix
@@ -66,7 +66,7 @@ in stdenv.mkDerivation rec {
# For some reason librdf_redland sometimes refers to rasqal.h instead
# of rasqal/rasqal.h
- NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ];
+ NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ] ++ lib.optional stdenv.isx86_64 "-mno-fma";
patches = [
./xdg-open-brief.patch
diff --git a/pkgs/applications/office/libreoffice/still.nix b/pkgs/applications/office/libreoffice/still.nix
index 9dbc078b01d6..efcc4407842b 100644
--- a/pkgs/applications/office/libreoffice/still.nix
+++ b/pkgs/applications/office/libreoffice/still.nix
@@ -66,7 +66,7 @@ in stdenv.mkDerivation rec {
# For some reason librdf_redland sometimes refers to rasqal.h instead
# of rasqal/rasqal.h
- NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ];
+ NIX_CFLAGS_COMPILE = [ "-I${librdf_rasqal}/include/rasqal" ] ++ lib.optional stdenv.isx86_64 "-mno-fma";
patches = [
./xdg-open-brief.patch
diff --git a/pkgs/applications/science/math/nauty/default.nix b/pkgs/applications/science/math/nauty/default.nix
index 7351de53cfce..226e13c004d7 100644
--- a/pkgs/applications/science/math/nauty/default.nix
+++ b/pkgs/applications/science/math/nauty/default.nix
@@ -1,7 +1,6 @@
{ stdenv
, lib
, fetchurl
-, optimize ? false # impure
}:
stdenv.mkDerivation rec {
name = "nauty-${version}";
@@ -11,13 +10,15 @@ stdenv.mkDerivation rec {
sha256 = "05z6mk7c31j70md83396cdjmvzzip1hqb88pfszzc6k4gy8h3m2y";
};
outputs = [ "out" "dev" ];
- configureFlags = lib.optionals (!optimize) [
+ configureFlags = {
# Prevent nauty from sniffing some cpu features. While those are very
# widely available, it can lead to nasty bugs when they are not available:
# https://groups.google.com/forum/#!topic/sage-packaging/Pe4SRDNYlhA
- "--disable-popcnt"
- "--disable-clz"
- ];
+ "default" = [ "--disable-clz" "--disable-popcnt" ];
+ "westmere" = [ "--disable-clz" ];
+ "sandybridge" = [ "--disable-clz" ];
+ "ivybridge" = [ "--disable-clz" ];
+ }.${stdenv.hostPlatform.platform.gcc.arch or "default"} or [];
buildInputs = [];
installPhase = ''
mkdir -p "$out"/{bin,share/doc/nauty} "$dev"/{lib,include/nauty}
diff --git a/pkgs/development/compilers/julia/shared.nix b/pkgs/development/compilers/julia/shared.nix
index ffa5e3ba55d0..6706cf1e2bd4 100644
--- a/pkgs/development/compilers/julia/shared.nix
+++ b/pkgs/development/compilers/julia/shared.nix
@@ -130,7 +130,7 @@ stdenv.mkDerivation rec {
makeFlags =
let
arch = head (splitString "-" stdenv.system);
- march = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}"
+ march = { "x86_64" = stdenv.hostPlatform.platform.gcc.arch or "x86-64"; "i686" = "pentium4"; }."${arch}"
or (throw "unsupported architecture: ${arch}");
# Julia requires Pentium 4 (SSE2) or better
cpuTarget = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}"
diff --git a/pkgs/development/libraries/crypto++/default.nix b/pkgs/development/libraries/crypto++/default.nix
index cbd3e4054159..61a825cd3745 100644
--- a/pkgs/development/libraries/crypto++/default.nix
+++ b/pkgs/development/libraries/crypto++/default.nix
@@ -18,17 +18,11 @@ stdenv.mkDerivation rec {
];
- configurePhase = let
- marchflags =
- if stdenv.isi686 then "-march=i686" else
- if stdenv.isx86_64 then "-march=nocona -mtune=generic" else
- "";
- in
- ''
+ configurePhase = ''
sed -i GNUmakefile \
- -e 's|-march=native|${marchflags} -fPIC|g' \
+ -e 's|-march=native|-fPIC|g' \
-e '/^CXXFLAGS =/s|-g ||'
- '';
+ '';
enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/fflas-ffpack/default.nix b/pkgs/development/libraries/fflas-ffpack/default.nix
index 2dd58e64585a..a37a11f5cb0c 100644
--- a/pkgs/development/libraries/fflas-ffpack/default.nix
+++ b/pkgs/development/libraries/fflas-ffpack/default.nix
@@ -1,7 +1,6 @@
{ stdenv, fetchFromGitHub, autoreconfHook, givaro, pkgconfig, blas
, fetchpatch
, gmpxx
-, optimize ? false # impure
}:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
@@ -40,19 +39,17 @@ stdenv.mkDerivation rec {
configureFlags = [
"--with-blas-libs=-l${blas.linkName}"
"--with-lapack-libs=-l${blas.linkName}"
- ] ++ stdenv.lib.optionals (!optimize) [
+ ] ++ stdenv.lib.optionals stdenv.isx86_64 {
# disable SIMD instructions (which are enabled *when available* by default)
- "--disable-sse"
- "--disable-sse2"
- "--disable-sse3"
- "--disable-ssse3"
- "--disable-sse41"
- "--disable-sse42"
- "--disable-avx"
- "--disable-avx2"
- "--disable-fma"
- "--disable-fma4"
- ];
+ "default" = [ "--disable-sse3" "--disable-ssse3" "--disable-sse41" "--disable-sse42" "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "westmere" = [ "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "sandybridge" = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "ivybridge" = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "haswell" = [ "--disable-fma4" ];
+ "broadwell" = [ "--disable-fma4" ];
+ "skylake" = [ "--disable-fma4" ];
+ "skylake-avx512" = [ "--disable-fma4" ];
+ }.${stdenv.hostPlatform.platform.gcc.arch or "default"};
doCheck = true;
diff --git a/pkgs/development/libraries/givaro/default.nix b/pkgs/development/libraries/givaro/default.nix
index 0773daa2d09a..bfbce57b0a6a 100644
--- a/pkgs/development/libraries/givaro/default.nix
+++ b/pkgs/development/libraries/givaro/default.nix
@@ -1,6 +1,4 @@
-{ stdenv, fetchFromGitHub, automake, autoconf, libtool, autoreconfHook, gmpxx
-, optimize ? false # impure
-}:
+{ stdenv, fetchFromGitHub, automake, autoconf, libtool, autoreconfHook, gmpxx }:
stdenv.mkDerivation rec {
name = "${pname}-${version}";
pname = "givaro";
@@ -19,19 +17,17 @@ stdenv.mkDerivation rec {
configureFlags = [
"--disable-optimization"
- ] ++ stdenv.lib.optionals (!optimize) [
+ ] ++ stdenv.lib.optionals stdenv.isx86_64 {
# disable SIMD instructions (which are enabled *when available* by default)
- "--disable-sse"
- "--disable-sse2"
- "--disable-sse3"
- "--disable-ssse3"
- "--disable-sse41"
- "--disable-sse42"
- "--disable-avx"
- "--disable-avx2"
- "--disable-fma"
- "--disable-fma4"
- ];
+ "default" = [ "--disable-sse3" "--disable-ssse3" "--disable-sse41" "--disable-sse42" "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "westmere" = [ "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "sandybridge" = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "ivybridge" = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "haswell" = [ "--disable-fma4" ];
+ "broadwell" = [ "--disable-fma4" ];
+ "skylake" = [ "--disable-fma4" ];
+ "skylake-avx512" = [ "--disable-fma4" ];
+ }.${stdenv.hostPlatform.platform.gcc.arch or "default"};
# On darwin, tests are linked to dylib in the nix store, so we need to make
# sure tests run after installPhase.
diff --git a/pkgs/development/libraries/gsl/default.nix b/pkgs/development/libraries/gsl/default.nix
index 9fd3f8a7a998..c8846509d004 100644
--- a/pkgs/development/libraries/gsl/default.nix
+++ b/pkgs/development/libraries/gsl/default.nix
@@ -8,10 +8,8 @@ stdenv.mkDerivation rec {
sha256 = "1395y9hlhqadn5g9j8q22224fds5sd92jxi9czfavjj24myasq04";
};
- patches = [
- # ToDo: there might be more impurities than FMA support check
- ./disable-fma.patch # https://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html
- ];
+ # do not let -march=skylake to enable FMA (https://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html)
+ NIX_CFLAGS_COMPILE = stdenv.lib.optional stdenv.isx86_64 "-mno-fma";
# https://lists.gnu.org/archive/html/bug-gsl/2015-11/msg00012.html
doCheck = stdenv.hostPlatform.system != "i686-linux" && stdenv.hostPlatform.system != "aarch64-linux";
diff --git a/pkgs/development/libraries/gsl/disable-fma.patch b/pkgs/development/libraries/gsl/disable-fma.patch
deleted file mode 100644
index bb1eda9ccccd..000000000000
--- a/pkgs/development/libraries/gsl/disable-fma.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- a/configure.ac 2011-09-22 16:13:22 +0000
-+++ b/configure.ac 2011-11-26 23:55:24 +0000
-@@ -381,6 +381,28 @@
- AC_SUBST(HAVE_DARWIN_IEEE_INTERFACE)
- AC_SUBST(HAVE_DARWIN86_IEEE_INTERFACE)
-
-+dnl check for compiler flags to disable use of FMA
-+save_cflags="$CFLAGS"
-+AC_CACHE_CHECK([for compiler flags to disable use of FMA], ac_cv_c_fma_flags,
-+[
-+if test X"$GCC" = Xyes; then
-+ fma_flags='-ffp-contract=off'
-+else
-+ fma_flags=
-+fi
-+if test X"$fma_flags" != X; then
-+ CFLAGS="$fma_flags $CFLAGS"
-+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int foo;]])],[ac_cv_c_fma_flags="$fma_flags"],[ac_cv_c_fma_flags="none"])
-+else
-+ ac_cv_c_fma_flags="none"
-+fi])
-+
-+if test "$ac_cv_c_fma_flags" != "none" ; then
-+ CFLAGS="$ac_cv_c_fma_flags $save_cflags"
-+else
-+ CFLAGS="$save_cflags"
-+fi
-+
- dnl Check for IEEE control flags
-
- save_cflags="$CFLAGS"
-
diff --git a/pkgs/development/libraries/gsl/gsl-1_16.nix b/pkgs/development/libraries/gsl/gsl-1_16.nix
index 69fe1b0db554..e5772c8772ec 100644
--- a/pkgs/development/libraries/gsl/gsl-1_16.nix
+++ b/pkgs/development/libraries/gsl/gsl-1_16.nix
@@ -8,9 +8,10 @@ stdenv.mkDerivation rec {
sha256 = "0lrgipi0z6559jqh82yx8n4xgnxkhzj46v96dl77hahdp58jzg3k";
};
+ # do not let -march=skylake to enable FMA (https://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html)
+ NIX_CFLAGS_COMPILE = stdenv.lib.optional stdenv.isx86_64 "-mno-fma";
+
patches = [
- # ToDo: there might be more impurities than FMA support check
- ./disable-fma.patch # https://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html
(fetchpatch {
name = "bug-39055.patch";
url = "https://git.savannah.gnu.org/cgit/gsl.git/patch/?id=9cc12d";
diff --git a/pkgs/development/libraries/linbox/default.nix b/pkgs/development/libraries/linbox/default.nix
index a9a649e2de76..ef2dbb10fba1 100644
--- a/pkgs/development/libraries/linbox/default.nix
+++ b/pkgs/development/libraries/linbox/default.nix
@@ -7,7 +7,6 @@
, blas
, fflas-ffpack
, gmpxx
-, optimize ? false # impure
, withSage ? false # sage support
}:
stdenv.mkDerivation rec {
@@ -37,19 +36,18 @@ stdenv.mkDerivation rec {
configureFlags = [
"--with-blas-libs=-l${blas.linkName}"
"--disable-optimization"
- ] ++ stdenv.lib.optionals (!optimize) [
+ ] ++ stdenv.lib.optionals stdenv.isx86_64 {
# disable SIMD instructions (which are enabled *when available* by default)
- "--disable-sse"
- "--disable-sse2"
- "--disable-sse3"
- "--disable-ssse3"
- "--disable-sse41"
- "--disable-sse42"
- "--disable-avx"
- "--disable-avx2"
- "--disable-fma"
- "--disable-fma4"
- ] ++ stdenv.lib.optionals withSage [
+ "default" = [ "--disable-sse3" "--disable-ssse3" "--disable-sse41" "--disable-sse42" "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "westmere" = [ "--disable-avx" "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "sandybridge" = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "ivybridge" = [ "--disable-avx2" "--disable-fma" "--disable-fma4" ];
+ "haswell" = [ "--disable-fma4" ];
+ "broadwell" = [ "--disable-fma4" ];
+ "skylake" = [ "--disable-fma4" ];
+ "skylake-avx512" = [ "--disable-fma4" ];
+ }.${stdenv.hostPlatform.platform.gcc.arch or "default"}
+ ++ stdenv.lib.optionals withSage [
"--enable-sage"
];
diff --git a/pkgs/development/libraries/qt-5/modules/qtbase.nix b/pkgs/development/libraries/qt-5/modules/qtbase.nix
index 92ac8a242013..71d27c33a928 100644
--- a/pkgs/development/libraries/qt-5/modules/qtbase.nix
+++ b/pkgs/development/libraries/qt-5/modules/qtbase.nix
@@ -266,15 +266,18 @@ stdenv.mkDerivation {
++ (
if (!stdenv.hostPlatform.isx86_64)
then [ "-no-sse2" ]
- else lib.optional (compareVersion "5.9.0" >= 0) [ "-sse2" ]
+ else lib.optionals (compareVersion "5.9.0" >= 0) {
+ "default" = [ "-sse2" "-no-sse3" "-no-ssse3" "-no-sse4.1" "-no-sse4.2" "-no-avx" "-no-avx2" ];
+ "westmere" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-no-avx" "-no-avx2" ];
+ "sandybridge" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-avx" "-no-avx2" ];
+ "ivybridge" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-avx" "-no-avx2" ];
+ "haswell" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-avx" "-avx2" ];
+ "broadwell" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-avx" "-avx2" ];
+ "skylake" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-avx" "-avx2" ];
+ "skylake-avx512" = [ "-sse2" "-sse3" "-ssse3" "-sse4.1" "-sse4.2" "-avx" "-avx2" ];
+ }.${stdenv.hostPlatform.platform.gcc.arch or "default"}
)
++ [
- "-no-sse3"
- "-no-ssse3"
- "-no-sse4.1"
- "-no-sse4.2"
- "-no-avx"
- "-no-avx2"
"-no-mips_dsp"
"-no-mips_dspr2"
]
diff --git a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix
index 91b7acf43654..af5804018874 100644
--- a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix
+++ b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix
@@ -103,7 +103,10 @@ EOF
'');
NIX_CFLAGS_COMPILE =
- lib.optionalString stdenv.isDarwin [
+ # it fails when compiled with -march=sandybridge https://github.com/NixOS/nixpkgs/pull/59148#discussion_r276696940
+ # TODO: investigate and fix properly
+ lib.optionals (stdenv.hostPlatform.platform.gcc.arch or "" == "sandybridge") [ "-march=westmere" ] ++
+ lib.optionals stdenv.isDarwin [
"-DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_10"
"-DMAC_OS_X_VERSION_MIN_REQUIRED=MAC_OS_X_VERSION_10_10"
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 8163243eb0a4..a8f902fdb38f 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -8,9 +8,9 @@
, xlaSupport ? cudaSupport
# Default from ./configure script
, cudaCapabilities ? [ "3.5" "5.2" ]
-, sse42Support ? false
-, avx2Support ? false
-, fmaSupport ? false
+, sse42Support ? builtins.elem (stdenv.hostPlatform.platform.gcc.arch or "default") ["westmere" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake" "skylake-avx512"]
+, avx2Support ? builtins.elem (stdenv.hostPlatform.platform.gcc.arch or "default") [ "haswell" "broadwell" "skylake" "skylake-avx512"]
+, fmaSupport ? builtins.elem (stdenv.hostPlatform.platform.gcc.arch or "default") [ "haswell" "broadwell" "skylake" "skylake-avx512"]
}:
assert cudaSupport -> nvidia_x11 != null
diff --git a/pkgs/tools/archivers/zpaq/default.nix b/pkgs/tools/archivers/zpaq/default.nix
index 309604999ba2..48b3a91b971a 100644
--- a/pkgs/tools/archivers/zpaq/default.nix
+++ b/pkgs/tools/archivers/zpaq/default.nix
@@ -19,10 +19,7 @@ stdenv.mkDerivation rec {
CPPFLAGS = with stdenv; ""
+ (lib.optionalString (!isi686 && !isx86_64) "-DNOJIT ")
+ "-Dunix";
- CXXFLAGS = with stdenv; ""
- + (lib.optionalString isi686 "-march=i686 -mtune=generic ")
- + (lib.optionalString isx86_64 "-march=nocona -mtune=generic ")
- + "-O3 -DNDEBUG";
+ CXXFLAGS = "-O3 -DNDEBUG";
in ''
buildFlagsArray=( "CPPFLAGS=${CPPFLAGS}" "CXXFLAGS=${CXXFLAGS}" )
'';
diff --git a/pkgs/tools/archivers/zpaq/zpaqd.nix b/pkgs/tools/archivers/zpaq/zpaqd.nix
index 344f08890906..611654331c3b 100644
--- a/pkgs/tools/archivers/zpaq/zpaqd.nix
+++ b/pkgs/tools/archivers/zpaq/zpaqd.nix
@@ -11,10 +11,8 @@ let
sha256="0868lynb45lm79yvx5f10lj5h6bfv0yck8whcls2j080vmk3n7rk";
};
- compileFlags = stdenv.lib.concatStringsSep " " ([ "-O3" "-mtune=generic" "-DNDEBUG" ]
+ compileFlags = stdenv.lib.concatStringsSep " " ([ "-O3" "-DNDEBUG" ]
++ stdenv.lib.optional (stdenv.hostPlatform.isUnix) "-Dunix -pthread"
- ++ stdenv.lib.optional (stdenv.hostPlatform.isi686) "-march=i686"
- ++ stdenv.lib.optional (stdenv.hostPlatform.isx86_64) "-march=nocona"
++ stdenv.lib.optional (!stdenv.hostPlatform.isx86) "-DNOJIT");
in
stdenv.mkDerivation {