lol
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 23.05-pre 129 lines 4.0 kB view raw
1{ lowPrio, newScope, pkgs, lib, stdenv, cmake, gccForLibs 2, libxml2, python3, isl, fetchurl, overrideCC, wrapCCWith 3, buildLlvmTools # tools, but from the previous stage, for cross 4, targetLlvmLibraries # libraries, but from the next stage, for cross 5}: 6 7let 8 release_version = "6.0.1"; 9 version = release_version; # differentiating these is important for rc's 10 targetConfig = stdenv.targetPlatform.config; 11 12 fetch = name: sha256: fetchurl { 13 url = "https://releases.llvm.org/${release_version}/${name}-${version}.src.tar.xz"; 14 inherit sha256; 15 }; 16 17 clang-tools-extra_src = fetch "clang-tools-extra" "1w8ml7fyn4vyxmy59n2qm4r1k1kgwgwkaldp6m45fdv4g0kkfbhd"; 18 19 llvm_meta = { 20 license = lib.licenses.ncsa; 21 maintainers = with lib.maintainers; [ lovek323 raskin dtzWill primeos ]; 22 platforms = lib.platforms.all; 23 }; 24 25 tools = lib.makeExtensible (tools: let 26 callPackage = newScope (tools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch buildLlvmTools; }); 27 mkExtraBuildCommands = cc: '' 28 rsrc="$out/resource-root" 29 mkdir "$rsrc" 30 ln -s "${cc.lib}/lib/clang/${release_version}/include" "$rsrc" 31 echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags 32 ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib" 33 ''; 34 35 in { 36 37 libllvm = callPackage ./llvm { 38 inherit llvm_meta; 39 }; 40 41 # `llvm` historically had the binaries. When choosing an output explicitly, 42 # we need to reintroduce `outputSpecified` to get the expected behavior e.g. of lib.get* 43 llvm = tools.libllvm.out // { outputSpecified = false; }; 44 45 libllvm-polly = callPackage ./llvm { 46 inherit llvm_meta; 47 enablePolly = true; 48 }; 49 50 llvm-polly = tools.libllvm-polly.lib // { outputSpecified = false; }; 51 52 libclang = callPackage ./clang { 53 inherit clang-tools-extra_src llvm_meta; 54 }; 55 56 clang-unwrapped = tools.libclang.out // { outputSpecified = false; }; 57 58 llvm-manpages = lowPrio (tools.libllvm.override { 59 enableManpages = true; 60 enableSharedLibraries = false; 61 python3 = pkgs.python3; # don't use python-boot 62 }); 63 64 clang-manpages = lowPrio (tools.libclang.override { 65 enableManpages = true; 66 python3 = pkgs.python3; # don't use python-boot 67 }); 68 69 # pick clang appropriate for package set we are targeting 70 clang = 71 /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM 72 else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang 73 else tools.libcxxClang; 74 75 libstdcxxClang = wrapCCWith rec { 76 cc = tools.clang-unwrapped; 77 # libstdcxx is taken from gcc in an ad-hoc way in cc-wrapper. 78 libcxx = null; 79 extraPackages = [ 80 targetLlvmLibraries.compiler-rt 81 ]; 82 extraBuildCommands = mkExtraBuildCommands cc; 83 }; 84 85 libcxxClang = wrapCCWith rec { 86 cc = tools.clang-unwrapped; 87 libcxx = targetLlvmLibraries.libcxx; 88 extraPackages = [ 89 targetLlvmLibraries.libcxxabi 90 targetLlvmLibraries.compiler-rt 91 ]; 92 extraBuildCommands = mkExtraBuildCommands cc; 93 }; 94 95 lld = callPackage ./lld { 96 inherit llvm_meta; 97 }; 98 99 lldb = callPackage ./lldb { 100 inherit llvm_meta; 101 }; 102 }); 103 104 libraries = lib.makeExtensible (libraries: let 105 callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python3 isl release_version version fetch; }); 106 in { 107 108 compiler-rt = callPackage ./compiler-rt { 109 inherit llvm_meta; 110 }; 111 112 stdenv = overrideCC stdenv buildLlvmTools.clang; 113 114 libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang; 115 116 libcxx = callPackage ./libcxx { 117 inherit llvm_meta; 118 }; 119 120 libcxxabi = callPackage ./libcxxabi { 121 inherit llvm_meta; 122 }; 123 124 openmp = callPackage ./openmp { 125 inherit llvm_meta; 126 }; 127 }); 128 129in { inherit tools libraries release_version; } // libraries // tools