depot/third_party/nixpkgs/pkgs/development/compilers/gcc/all.nix

38 lines
1.2 KiB
Nix

{ lib
, stdenv
, gccStdenv
, gcc9Stdenv
, callPackage
, isl_0_17, isl_0_20
, libcCross
, threadsCross
, noSysDirs
, 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 threadsCross else { };
isl = if stdenv.hostPlatform.isDarwin then null
else if atLeast "9" then isl_0_20
else /* atLeast "7" */ isl_0_17;
} // lib.optionalAttrs (!(atLeast "9")) {
# gcc 10 is too strict to cross compile gcc <= 8
stdenv = if (stdenv.targetPlatform != stdenv.buildPlatform) && stdenv.cc.isGNU then gcc9Stdenv else stdenv;
})));
in
lib.nameValuePair attrName pkg;
in
lib.listToAttrs (map gccForMajorMinorVersion versions.allMajorVersions)