Commit b9c6f5b7 authored by Adam Joseph's avatar Adam Joseph Committed by Adam Joseph
Browse files

gcc: move version iteration out of all-packages.nix

This resolves a TODO previously in all-packages.nix.
parent 78706a91
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
{ lib
, stdenv
, gccStdenv
, gcc7Stdenv
, callPackage
, isl_0_11, isl_0_14, isl_0_17, isl_0_20
, libcCross
, threadsCrossFor
, noSysDirs
, texinfo5
, cloog_0_18_0, cloog
, lowPrio
, wrapCC
}@args:

let
  versions = import ./versions.nix;
  gccForMajorMinorVersion = majorMinorVersion:
    let
      atLeast = lib.versionAtLeast majorMinorVersion;
      attrName = "gcc${lib.replaceStrings ["."] [""] majorMinorVersion}";
      pkg = lowPrio (wrapCC (callPackage ./default.nix ({
        inherit noSysDirs;
        inherit majorMinorVersion;
        reproducibleBuild = true;
        profiledCompiler = false;
        libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then args.libcCross else null;
        threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCrossFor majorMinorVersion else { };
        isl = if       stdenv.isDarwin then null
              else if    atLeast "9"   then isl_0_20
              else if    atLeast "7"   then isl_0_17
              else if    atLeast "6"   then (if stdenv.targetPlatform.isRedox then isl_0_17 else isl_0_14)
              else if    atLeast "4.9" then isl_0_11
              else            /* "4.8" */   isl_0_14;
      } // lib.optionalAttrs (majorMinorVersion == "4.8") {
        texinfo = texinfo5; # doesn't validate since 6.1 -> 6.3 bump
      } // lib.optionalAttrs (majorMinorVersion == "4.9") {
        # Build fails on Darwin with clang
        stdenv = if stdenv.isDarwin then gccStdenv else stdenv;
      } // lib.optionalAttrs (!(atLeast "6")) {
        cloog = if stdenv.isDarwin
                then null
                else if atLeast "4.9" then cloog_0_18_0
                else          /* 4.8 */    cloog;
      } // lib.optionalAttrs (atLeast "6" && !(atLeast "9")) {
        # gcc 10 is too strict to cross compile gcc <= 8
        stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc7Stdenv else stdenv;
      })));
    in
      lib.nameValuePair attrName pkg;
in
lib.listToAttrs (map gccForMajorMinorVersion versions.allMajorVersions)
+1 −35
Original line number Diff line number Diff line
@@ -15979,41 +15979,7 @@ with pkgs;
      extraPackages = [];
  };
  # This expression will be pushed into pkgs/development/compilers/gcc/common
  # once the top-level gcc/${version}/default.nix files are deduplicated.
  inherit
    (lib.listToAttrs (map (majorMinorVersion:
      let atLeast = lib.versionAtLeast majorMinorVersion;
          attrName = "gcc${lib.replaceStrings ["."] [""] majorMinorVersion}";
          pkg = lowPrio (wrapCC (callPackage ../development/compilers/gcc/default.nix ({
            inherit noSysDirs;
            inherit majorMinorVersion;
            reproducibleBuild = true;
            profiledCompiler = false;
            libcCross = if stdenv.targetPlatform != stdenv.buildPlatform then libcCross else null;
            threadsCross = if stdenv.targetPlatform != stdenv.buildPlatform then threadsCrossFor majorMinorVersion else { };
            isl = if       stdenv.isDarwin then null
                  else if    atLeast "9"   then isl_0_20
                  else if    atLeast "7"   then isl_0_17
                  else if    atLeast "6"   then (if stdenv.targetPlatform.isRedox then isl_0_17 else isl_0_14)
                  else if    atLeast "4.9" then isl_0_11
                  else            /* "4.8" */   isl_0_14;
          } // lib.optionalAttrs (majorMinorVersion == "4.8") {
            texinfo = texinfo5; # doesn't validate since 6.1 -> 6.3 bump
          } // lib.optionalAttrs (majorMinorVersion == "4.9") {
            # Build fails on Darwin with clang
            stdenv = if stdenv.isDarwin then gccStdenv else stdenv;
          } // lib.optionalAttrs (!(atLeast "6")) {
            cloog = if stdenv.isDarwin
                    then null
                    else if atLeast "4.9" then cloog_0_18_0
                    else          /* 4.8 */    cloog;
          } // lib.optionalAttrs (atLeast "6" && !(atLeast "9")) {
            # gcc 10 is too strict to cross compile gcc <= 8
            stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc7Stdenv else stdenv;
          })));
      in lib.nameValuePair attrName pkg
    ) [ "4.8" "4.9" "6" "7" "8" "9" "10" "11" "12" "13" ]))
  inherit (callPackage ../development/compilers/gcc/all.nix { inherit noSysDirs; })
    gcc48 gcc49 gcc6 gcc7 gcc8 gcc9 gcc10 gcc11 gcc12 gcc13;
  gcc_latest = gcc13;