Skip to content
/ rust Public
forked from rust-lang/rust

Commit

Permalink
Rollup merge of rust-lang#125773 - GuillaumeGomez:migrate-run-make-cd…
Browse files Browse the repository at this point in the history
…ylib, r=jieyouxu

Migrate run make cdylib

Part of rust-lang#121876.

r? `@jieyouxu`
  • Loading branch information
jhpratt committed Jun 1, 2024
2 parents 59d076e + c0646f7 commit babb8db
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 24 deletions.
7 changes: 7 additions & 0 deletions src/tools/run-make-support/src/cc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,13 @@ impl Cc {
self
}

/// Specify path of the output binary.
pub fn output<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
self.cmd.arg("-o");
self.cmd.arg(path.as_ref());
self
}

/// Get the [`Output`][::std::process::Output] of the finished process.
pub fn command_output(&mut self) -> ::std::process::Output {
self.cmd.output().expect("failed to get output of finished process")
Expand Down
1 change: 0 additions & 1 deletion src/tools/tidy/src/allowed_run_make_makefiles.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ run-make/c-unwind-abi-catch-panic/Makefile
run-make/cat-and-grep-sanity-check/Makefile
run-make/cdylib-dylib-linkage/Makefile
run-make/cdylib-fewer-symbols/Makefile
run-make/cdylib/Makefile
run-make/codegen-options-parsing/Makefile
run-make/comment-section/Makefile
run-make/compiler-lookup-paths-2/Makefile
Expand Down
23 changes: 0 additions & 23 deletions tests/run-make/cdylib/Makefile

This file was deleted.

39 changes: 39 additions & 0 deletions tests/run-make/cdylib/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// This test tries to check that basic cdylib libraries can be compiled and linked successfully
// with C code, that the cdylib itself can depend on another rlib, and that the library can be built
// with LTO.
//
// - `bar.rs` is a rlib
// - `foo.rs` is a cdylib that relies on an extern crate `bar` and defines two `extern "C"`
// functions:
// - `foo()` which calls `bar::bar()`.
// - `bar()` which implements basic addition.

//@ ignore-cross-compile

use std::fs::remove_file;

use run_make_support::{cc, dynamic_lib, is_msvc, run, rustc, tmp_dir};

fn main() {
rustc().input("bar.rs").run();
rustc().input("foo.rs").run();

if is_msvc() {
cc().input("foo.c")
.arg(tmp_dir().join("foo.dll.lib"))
.out_exe("foo")
.run();
} else {
cc().input("foo.c")
.arg("-lfoo")
.output(tmp_dir().join("foo"))
.library_search_path(tmp_dir())
.run();
}

run("foo");
remove_file(dynamic_lib("foo")).unwrap();

rustc().input("foo.rs").arg("-Clto").run();
run("foo");
}

0 comments on commit babb8db

Please sign in to comment.