core/pkgs/by-name/gc/gcc/all.nix
2024-06-30 09:12:46 +01:00

79 lines
2.3 KiB
Nix

{
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
# "4.8"
else
isl_0_14;
}
// lib.optionalAttrs (majorMinorVersion == "4.8") {
texinfo = texinfo5; # doesn't validate since 6.1 -> 6.3 bump
}
// lib.optionalAttrs (!(atLeast "6")) {
cloog =
if stdenv.isDarwin then
null
else if atLeast "4.9" then
cloog_0_18_0
# 4.8
else
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)