diff options
| author | Oneirical <manchot@videotron.ca> | 2024-05-12 14:00:09 -0400 |
|---|---|---|
| committer | Oneirical <manchot@videotron.ca> | 2024-05-12 14:00:09 -0400 |
| commit | f2de5fb2ae0f69d403a06ff4f963e63d95406591 (patch) | |
| tree | 000cb507f66283da961effa13a4579b2698ce9e9 | |
| parent | 3349155ac082ed9034404428c8402e42a165d3d8 (diff) | |
| download | rust-f2de5fb2ae0f69d403a06ff4f963e63d95406591.tar.gz rust-f2de5fb2ae0f69d403a06ff4f963e63d95406591.zip | |
rewrite issue-14500 to rmake
| -rw-r--r-- | src/tools/run-make-support/src/rustc.rs | 14 | ||||
| -rw-r--r-- | src/tools/tidy/src/allowed_run_make_makefiles.txt | 1 | ||||
| -rw-r--r-- | tests/run-make/issue-14500/Makefile | 15 | ||||
| -rw-r--r-- | tests/run-make/issue-14500/rmake.rs | 31 |
4 files changed, 45 insertions, 16 deletions
diff --git a/src/tools/run-make-support/src/rustc.rs b/src/tools/run-make-support/src/rustc.rs index de773d688ef..c92e9f9b11f 100644 --- a/src/tools/run-make-support/src/rustc.rs +++ b/src/tools/run-make-support/src/rustc.rs @@ -150,6 +150,20 @@ impl Rustc { self } + /// Pass a codegen option. + pub fn codegen_option(&mut self, option: &str) -> &mut Self { + self.cmd.arg("-C"); + self.cmd.arg(option); + self + } + + /// Add a directory to the library search path. + pub fn library_search_path<P: AsRef<Path>>(&mut self, path: P) -> &mut Self { + self.cmd.arg("-L"); + self.cmd.arg(path.as_ref()); + self + } + /// Specify the edition year. pub fn edition(&mut self, edition: &str) -> &mut Self { self.cmd.arg("--edition"); diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index e87950b36d9..a358bc89e13 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -99,7 +99,6 @@ run-make/issue-107094/Makefile run-make/issue-10971-temps-dir/Makefile run-make/issue-109934-lto-debuginfo/Makefile run-make/issue-11908/Makefile -run-make/issue-14500/Makefile run-make/issue-14698/Makefile run-make/issue-15460/Makefile run-make/issue-18943/Makefile diff --git a/tests/run-make/issue-14500/Makefile b/tests/run-make/issue-14500/Makefile deleted file mode 100644 index eeab48de3b9..00000000000 --- a/tests/run-make/issue-14500/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -include ../tools.mk - -# ignore-cross-compile - -# Test to make sure that reachable extern fns are always available in final -# productcs, including when LTO is used. In this test, the `foo` crate has a -# reahable symbol, and is a dependency of the `bar` crate. When the `bar` crate -# is compiled with LTO, it shouldn't strip the symbol from `foo`, and that's the -# only way that `foo.c` will successfully compile. - -all: - $(RUSTC) foo.rs --crate-type=rlib - $(RUSTC) bar.rs --crate-type=staticlib -C lto -L. -o $(TMPDIR)/libbar.a - $(CC) foo.c $(TMPDIR)/libbar.a $(EXTRACFLAGS) $(call OUT_EXE,foo) - $(call RUN,foo) diff --git a/tests/run-make/issue-14500/rmake.rs b/tests/run-make/issue-14500/rmake.rs new file mode 100644 index 00000000000..58c6bc9ebb3 --- /dev/null +++ b/tests/run-make/issue-14500/rmake.rs @@ -0,0 +1,31 @@ +// Test to make sure that reachable extern fns are always available in final +// productcs, including when LTO is used. + +// In this test, the `foo` crate has a reahable symbol, +// and is a dependency of the `bar` crate. When the `bar` crate +// is compiled with LTO, it shouldn't strip the symbol from `foo`, and that's the +// only way that `foo.c` will successfully compile. +// See https://github.com/rust-lang/rust/issues/14500 + +//@ ignore-cross-compile + +use run_make_support::{cc, extra_c_flags, run, rustc}; + +fn main() { + let libbar_path = tmp_dir().join("libbar.a"); + rustc().input("foo.rs") + .crate_type("rlib") + .run(); + rustc().input("bar.rs") + .static_lib("staticlib") + .codegen_option("lto") + .library_search_path(".") + .output(&libbar_path) + .run(); + cc().input("foo.c") + .input(libbar_path) + .args(&extra_c_flags()) + .out_exe("foo") + .run(); + run("foo"); +} |
