at master 3.0 kB view raw
1{ 2 lib, 3 callPackage, 4 stdenvAdapters, 5 buildPackages, 6 targetPackages, 7 stdenv, 8 pkgs, 9 recurseIntoAttrs, 10 # This is the default binutils, but with *this* version of LLD rather 11 # than the default LLVM version's, if LLD is the choice. We use these for 12 # the `useLLVM` bootstrapping below. 13 bootBintoolsNoLibc ? if stdenv.targetPlatform.linker == "lld" then null else pkgs.bintoolsNoLibc, 14 bootBintools ? if stdenv.targetPlatform.linker == "lld" then null else pkgs.bintools, 15 llvmVersions ? { }, 16 patchesFn ? lib.id, 17 # Allows passthrough to packages via newScope in ./common/default.nix. 18 # This makes it possible to do 19 # `(llvmPackages.override { <someLlvmDependency> = bar; }).clang` and get 20 # an llvmPackages whose packages are overridden in an internally consistent way. 21 ... 22}@packageSetArgs: 23let 24 versions = { 25 "18.1.8".officialRelease.sha256 = "sha256-iiZKMRo/WxJaBXct9GdAcAT3cz9d9pnAcO1mmR6oPNE="; 26 "19.1.7".officialRelease.sha256 = "sha256-cZAB5vZjeTsXt9QHbP5xluWNQnAHByHtHnAhVDV0E6I="; 27 "20.1.8".officialRelease.sha256 = "sha256-ysyB/EYxi2qE9fD5x/F2zI4vjn8UDoo1Z9ukiIrjFGw="; 28 "21.1.1".officialRelease.sha256 = "sha256-IB9Z3bIMwfgw2W2Vxo89CmtCM9DfOyV2Ei64nqgHrgc="; 29 "22.0.0-git".gitRelease = { 30 rev = "cac0635ee9e947b5f90130df2f471aa4b722e04b"; 31 rev-version = "22.0.0-unstable-2025-09-28"; 32 sha256 = "sha256-wOhLGRYbkJOM6uglKXWZ7/94w/Fi3K2tlyPWdOVsCvM="; 33 }; 34 } 35 // llvmVersions; 36 37 mkPackage = 38 { 39 name ? null, 40 officialRelease ? null, 41 gitRelease ? null, 42 monorepoSrc ? null, 43 version ? null, 44 }@args: 45 let 46 inherit 47 (import ./common/common-let.nix { 48 inherit lib; 49 inherit gitRelease officialRelease version; 50 }) 51 releaseInfo 52 ; 53 inherit (releaseInfo) release_version; 54 attrName = 55 args.name or (if (gitRelease != null) then "git" else lib.versions.major release_version); 56 in 57 lib.nameValuePair attrName ( 58 recurseIntoAttrs ( 59 callPackage ./common ( 60 { 61 inherit (stdenvAdapters) overrideCC; 62 buildLlvmTools = buildPackages."llvmPackages_${attrName}".tools; 63 targetLlvmLibraries = 64 # Allow overriding targetLlvmLibraries; this enables custom runtime builds. 65 packageSetArgs.targetLlvmLibraries or targetPackages."llvmPackages_${attrName}".libraries 66 or llvmPackages."${attrName}".libraries; 67 targetLlvm = targetPackages."llvmPackages_${attrName}".llvm or llvmPackages."${attrName}".llvm; 68 inherit 69 officialRelease 70 gitRelease 71 monorepoSrc 72 version 73 patchesFn 74 ; 75 } 76 // packageSetArgs # Allow overrides. 77 ) 78 ) 79 ); 80 81 llvmPackages = lib.mapAttrs' (version: args: mkPackage (args // { inherit version; })) versions; 82in 83llvmPackages // { inherit mkPackage versions; }