about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMads Marquart <mads@marquart.dk>2024-11-14 17:43:52 +0100
committerMads Marquart <mads@marquart.dk>2024-11-22 20:46:05 +0100
commit431c500c6071008a00b63db1936af8516b5863ef (patch)
treebfeb352e073b7dcb9168a599a0ef992486e4406a
parenta47555110cf09b3ed59811d9b02235443e76a595 (diff)
downloadrust-431c500c6071008a00b63db1936af8516b5863ef.tar.gz
rust-431c500c6071008a00b63db1936af8516b5863ef.zip
Print env var in --print=deployment-target
The deployment target environment variable is OS-specific, and if you're
in a place where you're asking `rustc` for the deployment target, you're
likely to also wanna know the environment variable.
-rw-r--r--compiler/rustc_codegen_ssa/src/back/apple.rs2
-rw-r--r--compiler/rustc_driver_impl/src/lib.rs5
-rw-r--r--tests/run-make/apple-deployment-target/rmake.rs34
-rw-r--r--tests/run-make/apple-sdk-version/rmake.rs3
-rw-r--r--tests/ui/print-request/macos-target.rs1
-rw-r--r--tests/ui/print-request/macos-target.stdout2
6 files changed, 29 insertions, 18 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/apple.rs b/compiler/rustc_codegen_ssa/src/back/apple.rs
index 93d90cd16b2..d9c5c3e5af9 100644
--- a/compiler/rustc_codegen_ssa/src/back/apple.rs
+++ b/compiler/rustc_codegen_ssa/src/back/apple.rs
@@ -97,7 +97,7 @@ fn minimum_deployment_target(target: &Target) -> OSVersion {
 }
 
 /// Name of the environment variable used to fetch the deployment target on the given OS.
-fn deployment_target_env_var(os: &str) -> &'static str {
+pub fn deployment_target_env_var(os: &str) -> &'static str {
     match os {
         "macos" => "MACOSX_DEPLOYMENT_TARGET",
         "ios" => "IPHONEOS_DEPLOYMENT_TARGET",
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs
index c270ce16726..6d8a321536b 100644
--- a/compiler/rustc_driver_impl/src/lib.rs
+++ b/compiler/rustc_driver_impl/src/lib.rs
@@ -875,8 +875,9 @@ fn print_crate_info(
             DeploymentTarget => {
                 if sess.target.is_like_osx {
                     println_info!(
-                        "deployment_target={}",
-                        apple::pretty_version(apple::deployment_target(sess))
+                        "{}={}",
+                        apple::deployment_target_env_var(&sess.target.os),
+                        apple::pretty_version(apple::deployment_target(sess)),
                     )
                 } else {
                     #[allow(rustc::diagnostic_outside_of_impl)]
diff --git a/tests/run-make/apple-deployment-target/rmake.rs b/tests/run-make/apple-deployment-target/rmake.rs
index fed6d310770..0ae95cb1f4b 100644
--- a/tests/run-make/apple-deployment-target/rmake.rs
+++ b/tests/run-make/apple-deployment-target/rmake.rs
@@ -24,21 +24,31 @@ fn minos(file: &str, version: &str) {
 
 fn main() {
     // These versions should generally be higher than the default versions
-    let (env_var, example_version, higher_example_version) = match apple_os() {
-        "macos" => ("MACOSX_DEPLOYMENT_TARGET", "12.0", "13.0"),
+    let (example_version, higher_example_version) = match apple_os() {
+        "macos" => ("12.0", "13.0"),
         // armv7s-apple-ios and i386-apple-ios only supports iOS 10.0
-        "ios" if target() == "armv7s-apple-ios" || target() == "i386-apple-ios" => {
-            ("IPHONEOS_DEPLOYMENT_TARGET", "10.0", "10.0")
-        }
-        "ios" => ("IPHONEOS_DEPLOYMENT_TARGET", "15.0", "16.0"),
-        "watchos" => ("WATCHOS_DEPLOYMENT_TARGET", "7.0", "9.0"),
-        "tvos" => ("TVOS_DEPLOYMENT_TARGET", "14.0", "15.0"),
-        "visionos" => ("XROS_DEPLOYMENT_TARGET", "1.1", "1.2"),
+        "ios" if target() == "armv7s-apple-ios" || target() == "i386-apple-ios" => ("10.0", "10.0"),
+        "ios" => ("15.0", "16.0"),
+        "watchos" => ("7.0", "9.0"),
+        "tvos" => ("14.0", "15.0"),
+        "visionos" => ("1.1", "1.2"),
         _ => unreachable!(),
     };
-    let default_version =
-        rustc().target(target()).env_remove(env_var).print("deployment-target").run().stdout_utf8();
-    let default_version = default_version.strip_prefix("deployment_target=").unwrap().trim();
+
+    // Remove env vars to get `rustc`'s default
+    let output = rustc()
+        .target(target())
+        .env_remove("MACOSX_DEPLOYMENT_TARGET")
+        .env_remove("IPHONEOS_DEPLOYMENT_TARGET")
+        .env_remove("WATCHOS_DEPLOYMENT_TARGET")
+        .env_remove("TVOS_DEPLOYMENT_TARGET")
+        .env_remove("XROS_DEPLOYMENT_TARGET")
+        .print("deployment-target")
+        .run()
+        .stdout_utf8();
+    let (env_var, default_version) = output.split_once('=').unwrap();
+    let env_var = env_var.trim();
+    let default_version = default_version.trim();
 
     // Test that version makes it to the object file.
     run_in_tmpdir(|| {
diff --git a/tests/run-make/apple-sdk-version/rmake.rs b/tests/run-make/apple-sdk-version/rmake.rs
index 6463ec00403..43e80577204 100644
--- a/tests/run-make/apple-sdk-version/rmake.rs
+++ b/tests/run-make/apple-sdk-version/rmake.rs
@@ -26,8 +26,7 @@ fn main() {
     // Fetch rustc's inferred deployment target.
     let current_deployment_target =
         rustc().target(target()).print("deployment-target").run().stdout_utf8();
-    let current_deployment_target =
-        current_deployment_target.strip_prefix("deployment_target=").unwrap().trim();
+    let current_deployment_target = current_deployment_target.split('=').last().unwrap().trim();
 
     // Fetch current SDK version via. xcrun.
     //
diff --git a/tests/ui/print-request/macos-target.rs b/tests/ui/print-request/macos-target.rs
index 197edd02474..af74babbed4 100644
--- a/tests/ui/print-request/macos-target.rs
+++ b/tests/ui/print-request/macos-target.rs
@@ -1,5 +1,6 @@
 //@ only-apple
 //@ compile-flags: --print deployment-target
+//@ normalize-stdout-test: "\w*_DEPLOYMENT_TARGET" -> "$$OS_DEPLOYMENT_TARGET"
 //@ normalize-stdout-test: "\d+\." -> "$$CURRENT_MAJOR_VERSION."
 //@ normalize-stdout-test: "\d+" -> "$$CURRENT_MINOR_VERSION"
 //@ check-pass
diff --git a/tests/ui/print-request/macos-target.stdout b/tests/ui/print-request/macos-target.stdout
index f55ef568ed6..34ade570969 100644
--- a/tests/ui/print-request/macos-target.stdout
+++ b/tests/ui/print-request/macos-target.stdout
@@ -1 +1 @@
-deployment_target=$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION
+$OS_DEPLOYMENT_TARGET=$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION