Skip to content

Commit

Permalink
Move Mach-O platform information to rustc_codegen_ssa::back::apple
Browse files Browse the repository at this point in the history
To align with the general decision to have this sort of information
there instead.

Also use the visionOS values added in newer `object` release.
  • Loading branch information
madsmtm committed Nov 1, 2024
1 parent e123315 commit e75a7dd
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 21 deletions.
16 changes: 16 additions & 0 deletions compiler/rustc_codegen_ssa/src/back/apple.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ use rustc_target::spec::Target;
#[cfg(test)]
mod tests;

pub(super) fn macho_platform(target: &Target) -> u32 {
match (&*target.os, &*target.abi) {
("macos", _) => object::macho::PLATFORM_MACOS,
("ios", "macabi") => object::macho::PLATFORM_MACCATALYST,
("ios", "sim") => object::macho::PLATFORM_IOSSIMULATOR,
("ios", _) => object::macho::PLATFORM_IOS,
("watchos", "sim") => object::macho::PLATFORM_WATCHOSSIMULATOR,
("watchos", _) => object::macho::PLATFORM_WATCHOS,
("tvos", "sim") => object::macho::PLATFORM_TVOSSIMULATOR,
("tvos", _) => object::macho::PLATFORM_TVOS,
("visionos", "sim") => object::macho::PLATFORM_XROSSIMULATOR,
("visionos", _) => object::macho::PLATFORM_XROS,
_ => unreachable!("tried to get Mach-O platform for non-Apple target"),
}
}

/// Deployment target or SDK version.
///
/// The size of the numbers in here are limited by Mach-O's `LC_BUILD_VERSION`.
Expand Down
3 changes: 1 addition & 2 deletions compiler/rustc_codegen_ssa/src/back/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,8 +402,7 @@ fn macho_object_build_version_for_target(sess: &Session) -> object::write::MachO
(major << 16) | (minor << 8) | patch
}

let platform =
rustc_target::spec::current_apple_platform(&sess.target).expect("unknown Apple target OS");
let platform = apple::macho_platform(&sess.target);
let min_os = apple::deployment_target(sess);

let mut build_version = object::write::MachOBuildVersion::default();
Expand Down
19 changes: 1 addition & 18 deletions compiler/rustc_target/src/spec/base/apple/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::env;

use crate::spec::{
Cc, DebuginfoKind, FramePointer, LinkerFlavor, Lld, SplitDebuginfo, StackProbeType, StaticCow,
Target, TargetOptions, cvs,
TargetOptions, cvs,
};

#[cfg(test)]
Expand Down Expand Up @@ -156,23 +156,6 @@ pub(crate) fn base(
(opts, unversioned_llvm_target(os, arch, abi), arch.target_arch())
}

pub fn platform(target: &Target) -> Option<u32> {
Some(match (&*target.os, &*target.abi) {
("macos", _) => object::macho::PLATFORM_MACOS,
("ios", "macabi") => object::macho::PLATFORM_MACCATALYST,
("ios", "sim") => object::macho::PLATFORM_IOSSIMULATOR,
("ios", _) => object::macho::PLATFORM_IOS,
("watchos", "sim") => object::macho::PLATFORM_WATCHOSSIMULATOR,
("watchos", _) => object::macho::PLATFORM_WATCHOS,
("tvos", "sim") => object::macho::PLATFORM_TVOSSIMULATOR,
("tvos", _) => object::macho::PLATFORM_TVOS,
// FIXME: Upgrade to `object-rs` 0.33+ implementation with visionOS platform definition
("visionos", "sim") => 12,
("visionos", _) => 11,
_ => return None,
})
}

/// Generate part of the LLVM target triple.
///
/// See `rustc_codegen_ssa::back::versioned_llvm_target` for the full triple passed to LLVM and
Expand Down
1 change: 0 additions & 1 deletion compiler/rustc_target/src/spec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ pub mod abi;
pub mod crt_objects;

mod base;
pub use base::apple::platform as current_apple_platform;
pub use base::avr_gnu::ef_avr_arch;

/// Linker is called through a C/C++ compiler.
Expand Down

0 comments on commit e75a7dd

Please sign in to comment.