diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 7b34513d8378..07728c19fc9e 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -11,21 +11,16 @@ rec { sheevaplug = rec { config = "armv5tel-unknown-linux-gnueabi"; - float = "soft"; platform = platforms.sheevaplug; }; raspberryPi = rec { config = "armv6l-unknown-linux-gnueabihf"; - float = "hard"; - fpu = "vfp"; platform = platforms.raspberrypi; }; armv7l-hf-multiplatform = rec { config = "armv7a-unknown-linux-gnueabihf"; - float = "hard"; - fpu = "vfpv3-d16"; platform = platforms.armv7l-hf-multiplatform; }; @@ -47,26 +42,24 @@ rec { pogoplug4 = rec { config = "armv5tel-unknown-linux-gnueabi"; - float = "soft"; platform = platforms.pogoplug4; }; ben-nanonote = rec { config = "mipsel-unknown-linux-uclibc"; - float = "soft"; platform = { name = "ben_nanonote"; kernelMajor = "2.6"; kernelArch = "mips"; gcc = { arch = "mips32"; + float = "soft"; }; }; }; fuloongminipc = rec { config = "mipsel-unknown-linux-gnu"; - float = "hard"; platform = platforms.fuloong2f_n32; }; diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 08f2fb445de3..1315f290cefa 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -190,9 +190,16 @@ rec { types.abi = enum (attrValues abis); abis = setTypes types.openAbi { - android = {}; - cygnus = {}; - gnu = { + cygnus = {}; + msvc = {}; + eabi = {}; + + androideabi = {}; + android = {}; + + gnueabi = { float = "soft"; }; + gnueabihf = { float = "hard"; }; + gnu = { assertions = [ { assertion = platform: !platform.isAarch32; message = '' @@ -201,17 +208,14 @@ rec { } ]; }; - msvc = {}; - eabi = {}; - androideabi = {}; - gnueabi = {}; - gnueabihf = {}; - musleabi = {}; - musleabihf = {}; - musl = {}; - uclibceabihf = {}; - uclibceabi = {}; - uclibc = {}; + + musleabi = { float = "soft"; }; + musleabihf = { float = "hard"; }; + musl = {}; + + uclibceabihf = { float = "soft"; }; + uclibceabi = { float = "hard"; }; + uclibc = {}; unknown = {}; }; diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index f39e890fbf1c..d6587ac49a89 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -25,7 +25,6 @@ rec { gcc = { arch = "armv5te"; - float = "soft"; }; kernelMajor = "2.6"; @@ -158,7 +157,6 @@ rec { kernelDTB = true; # Beyond 3.10 gcc = { arch = "armv5te"; - float = "soft"; }; }; @@ -336,7 +334,6 @@ rec { gcc = { cpu = "cortex-a9"; fpu = "vfpv3"; - float = "hard"; }; }; @@ -363,7 +360,6 @@ rec { gcc = { cpu = "cortex-a9"; fpu = "neon"; - float = "hard"; }; }; @@ -449,6 +445,7 @@ rec { kernelTarget = "vmlinux"; gcc = { arch = "loongson2f"; + float = "hard"; abi = "n32"; }; }; @@ -498,7 +495,6 @@ rec { # and the above page suggests NEON is only an improvement with hand-written assembly. arch = "armv7-a"; fpu = "vfpv3-d16"; - float = "hard"; # For Raspberry Pi the 2 the best would be: # cpu = "cortex-a7"; diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix index 532c56d52573..fbeb649f96ac 100644 --- a/pkgs/development/compilers/gcc/4.8/default.nix +++ b/pkgs/development/compilers/gcc/4.8/default.nix @@ -99,22 +99,6 @@ let version = "4.8.5"; javaAwtGtk = langJava && x11Support; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -356,7 +340,7 @@ stdenv.mkDerivation ({ optional javaAwtGtk "--enable-java-awt=gtk" ++ optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr}" ++ - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix index f041252495a6..b8aebe6ed094 100644 --- a/pkgs/development/compilers/gcc/4.9/default.nix +++ b/pkgs/development/compilers/gcc/4.9/default.nix @@ -104,22 +104,6 @@ let version = "4.9.4"; javaAwtGtk = langJava && x11Support; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -378,7 +362,7 @@ stdenv.mkDerivation ({ optional javaAwtGtk "--enable-java-awt=gtk" ++ optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr}" ++ - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix index dee798eb09b1..8cbd85d9d198 100644 --- a/pkgs/development/compilers/gcc/5/default.nix +++ b/pkgs/development/compilers/gcc/5/default.nix @@ -94,22 +94,6 @@ let version = "5.5.0"; javaAwtGtk = langJava && x11Support; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -380,7 +364,7 @@ stdenv.mkDerivation ({ optional javaAwtGtk "--enable-java-awt=gtk" ++ optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr}" ++ - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix index b99ab8fce7fb..8985879977d3 100644 --- a/pkgs/development/compilers/gcc/6/default.nix +++ b/pkgs/development/compilers/gcc/6/default.nix @@ -88,22 +88,6 @@ let version = "6.4.0"; javaAwtGtk = langJava && x11Support; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -384,7 +368,7 @@ stdenv.mkDerivation ({ optional javaAwtGtk "--enable-java-awt=gtk" ++ optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr}" ++ - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 493e50d9f327..d2fc25dad588 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -93,22 +93,6 @@ let version = "7.3.0"; javaAwtGtk = langJava && x11Support; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -389,8 +373,7 @@ stdenv.mkDerivation ({ optional javaAwtGtk "--enable-java-awt=gtk" ++ optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr}" ++ - - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index 2465e6149c0a..b7e209ebc0c8 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -54,22 +54,6 @@ let version = "8.1.0"; }) */ ++ optional langFortran ../gfortran-driving.patch; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -331,7 +315,7 @@ stdenv.mkDerivation ({ # Optional features optional (isl != null) "--with-isl=${isl}" ++ - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/compilers/gcc/common/platform-flags.nix b/pkgs/development/compilers/gcc/common/platform-flags.nix new file mode 100644 index 000000000000..e261f54f582d --- /dev/null +++ b/pkgs/development/compilers/gcc/common/platform-flags.nix @@ -0,0 +1,13 @@ +{ lib, targetPlatform }: + +let + p = targetPlatform.platform.gcc or {}; + float = p.float or (targetPlatform.parsed.abi.float or null); +in lib.concatLists [ + (lib.optional (p ? arch) "--with-arch=${p.arch}") + (lib.optional (p ? cpu) "--with-cpu=${p.cpu}") + (lib.optional (p ? abi) "--with-abi=${p.abi}") + (lib.optional (p ? fpu) "--with-fpu=${p.fpu}") + (lib.optional (float != null) "--with-float=${float}") + (lib.optional (p ? mode) "--with-mode=${p.mode}") +] diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix index d37cfac3fa85..06e44d2868a1 100644 --- a/pkgs/development/compilers/gcc/snapshot/default.nix +++ b/pkgs/development/compilers/gcc/snapshot/default.nix @@ -86,22 +86,6 @@ let version = "7-20170409"; javaAwtGtk = langJava && x11Support; - /* Platform flags */ - platformFlags = let - gccArch = targetPlatform.platform.gcc.arch or null; - gccCpu = targetPlatform.platform.gcc.cpu or null; - gccAbi = targetPlatform.platform.gcc.abi or null; - gccFpu = targetPlatform.platform.gcc.fpu or null; - gccFloat = targetPlatform.platform.gcc.float or null; - gccMode = targetPlatform.platform.gcc.mode or null; - in - optional (gccArch != null) "--with-arch=${gccArch}" ++ - optional (gccCpu != null) "--with-cpu=${gccCpu}" ++ - optional (gccAbi != null) "--with-abi=${gccAbi}" ++ - optional (gccFpu != null) "--with-fpu=${gccFpu}" ++ - optional (gccFloat != null) "--with-float=${gccFloat}" ++ - optional (gccMode != null) "--with-mode=${gccMode}"; - /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; crossDarwin = targetPlatform != hostPlatform && targetPlatform.libc == "libSystem"; @@ -352,7 +336,7 @@ stdenv.mkDerivation ({ optional javaAwtGtk "--enable-java-awt=gtk" ++ optional (langJava && javaAntlr != null) "--with-antlr-jar=${javaAntlr}" ++ - platformFlags ++ + (import ../common/platform-flags.nix { inherit (stdenv) lib targetPlatform; }) ++ optional (targetPlatform != hostPlatform) crossConfigureFlags ++ optional (!bootstrap) "--disable-bootstrap" ++ diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 37e0a20a957d..6c7ce8ba16f9 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -39,7 +39,6 @@ let version = "2.27"; patchSuffix = ""; sha256 = "0wpwq7gsm7sd6ysidv0z575ckqdg13cr2njyfgrbgh4f65adwwji"; - cross = if buildPlatform != hostPlatform then hostPlatform else null; in assert withLinuxHeaders -> linuxHeaders != null; @@ -49,9 +48,6 @@ stdenv.mkDerivation ({ inherit version installLocales; linuxHeaders = if withLinuxHeaders then linuxHeaders else null; - # The host/target system. - crossConfig = if cross != null then cross.config else null; - inherit (stdenv) is64bit; enableParallelBuilding = true; @@ -123,11 +119,12 @@ stdenv.mkDerivation ({ else "--disable-profile") ] ++ lib.optionals withLinuxHeaders [ "--enable-kernel=3.2.0" # can't get below with glibc >= 2.26 - ] ++ lib.optionals (cross != null) [ - (if cross ? float && cross.float == "soft" then "--without-fp" else "--with-fp") - ] ++ lib.optionals (cross != null) [ + ] ++ lib.optionals (hostPlatform != buildPlatform) [ + (if hostPlatform.platform.gcc.float or (hostPlatform.parsed.abi.float or "hard") == "soft" + then "--without-fp" + else "--with-fp") "--with-__thread" - ] ++ lib.optionals (cross == null && stdenv.isAarch32) [ + ] ++ lib.optionals (hostPlatform == buildPlatform && hostPlatform.isAarch32) [ "--host=arm-linux-gnueabi" "--build=arm-linux-gnueabi" @@ -179,7 +176,7 @@ stdenv.mkDerivation ({ } - '' + lib.optionalString (cross != null) '' + '' + lib.optionalString (hostPlatform != buildPlatform) '' sed -i s/-lgcc_eh//g "../$sourceRoot/Makeconfig" cat > config.cache << "EOF" @@ -211,7 +208,7 @@ stdenv.mkDerivation ({ } // meta; } -// lib.optionalAttrs (cross != null) { +// lib.optionalAttrs (hostPlatform != buildPlatform) { preInstall = null; # clobber the native hook dontStrip = true;