Add test for Apple's -weak_framework linker argument
This commit is contained in:
parent
a47d3909a7
commit
ec5c8fec6c
@ -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() {}
|
8
tests/ui/linkage-attr/framework.omit.stderr
Normal file
8
tests/ui/linkage-attr/framework.omit.stderr
Normal 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
|
30
tests/ui/linkage-attr/framework.rs
Normal file
30
tests/ui/linkage-attr/framework.rs
Normal 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();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user