Ensure using otool that framework linking actually happened

This commit is contained in:
Mads Marquart 2023-12-12 05:56:07 +01:00
parent ec5c8fec6c
commit 440fce19a1
7 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,23 @@
# only-macos
#
# Check that linking to a framework actually makes it to the linker.
include ../tools.mk
all:
$(RUSTC) dep-link-framework.rs
$(RUSTC) dep-link-weak-framework.rs
$(RUSTC) empty.rs
otool -L $(TMPDIR)/no-link | $(CGREP) -v CoreFoundation
$(RUSTC) link-framework.rs
otool -L $(TMPDIR)/link-framework | $(CGREP) CoreFoundation | $(CGREP) -v weak
$(RUSTC) link-weak-framework.rs
otool -L $(TMPDIR)/link-weak-framework | $(CGREP) CoreFoundation | $(CGREP) weak
# When linking the framework both normally, and weakly, the weak linking takes preference
$(RUSTC) link-both.rs
otool -L $(TMPDIR)/link-both | $(CGREP) CoreFoundation | $(CGREP) weak

View File

@ -0,0 +1,4 @@
#![crate_type = "rlib"]
#[link(name = "CoreFoundation", kind = "framework")]
extern "C" {}

View File

@ -0,0 +1,6 @@
#![crate_type = "rlib"]
#![feature(link_arg_attribute)]
#[link(name = "-weak_framework", kind = "link-arg", modifiers = "+verbatim")]
#[link(name = "CoreFoundation", kind = "link-arg", modifiers = "+verbatim")]
extern "C" {}

View File

@ -0,0 +1 @@
fn main() {}

View File

@ -0,0 +1,4 @@
extern crate dep_link_framework;
extern crate dep_link_weak_framework;
fn main() {}

View File

@ -0,0 +1,3 @@
extern crate dep_link_framework;
fn main() {}

View File

@ -0,0 +1,3 @@
extern crate dep_link_weak_framework;
fn main() {}