1{
2 lib,
3 fetchFromGitHub ? null,
4 release_version ? null,
5 gitRelease ? null,
6 officialRelease ? null,
7 monorepoSrc' ? null,
8 version ? null,
9}@args:
10
11rec {
12 llvm_meta = {
13 license =
14 with lib.licenses;
15 [ ncsa ]
16 ++
17 # Contributions after June 1st, 2024 are only licensed under asl20 and
18 # llvm-exception: https://github.com/llvm/llvm-project/pull/92394
19 lib.optionals (lib.versionAtLeast release_version "19") [
20 asl20
21 llvm-exception
22 ];
23 teams = [ lib.teams.llvm ];
24
25 # See llvm/cmake/config-ix.cmake.
26 platforms =
27 lib.platforms.aarch64
28 ++ lib.platforms.arm
29 ++ lib.platforms.mips
30 ++ lib.platforms.power
31 ++ lib.platforms.s390x
32 ++ lib.platforms.wasi
33 ++ lib.platforms.x86
34 ++ lib.platforms.riscv
35 ++ lib.platforms.m68k
36 ++ lib.platforms.loongarch64;
37
38 identifiers.cpeParts.vendor = "llvm";
39 };
40
41 releaseInfo =
42 if gitRelease != null then
43 rec {
44 original = gitRelease;
45 release_version = args.version or original.version;
46 version = gitRelease.rev-version;
47 }
48 else
49 rec {
50 original = officialRelease;
51 release_version = args.version or original.version;
52 version =
53 if original ? candidate then "${release_version}-${original.candidate}" else release_version;
54 };
55
56 monorepoSrc =
57 if monorepoSrc' != null then
58 monorepoSrc'
59 else
60 let
61 sha256 = releaseInfo.original.sha256;
62 rev = if gitRelease != null then gitRelease.rev else "llvmorg-${releaseInfo.version}";
63 in
64 fetchFromGitHub rec {
65 owner = "llvm";
66 repo = "llvm-project";
67 inherit rev sha256;
68 passthru = { inherit owner repo rev; };
69 };
70
71}