Repository: rust
Issue: build and target aren't distinguished during llvm building
Labels: A-cross,T-bootstrap,C-bug

<!--
Thank you for filing a bug report! 🐛 Please provide a short summary of the bug,
along with any information you feel relevant to replicating the bug.
-->

Cross-compiling rust 1.82.0 itself fails with custom LLVM used on the build and vendored llvm on the host.

```
$ ./x.py build -j30 -v
...
-- Installing: /root/la64_rust/rustc-1.82.0-src/build/loongarch64-unknown-linux-musl/llvm/lib/cmake/llvm/LLVMConfigExtensions.cmake
cargo:root=/root/la64_rust/rustc-1.82.0-src/build/loongarch64-unknown-linux-musl/llvm
running: "/root/la64_rust/rustc-1.82.0-src/build/x86_64-unknown-linux-musl/llvm/bin/llvm-config" "--version" (failure_mode=Exit) (created at src/core/build_steps/llvm.rs:508:17, executed at src/core/build_steps/llvm.rs:508:60)


Command "/root/la64_rust/rustc-1.82.0-src/build/x86_64-unknown-linux-musl/llvm/bin/llvm-config" "--version" (failure_mode=Exit) did not execute successfully.
It was not possible to execute the command: Os { code: 2, kind: NotFound, message: "No such file or directory" }

Traceback (most recent call last):
  File "/root/la64_rust/rustc-1.82.0-src/./x.py", line 50, in <module>
    bootstrap.main()
  File "/root/la64_rust/rustc-1.82.0-src/src/bootstrap/bootstrap.py", line 1208, in main
    bootstrap(args)
  File "/root/la64_rust/rustc-1.82.0-src/src/bootstrap/bootstrap.py", line 1184, in bootstrap
    run(args, env=env, verbose=build.verbose, is_bootstrap=True)
  File "/root/la64_rust/rustc-1.82.0-src/src/bootstrap/bootstrap.py", line 195, in run
    raise RuntimeError(err)
RuntimeError: failed to run: /root/la64_rust/rustc-1.82.0-src/build/bootstrap/debug/bootstrap build -j30 -v
```

`config.toml` is configured as

```toml
change-id = 129295
profile = "user"

[llvm]
link-shared = true
static-libstdcpp = false
use-libcxx = true
targets = "X86;LoongArch;WebAssembly"

[build]
build = "x86_64-unknown-linux-musl"
host = ["loongarch64-unknown-linux-musl"]
target = ["loongarch64-unknown-linux-musl"]
cargo = "/usr/bin/cargo"
rustc = "/usr/bin/rustc"
rustfmt = "/usr/bin/rustfmt"
locked-deps = true
vendor = true
tools = ["cargo"]
sanitizers = false
profiler = true
# Generating docs fails with the wasm32-* targets
docs = false

[install]
prefix = "/usr"

[rust]
debuginfo-level-std = 2
channel = "stable"
description = "eweOS rust %RUSTVER%"
rpath = false
backtrace-on-ice = true
remap-debuginfo = true
jemalloc = false
llvm-libunwind = "system"
codegen-units-std = 1
deny-warnings = false
lld = false
musl-root = "/usr"

[target.x86_64-unknown-linux-musl]
crt-static = false
llvm-config = "/usr/bin/llvm-config"

[target.loongarch64-unknown-linux-musl]
crt-static = false
cc="clang"
cxx="clang++"
linker="/usr/bin/loongarch64-unknown-linux-musl-clang"
musl-root="/opt/sysroot-loongarch64"
musl-libdir="/opt/sysroot-loongarch64/usr/lib"
```

The error occurs in `src/bootstrap/src/core/build_steps/llvm.rs: find_llvm_lib_name()`[1],

```rust
        let find_llvm_lib_name = |extension| {
            let version =
                command(&res.llvm_config).arg("--version").run_capture_stdout(builder).stdout();
            let major = version.split('.').next().unwrap();


            match &llvm_version_suffix {
                Some(version_suffix) => format!("libLLVM-{major}{version_suffix}.{extension}"),
                None => format!("libLLVM-{major}.{extension}"),
            }
        };
```

which tries to exec `llvm-config` of LLVM built for the build, but we don't acutally build it according to the configuration.

This problematic path is generated in `prebuilt_llvm_config()`[2]

```rust
    let mut llvm_config_ret_dir = builder.llvm_out(builder.config.build);
    llvm_config_ret_dir.push("bin");
    let build_llvm_config = llvm_config_ret_dir.join(exe("llvm-config", builder.config.build));
```


[1]: 
https://github.com/rust-lang/rust/blob/1.82.0/src/bootstrap/src/core/build_steps/llvm.rs#L521-L530
[2]: https://github.com/rust-lang/rust/blob/1.82.0/src/bootstrap/src/core/build_steps/llvm.rs#L118-L120