diff options
| author | bors <bors@rust-lang.org> | 2024-06-02 02:11:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-06-02 02:11:35 +0000 |
| commit | 06d99cd6947db110d5b8cd44b91852372083d087 (patch) | |
| tree | 71b55de3b393f79478de469b3a2f918af06f57d3 /tests | |
| parent | 12b5d3c29c221a4c61f9e6863f4bc1133f3e3403 (diff) | |
| parent | 8742bf375b067096c2d3c6898a311cd0e80fde56 (diff) | |
| download | rust-06d99cd6947db110d5b8cd44b91852372083d087.tar.gz rust-06d99cd6947db110d5b8cd44b91852372083d087.zip | |
Auto merge of #125773 - GuillaumeGomez:migrate-run-make-cdylib, r=jieyouxu
Migrate run make cdylib Part of https://github.com/rust-lang/rust/issues/121876. r? `@jieyouxu`
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/run-make/cdylib/Makefile | 23 | ||||
| -rw-r--r-- | tests/run-make/cdylib/rmake.rs | 36 |
2 files changed, 36 insertions, 23 deletions
diff --git a/tests/run-make/cdylib/Makefile b/tests/run-make/cdylib/Makefile deleted file mode 100644 index 2c6414c3255..00000000000 --- a/tests/run-make/cdylib/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# When the cdylib crate type was added as a variation of dylib, it needed a test to check its function. -# See https://github.com/rust-lang/rust/pull/33553 - -# ignore-cross-compile -include ../tools.mk - -all: $(call RUN_BINFILE,foo) - $(call RUN,foo) - rm $(call DYLIB,foo) - $(RUSTC) foo.rs -C lto - $(call RUN,foo) - -ifdef IS_MSVC -$(call RUN_BINFILE,foo): $(call DYLIB,foo) - $(CC) $(CFLAGS) foo.c $(TMPDIR)/foo.dll.lib $(call OUT_EXE,foo) -else -$(call RUN_BINFILE,foo): $(call DYLIB,foo) - $(CC) $(CFLAGS) foo.c -lfoo -o $(call RUN_BINFILE,foo) -L $(TMPDIR) -endif - -$(call DYLIB,foo): - $(RUSTC) bar.rs - $(RUSTC) foo.rs diff --git a/tests/run-make/cdylib/rmake.rs b/tests/run-make/cdylib/rmake.rs new file mode 100644 index 00000000000..fcb4f56621f --- /dev/null +++ b/tests/run-make/cdylib/rmake.rs @@ -0,0 +1,36 @@ +// 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"); +} |
