about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlan Egerton <eggyal@gmail.com>2023-03-15 14:56:53 +0000
committerAlan Egerton <eggyal@gmail.com>2023-03-15 14:57:59 +0000
commitd10b113b355a49aa2bb1552e96c48b19b7846c27 (patch)
tree2f4203d1781ba494b8140888c7b5df631db0f14b
parente4b9f86054c581d931f8bad0c87523c53e1e8e3f (diff)
downloadrust-d10b113b355a49aa2bb1552e96c48b19b7846c27.tar.gz
rust-d10b113b355a49aa2bb1552e96c48b19b7846c27.zip
Set CMAKE_SYSTEM_NAME for Linux targets
When bootstrap compiles native dependencies like LLVM, it should set
CMAKE_SYSTEM_NAME for the target system; otherwise cmake may not
identify that it is cross-compiling.

In particular, when building a Linux rustc on a macOS host, cmake was
including `-isysroot /path/to/macOS.sdk` options that caused things to
break.  By setting `CMAKE_SYSTEM_NAME=Linux` when building for Linux
targets, the macOS SDK is no longer passed as sysroot to the compiler.
-rw-r--r--src/bootstrap/native.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
index 040e36ea5f8..388febdfed6 100644
--- a/src/bootstrap/native.rs
+++ b/src/bootstrap/native.rs
@@ -570,6 +570,8 @@ fn configure_cmake(
             cfg.define("CMAKE_SYSTEM_NAME", "Haiku");
         } else if target.contains("solaris") || target.contains("illumos") {
             cfg.define("CMAKE_SYSTEM_NAME", "SunOS");
+        } else if target.contains("linux") {
+            cfg.define("CMAKE_SYSTEM_NAME", "Linux");
         }
         // When cross-compiling we should also set CMAKE_SYSTEM_VERSION, but in
         // that case like CMake we cannot easily determine system version either.