b09f87fb0d
According to Hydra, the last time GCC 4.8 successfully built on Darwin was October 2014. It is possible to make the first stage build successfully with clang, but the resulting GCC is not capable of reading the Darwin SDK headers due to their use of `__can_include`. It’s been broken for almost a decade, so just disable it.
50 lines
1.9 KiB
Nix
50 lines
1.9 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
|
|
else /* "4.8" */ 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
|
|
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)
|
|
|