Skip to content

Commit 2316b76

Browse files
committed
Auto merge of rust-lang#138784 - madsmtm:bootstrap-bump-cc-cmake, r=<try>
Bump boostrap `cc` to 1.2.17 and `cmake` to 0.1.54 The `cc` version in `bootstrap` was reverted down to 1.1.22 in rust-lang#137460 (previously at 1.2.0). The offending issue has since then been resolved in rust-lang/cc-rs#1413, and a new version of `cc` has been released in rust-lang/cc-rs#1435, so let's try to update the version again. See [the changelog](https://github.com/rust-lang/cc-rs/blob/d9dd20e376368c7535f6ef89b809098f5f203c1a/CHANGELOG.md) for exact details on what has changed here. r? jieyouxu who tried this last in rust-lang#137022. `@rustbot` label T-bootstrap try-job: dist-apple-various
2 parents 90f5eab + da19f9e commit 2316b76

File tree

3 files changed

+38
-9
lines changed

3 files changed

+38
-9
lines changed

src/bootstrap/Cargo.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ dependencies = [
8888

8989
[[package]]
9090
name = "cc"
91-
version = "1.1.22"
91+
version = "1.2.17"
9292
source = "registry+https://github.com/rust-lang/crates.io-index"
93-
checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0"
93+
checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
9494
dependencies = [
9595
"shlex",
9696
]
@@ -150,9 +150,9 @@ checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
150150

151151
[[package]]
152152
name = "cmake"
153-
version = "0.1.48"
153+
version = "0.1.54"
154154
source = "registry+https://github.com/rust-lang/crates.io-index"
155-
checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a"
155+
checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0"
156156
dependencies = [
157157
"cc",
158158
]

src/bootstrap/Cargo.toml

+2-4
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,8 @@ test = false
3232
# Most of the time updating these dependencies requires modifications to the
3333
# bootstrap codebase(e.g., https://github.com/rust-lang/rust/issues/124565);
3434
# otherwise, some targets will fail. That's why these dependencies are explicitly pinned.
35-
#
36-
# Do not upgrade this crate unless https://github.com/rust-lang/cc-rs/issues/1317 is fixed.
37-
cc = "=1.1.22"
38-
cmake = "=0.1.48"
35+
cc = "=1.2.17"
36+
cmake = "=0.1.54"
3937

4038
build_helper = { path = "../build_helper" }
4139
clap = { version = "4.4", default-features = false, features = ["std", "usage", "help", "derive", "error-context"] }

src/bootstrap/src/core/build_steps/llvm.rs

+32-1
Original file line numberDiff line numberDiff line change
@@ -645,10 +645,17 @@ fn configure_cmake(
645645
if !builder.is_builder_target(target) {
646646
cfg.define("CMAKE_CROSSCOMPILING", "True");
647647

648+
// NOTE: Ideally, we wouldn't have to do this, and `cmake-rs` would just handle it for us.
649+
// But it currently determines this based on the `CARGO_CFG_TARGET_OS` environment variable,
650+
// which isn't set when compiling outside `build.rs` (like bootstrap is).
651+
//
652+
// So for now, we define `CMAKE_SYSTEM_NAME` ourselves, to panicking in `cmake-rs`.
648653
if target.contains("netbsd") {
649654
cfg.define("CMAKE_SYSTEM_NAME", "NetBSD");
650655
} else if target.contains("dragonfly") {
651656
cfg.define("CMAKE_SYSTEM_NAME", "DragonFly");
657+
} else if target.contains("openbsd") {
658+
cfg.define("CMAKE_SYSTEM_NAME", "OpenBSD");
652659
} else if target.contains("freebsd") {
653660
cfg.define("CMAKE_SYSTEM_NAME", "FreeBSD");
654661
} else if target.is_windows() {
@@ -659,10 +666,34 @@ fn configure_cmake(
659666
cfg.define("CMAKE_SYSTEM_NAME", "SunOS");
660667
} else if target.contains("linux") {
661668
cfg.define("CMAKE_SYSTEM_NAME", "Linux");
669+
} else if target.contains("darwin") {
670+
// macOS
671+
cfg.define("CMAKE_SYSTEM_NAME", "Darwin");
672+
} else if target.contains("ios") {
673+
// FIXME(madsmtm): compiler-rt's CMake setup is kinda weird, it seems like they do
674+
// version testing etc. for macOS (i.e. Darwin), even while building for iOS?
675+
//
676+
// So for now we set it to "Darwin", but ideally this should be set to "iOS".
677+
cfg.define("CMAKE_SYSTEM_NAME", "Darwin");
678+
} else if target.contains("tvos") {
679+
// FIXME(madsmtm): See above, we should be using "tvOS" here.
680+
cfg.define("CMAKE_SYSTEM_NAME", "Darwin");
681+
} else if target.contains("visionos") {
682+
// FIXME(madsmtm): See above, we should be using "visionOS" here.
683+
cfg.define("CMAKE_SYSTEM_NAME", "Darwin");
684+
} else if target.contains("watchos") {
685+
// FIXME(madsmtm): See above, we should be using "watchOS" here.
686+
cfg.define("CMAKE_SYSTEM_NAME", "Darwin");
687+
} else if target.contains("none") {
688+
// "none" should be the last branch
689+
cfg.define("CMAKE_SYSTEM_NAME", "Generic");
662690
} else {
663691
builder.info(&format!(
664692
"could not determine CMAKE_SYSTEM_NAME from the target `{target}`, build may fail",
665693
));
694+
// Fallback, set `CMAKE_SYSTEM_NAME` anyhow to avoid the logic `cmake-rs` tries, and
695+
// to avoid CMAKE_SYSTEM_NAME being inferred from the host.
696+
cfg.define("CMAKE_SYSTEM_NAME", "Generic");
666697
}
667698

668699
// When cross-compiling we should also set CMAKE_SYSTEM_VERSION, but in
@@ -672,7 +703,7 @@ fn configure_cmake(
672703
// CMakeFiles (and then only in tests), and so far no issues have been
673704
// reported, the system version is currently left unset.
674705

675-
if target.contains("darwin") {
706+
if target.contains("apple") {
676707
// Make sure that CMake does not build universal binaries on macOS.
677708
// Explicitly specify the one single target architecture.
678709
if target.starts_with("aarch64") {

0 commit comments

Comments
 (0)