diff options
author | Adam Joseph <adam@westernsemico.com> | 2023-11-06 13:59:07 -0800 |
---|---|---|
committer | Adam Joseph <54836058+amjoseph-nixpkgs@users.noreply.github.com> | 2023-11-07 09:57:54 +0000 |
commit | b9c6f5b754ebd1aa83457b616381a40c9570ec88 (patch) | |
tree | 4914f7a64b88e3b366ca07c6a96970598292ef5e /pkgs/development/compilers/gcc | |
parent | 78706a9184a7626e907fef3b97a916220efde67b (diff) |
gcc: move version iteration out of all-packages.nix
This resolves a TODO previously in all-packages.nix.
Diffstat (limited to 'pkgs/development/compilers/gcc')
-rw-r--r-- | pkgs/development/compilers/gcc/all.nix | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/pkgs/development/compilers/gcc/all.nix b/pkgs/development/compilers/gcc/all.nix new file mode 100644 index 0000000000000..82a64f48c37e3 --- /dev/null +++ b/pkgs/development/compilers/gcc/all.nix @@ -0,0 +1,53 @@ +{ 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) + |