mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-18 13:23:33 +08:00
Build macOS notification bridge for the target arch
The macOS notification bridge is compiled by build.rs outside Cargo's Rust target handling. On Apple Silicon, clang defaulted macos_notifications.o to arm64 even when Cargo was building x86_64, so the x64 release job ignored the object and missed the exported notification symbols. Constraint: The ObjC bridge is linked manually through cargo:rustc-link-arg Constraint: Release workflow builds both aarch64-apple-darwin and x86_64-apple-darwin from macOS runners Rejected: Rely on clang default architecture | Apple Silicon defaults arm64 and breaks x86_64 linking Confidence: high Scope-risk: narrow Directive: Keep native ObjC bridge compilation aligned with Cargo TARGET when adding platform bridge files Tested: cargo fmt --check Tested: git diff --check Tested: cargo check --target aarch64-apple-darwin Tested: cargo build --target x86_64-apple-darwin --release Tested: file target/x86_64-apple-darwin/release/.../macos_notifications.o reports Mach-O 64-bit object x86_64 Not-tested: Full GitHub release workflow after retag before pushing
This commit is contained in:
parent
47e41d68e3
commit
97da3ae180
@ -4,15 +4,24 @@ fn main() {
|
||||
use std::{env, path::PathBuf, process::Command};
|
||||
|
||||
let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR is set by Cargo"));
|
||||
let target = env::var("TARGET").expect("TARGET is set by Cargo");
|
||||
let arch = match target.as_str() {
|
||||
"aarch64-apple-darwin" => "arm64",
|
||||
"x86_64-apple-darwin" => "x86_64",
|
||||
_ => panic!("unsupported macOS notification bridge target: {target}"),
|
||||
};
|
||||
let object_path = out_dir.join("macos_notifications.o");
|
||||
let source_path = PathBuf::from("src/macos_notifications.m");
|
||||
|
||||
println!("cargo:rerun-if-changed={}", source_path.display());
|
||||
println!("cargo:rerun-if-env-changed=TARGET");
|
||||
|
||||
let status = Command::new("clang")
|
||||
.args([
|
||||
"-fobjc-arc",
|
||||
"-c",
|
||||
"-arch",
|
||||
arch,
|
||||
source_path
|
||||
.to_str()
|
||||
.expect("notification bridge path is UTF-8"),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user