diff --git a/src/lib.rs b/src/lib.rs index 77f1a1db1..2ac24a43e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1840,6 +1840,16 @@ impl Build { .into(), ); } + } else if target.contains("aarch64-apple-tvos") { + if let Some(arch) = + map_darwin_target_from_rust_to_compiler_architecture(target) + { + let deployment_target = + self.apple_deployment_version(AppleOs::TvOs, target, None); + cmd.args.push( + format!("--target={}-apple-tvos{}", arch, deployment_target).into(), + ); + } } else if target.starts_with("riscv64gc-") { cmd.args.push( format!("--target={}", target.replace("riscv64gc", "riscv64")).into(), @@ -2577,6 +2587,8 @@ impl Build { clang.to_string() } else if target.contains("apple-watchos") { clang.to_string() + } else if target.contains("apple-tvos") { + clang.to_string() } else if target.contains("android") { autodetect_android_compiler(&target, &host, gnu, clang) } else if target.contains("cloudabi") { diff --git a/tests/support/mod.rs b/tests/support/mod.rs index 3ec191113..94b51f653 100644 --- a/tests/support/mod.rs +++ b/tests/support/mod.rs @@ -61,6 +61,12 @@ impl Test { t } + pub fn clang() -> Test { + let t = Test::new(); + t.shim("clang").shim("clang++").shim("ar"); + t + } + pub fn shim(&self, name: &str) -> &Test { let name = if name.ends_with(env::consts::EXE_SUFFIX) { name.to_string() diff --git a/tests/test.rs b/tests/test.rs index f712c4368..fc07e6253 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -510,9 +510,9 @@ fn gnu_apple_darwin() { #[cfg(target_os = "macos")] #[test] -fn apple_tvos() { +fn clang_apple_tvos() { for target in &["aarch64-apple-tvos"] { - let test = Test::gnu(); + let test = Test::clang(); test.gcc() .target(&target) .host(&target) @@ -525,9 +525,9 @@ fn apple_tvos() { #[cfg(target_os = "macos")] #[test] -fn apple_tvsimulator() { +fn clang_apple_tvsimulator() { for target in &["x86_64-apple-tvos"] { - let test = Test::gnu(); + let test = Test::clang(); test.gcc() .target(&target) .host(&target)