mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-10 22:13:27 +00:00
Migrate run-make/c-link-to-rust-dylib
to rmake.rs
This commit is contained in:
parent
2416f460f8
commit
32933a6869
@ -6,7 +6,6 @@ run-make/bare-outfile/Makefile
|
||||
run-make/branch-protection-check-IBT/Makefile
|
||||
run-make/c-dynamic-dylib/Makefile
|
||||
run-make/c-dynamic-rlib/Makefile
|
||||
run-make/c-link-to-rust-dylib/Makefile
|
||||
run-make/c-static-dylib/Makefile
|
||||
run-make/c-static-rlib/Makefile
|
||||
run-make/c-unwind-abi-catch-lib-panic/Makefile
|
||||
|
@ -1,21 +0,0 @@
|
||||
# This test checks that C linking with Rust does not encounter any errors, with dynamic libraries.
|
||||
# See https://github.com/rust-lang/rust/issues/10434
|
||||
|
||||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all: $(TMPDIR)/$(call BIN,bar)
|
||||
$(call RUN,bar)
|
||||
$(call REMOVE_DYLIBS,foo)
|
||||
$(call FAIL,bar)
|
||||
|
||||
ifdef IS_MSVC
|
||||
$(TMPDIR)/$(call BIN,bar): $(call DYLIB,foo)
|
||||
$(CC) bar.c $(TMPDIR)/foo.dll.lib $(call OUT_EXE,bar)
|
||||
else
|
||||
$(TMPDIR)/$(call BIN,bar): $(call DYLIB,foo)
|
||||
$(CC) bar.c -lfoo -o $(call RUN_BINFILE,bar) -L $(TMPDIR)
|
||||
endif
|
||||
|
||||
$(call DYLIB,foo): foo.rs
|
||||
$(RUSTC) foo.rs
|
41
tests/run-make/c-link-to-rust-dylib/rmake.rs
Normal file
41
tests/run-make/c-link-to-rust-dylib/rmake.rs
Normal file
@ -0,0 +1,41 @@
|
||||
// This test checks that C linking with Rust does not encounter any errors, with dynamic libraries.
|
||||
// See <https://github.com/rust-lang/rust/issues/10434>.
|
||||
|
||||
//@ ignore-cross-compile
|
||||
|
||||
use std::fs::remove_file;
|
||||
|
||||
use run_make_support::{
|
||||
cc, dynamic_lib_extension, is_msvc, read_dir, run, run_fail, rustc, tmp_dir,
|
||||
};
|
||||
|
||||
fn main() {
|
||||
rustc().input("foo.rs").run();
|
||||
|
||||
if is_msvc() {
|
||||
let lib = tmp_dir().join("foo.dll.lib");
|
||||
|
||||
cc().input("bar.c").arg(lib).out_exe("bar").run();
|
||||
} else {
|
||||
cc().input("bar.c")
|
||||
.arg("-lfoo")
|
||||
.output(tmp_dir().join("bar"))
|
||||
.library_search_path(tmp_dir())
|
||||
.run();
|
||||
}
|
||||
|
||||
run("bar");
|
||||
|
||||
let expected_extension = dynamic_lib_extension();
|
||||
read_dir(tmp_dir(), |path| {
|
||||
if path.is_file()
|
||||
&& path.extension().is_some_and(|ext| ext == expected_extension)
|
||||
&& path.file_name().and_then(|name| name.to_str()).is_some_and(|name| {
|
||||
name.ends_with(".so") || name.ends_with(".dll") || name.ends_with(".dylib")
|
||||
})
|
||||
{
|
||||
remove_file(path).unwrap();
|
||||
}
|
||||
});
|
||||
run_fail("bar");
|
||||
}
|
Loading…
Reference in New Issue
Block a user