From: Tomasz Miąsko Date: Thu, 13 Aug 2020 00:00:00 +0000 (+0000) Subject: Set CMAKE_SYSTEM_NAME when cross-compiling X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=91f87bc9bc29461513aaa6252905a7ac0ac303e9;p=rust.git 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. --- diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index 48b2cc24d4c..e1e14893b9a 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -282,14 +282,6 @@ fn run(self, builder: &Builder<'_>) -> PathBuf { "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("\\", "/"))