Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate macos-fat-archive, manual-link and archive-duplicate-names run-make tests to rmake #127825

Merged
merged 3 commits into from
Jul 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions src/tools/tidy/src/allowed_run_make_makefiles.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
run-make/archive-duplicate-names/Makefile
run-make/branch-protection-check-IBT/Makefile
run-make/c-dynamic-dylib/Makefile
run-make/c-dynamic-rlib/Makefile
Expand Down Expand Up @@ -72,8 +71,6 @@ run-make/lto-linkage-used-attr/Makefile
run-make/lto-no-link-whole-rlib/Makefile
run-make/lto-smoke-c/Makefile
run-make/macos-deployment-target/Makefile
run-make/macos-fat-archive/Makefile
run-make/manual-link/Makefile
run-make/min-global-align/Makefile
run-make/missing-crate-dependency/Makefile
run-make/native-link-modifier-bundle/Makefile
Expand Down
16 changes: 0 additions & 16 deletions tests/run-make/archive-duplicate-names/Makefile

This file was deleted.

37 changes: 37 additions & 0 deletions tests/run-make/archive-duplicate-names/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// When two object archives with the same filename are present, an iterator is supposed to
// inspect each object, recognize the duplication and extract each one to a different directory.
// This test checks that this duplicate handling behaviour has not been broken.
// See https://github.com/rust-lang/rust/pull/24439

//@ ignore-cross-compile
// Reason: the compiled binary is executed

use run_make_support::{cc, is_msvc, llvm_ar, rfs, run, rustc};

fn main() {
rfs::create_dir("a");
rfs::create_dir("b");
compile_obj_force_foo("a", "foo");
compile_obj_force_foo("b", "bar");
let mut ar = llvm_ar();
ar.obj_to_ar().arg("libfoo.a");
if is_msvc() {
ar.arg("a/foo.obj").arg("b/foo.obj").run();
} else {
ar.arg("a/foo.o").arg("b/foo.o").run();
}
rustc().input("foo.rs").run();
rustc().input("bar.rs").run();
run("bar");
}

#[track_caller]
pub fn compile_obj_force_foo(dir: &str, lib_name: &str) {
let obj_file = if is_msvc() { format!("{dir}/foo") } else { format!("{dir}/foo.o") };
let src = format!("{lib_name}.c");
if is_msvc() {
cc().arg("-c").out_exe(&obj_file).input(src).run();
} else {
cc().arg("-v").arg("-c").out_exe(&obj_file).input(src).run();
};
}
10 changes: 0 additions & 10 deletions tests/run-make/macos-fat-archive/Makefile

This file was deleted.

20 changes: 20 additions & 0 deletions tests/run-make/macos-fat-archive/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// macOS (and iOS) has a concept of universal (fat) binaries which contain code for multiple CPU
// architectures in the same file. Apple is migrating from x86_64 to aarch64 CPUs,
// so for the next few years it will be important for macOS developers to
// build "fat" binaries (executables and cdylibs).

// Rustc used to be unable to handle these special libraries, which was fixed in #98736. If
// compilation in this test is successful, the native fat library was successfully linked to.
// See https://github.com/rust-lang/rust/issues/55235

//@ only-apple

use run_make_support::{cc, llvm_ar, rustc};

fn main() {
cc().args(&["-arch", "arm64", "-arch", "x86_64", "native-library.c", "-c"])
.out_exe("native-library.o")
.run();
llvm_ar().obj_to_ar().output_input("libnative-library.a", "native-library.o").run();
rustc().input("lib.rs").crate_type("lib").arg("-lstatic=native-library").run();
}
7 changes: 0 additions & 7 deletions tests/run-make/manual-link/Makefile

This file was deleted.

16 changes: 16 additions & 0 deletions tests/run-make/manual-link/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// A smoke test for the `-l` command line rustc flag, which manually links to the selected
// library. Useful for native libraries, this is roughly equivalent to `#[link]` in Rust code.
// If compilation succeeds, the flag successfully linked the native library.
// See https://github.com/rust-lang/rust/pull/18470

//@ ignore-cross-compile
// Reason: the compiled binary is executed

use run_make_support::{build_native_static_lib, run, rustc};

fn main() {
build_native_static_lib("bar");
rustc().input("foo.rs").arg("-lstatic=bar").run();
rustc().input("main.rs").run();
run("main");
}
Loading