Rollup merge of #75376 - tmiasko:cmake-system-name, r=Mark-Simulacrum
Set CMAKE_SYSTEM_NAME when cross-compiling Configure CMAKE_SYSTEM_NAME when cross-compiling in `configure_cmake`, to tell CMake about target system. Previously this was done only for LLVM step and now applies more generally to steps using cmake. Helps with #74576.
This commit is contained in:
commit
29b6b5feaa
@ -282,14 +282,6 @@ impl Step for Llvm {
|
||||
"LLVM_CONFIG_PATH",
|
||||
host_bin.join("llvm-config").with_extension(EXE_EXTENSION),
|
||||
);
|
||||
|
||||
if target.contains("netbsd") {
|
||||
cfg.define("CMAKE_SYSTEM_NAME", "NetBSD");
|
||||
} else if target.contains("freebsd") {
|
||||
cfg.define("CMAKE_SYSTEM_NAME", "FreeBSD");
|
||||
} else if target.contains("windows") {
|
||||
cfg.define("CMAKE_SYSTEM_NAME", "Windows");
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(ref suffix) = builder.config.llvm_version_suffix {
|
||||
@ -378,6 +370,22 @@ fn configure_cmake(
|
||||
}
|
||||
cfg.target(&target.triple).host(&builder.config.build.triple);
|
||||
|
||||
if target != builder.config.build {
|
||||
if target.contains("netbsd") {
|
||||
cfg.define("CMAKE_SYSTEM_NAME", "NetBSD");
|
||||
} else if target.contains("freebsd") {
|
||||
cfg.define("CMAKE_SYSTEM_NAME", "FreeBSD");
|
||||
} else if target.contains("windows") {
|
||||
cfg.define("CMAKE_SYSTEM_NAME", "Windows");
|
||||
}
|
||||
// When cross-compiling we should also set CMAKE_SYSTEM_VERSION, but in
|
||||
// that case like CMake we cannot easily determine system version either.
|
||||
//
|
||||
// Since, the LLVM itself makes rather limited use of version checks in
|
||||
// CMakeFiles (and then only in tests), and so far no issues have been
|
||||
// reported, the system version is currently left unset.
|
||||
}
|
||||
|
||||
let sanitize_cc = |cc: &Path| {
|
||||
if target.contains("msvc") {
|
||||
OsString::from(cc.to_str().unwrap().replace("\\", "/"))
|
||||
|
Loading…
Reference in New Issue
Block a user