{
# stdenv FIXME: Try changing back to this with a new ROCm release https://github.com/NixOS/nixpkgs/issues/271943
gcc12Stdenv,
callPackage,
rocmUpdateScript,
wrapBintoolsWith,
overrideCC,
rocm-device-libs,
rocm-runtime,
rocm-thunk,
clr,
}:
let
## Stage 1 ##
# Projects
llvm = callPackage ./stage-1/llvm.nix {
inherit rocmUpdateScript;
stdenv = gcc12Stdenv;
};
clang-unwrapped = callPackage ./stage-1/clang-unwrapped.nix {
inherit rocmUpdateScript llvm;
lld = callPackage ./stage-1/lld.nix {
# Runtimes
runtimes = callPackage ./stage-1/runtimes.nix {
## Stage 2 ##
# Helpers
bintools-unwrapped = callPackage ./stage-2/bintools-unwrapped.nix { inherit llvm lld; };
bintools = wrapBintoolsWith { bintools = bintools-unwrapped; };
rStdenv = callPackage ./stage-2/rstdenv.nix {
inherit
llvm
clang-unwrapped
lld
runtimes
bintools
;
in
rec {
libc = callPackage ./stage-2/libc.nix {
stdenv = rStdenv;
libunwind = callPackage ./stage-2/libunwind.nix {
libcxxabi = callPackage ./stage-2/libcxxabi.nix {
libcxx = callPackage ./stage-2/libcxx.nix {
compiler-rt = callPackage ./stage-2/compiler-rt.nix {
## Stage 3 ##
clang = callPackage ./stage-3/clang.nix {
libc
libunwind
libcxxabi
libcxx
compiler-rt
rocmClangStdenv = overrideCC gcc12Stdenv clang;
clang-tools-extra = callPackage ./stage-3/clang-tools-extra.nix {
inherit rocmUpdateScript llvm clang-unwrapped;
stdenv = rocmClangStdenv;
libclc = callPackage ./stage-3/libclc.nix {
inherit rocmUpdateScript llvm clang;
lldb = callPackage ./stage-3/lldb.nix {
inherit rocmUpdateScript clang;
mlir = callPackage ./stage-3/mlir.nix {
inherit rocmUpdateScript clr;
polly = callPackage ./stage-3/polly.nix {
flang = callPackage ./stage-3/flang.nix {
inherit rocmUpdateScript clang-unwrapped mlir;
openmp = callPackage ./stage-3/openmp.nix {
rocmUpdateScript
clang
rocm-device-libs
rocm-runtime
rocm-thunk
pstl = callPackage ./stage-3/pstl.nix {
}