Add test for Apple's -weak_framework linker argument

This commit is contained in:
Mads Marquart 2024-03-18 23:27:34 +01:00
parent a47d3909a7
commit ec5c8fec6c
3 changed files with 38 additions and 21 deletions

View File

@ -1,21 +0,0 @@
//@ pretty-expanded FIXME #23616
#![feature(rustc_private)]
extern crate libc;
#[cfg(target_os = "macos")]
#[link(name = "CoreFoundation", kind = "framework")]
extern "C" {
fn CFRunLoopGetTypeID() -> libc::c_ulong;
}
#[cfg(target_os = "macos")]
pub fn main() {
unsafe {
CFRunLoopGetTypeID();
}
}
#[cfg(not(target_os = "macos"))]
pub fn main() {}

View File

@ -0,0 +1,8 @@
error: linking with `cc` failed: exit status: 1
|
ld: Undefined symbols:
_CFRunLoopGetTypeID, referenced from:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: aborting due to 1 previous error

View File

@ -0,0 +1,30 @@
// Check that linking frameworks on Apple platforms works.
//@ only-macos
//@ revisions: omit link weak both
//@ [omit]build-fail
//@ [link]run-pass
//@ [weak]run-pass
//@ [both]run-pass
// The linker's exact error output changes between Xcode versions.
//@ compare-output-lines-by-subset
//@ normalize-stderr-test: "Undefined symbols for architecture .*" -> "ld: Undefined symbols:"
//@ normalize-stderr-test: "._CFRunLoopGetTypeID.," -> "_CFRunLoopGetTypeID,"
#![cfg_attr(any(weak, both), feature(link_arg_attribute))]
#[cfg_attr(any(link, both), link(name = "CoreFoundation", kind = "framework"))]
#[cfg_attr(
any(weak, both),
link(name = "-weak_framework", kind = "link-arg", modifiers = "+verbatim"),
link(name = "CoreFoundation", kind = "link-arg", modifiers = "+verbatim")
)]
extern "C" {
fn CFRunLoopGetTypeID() -> core::ffi::c_ulong;
}
pub fn main() {
unsafe {
CFRunLoopGetTypeID();
}
}