bootstrap: Define CMake platform if DragonFly.

CMAKE_SYSTEM_NAME is defined on a cross build if the target is
recognized.  Without this explicit definition cmake will assume that
we're building for the host platform which can bring in unwanted
compiler and linker flags.

Also, add a warning on cross builds with unknown target to aid in
cross builds for future platforms.
This commit is contained in:
Alex Zepeda 2023-07-22 04:04:53 -07:00
parent 0308df23e6
commit a0538db826
2 changed files with 8 additions and 1 deletions

View File

@ -1,4 +1,4 @@
Change this file to make users of the `download-ci-llvm` configuration download Change this file to make users of the `download-ci-llvm` configuration download
a new version of LLVM from CI, even if the LLVM submodule hasnt changed. a new version of LLVM from CI, even if the LLVM submodule hasnt changed.
Last change is for: https://github.com/rust-lang/rust/pull/112931 Last change is for: https://github.com/rust-lang/rust/pull/113996

View File

@ -559,6 +559,8 @@ fn configure_cmake(
if target.contains("netbsd") { if target.contains("netbsd") {
cfg.define("CMAKE_SYSTEM_NAME", "NetBSD"); cfg.define("CMAKE_SYSTEM_NAME", "NetBSD");
} else if target.contains("dragonfly") {
cfg.define("CMAKE_SYSTEM_NAME", "DragonFly");
} else if target.contains("freebsd") { } else if target.contains("freebsd") {
cfg.define("CMAKE_SYSTEM_NAME", "FreeBSD"); cfg.define("CMAKE_SYSTEM_NAME", "FreeBSD");
} else if target.contains("windows") { } else if target.contains("windows") {
@ -569,7 +571,12 @@ fn configure_cmake(
cfg.define("CMAKE_SYSTEM_NAME", "SunOS"); cfg.define("CMAKE_SYSTEM_NAME", "SunOS");
} else if target.contains("linux") { } else if target.contains("linux") {
cfg.define("CMAKE_SYSTEM_NAME", "Linux"); cfg.define("CMAKE_SYSTEM_NAME", "Linux");
} else {
builder.info(
"could not determine CMAKE_SYSTEM_NAME from the target `{target}`, build may fail",
);
} }
// When cross-compiling we should also set CMAKE_SYSTEM_VERSION, but in // When cross-compiling we should also set CMAKE_SYSTEM_VERSION, but in
// that case like CMake we cannot easily determine system version either. // that case like CMake we cannot easily determine system version either.
// //