From b98365871fb7b82350962e0af9245273885546e3 Mon Sep 17 00:00:00 2001 From: Oneirical Date: Fri, 5 Jul 2024 16:33:11 -0400 Subject: [PATCH] rewrite raw-dylib-custom-dlltool to rmake --- .../tidy/src/allowed_run_make_makefiles.txt | 1 - .../raw-dylib-custom-dlltool/Makefile | 11 --------- .../raw-dylib-custom-dlltool/rmake.rs | 24 +++++++++++++++++++ .../raw-dylib-custom-dlltool/script.cmd | 2 +- .../raw-dylib-inline-cross-dylib/rmake.rs | 14 +++++------ 5 files changed, 32 insertions(+), 20 deletions(-) delete mode 100644 tests/run-make/raw-dylib-custom-dlltool/Makefile create mode 100644 tests/run-make/raw-dylib-custom-dlltool/rmake.rs diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt index 6d65b2e24e1..8bdaad21d7c 100644 --- a/src/tools/tidy/src/allowed_run_make_makefiles.txt +++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt @@ -119,7 +119,6 @@ run-make/profile/Makefile run-make/prune-link-args/Makefile run-make/raw-dylib-alt-calling-convention/Makefile run-make/raw-dylib-c/Makefile -run-make/raw-dylib-custom-dlltool/Makefile run-make/raw-dylib-import-name-type/Makefile run-make/raw-dylib-link-ordinal/Makefile run-make/raw-dylib-stdcall-ordinal/Makefile diff --git a/tests/run-make/raw-dylib-custom-dlltool/Makefile b/tests/run-make/raw-dylib-custom-dlltool/Makefile deleted file mode 100644 index f5d5360a3fb..00000000000 --- a/tests/run-make/raw-dylib-custom-dlltool/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# Test using -Cdlltool to change where raw-dylib looks for the dlltool binary. - -# only-windows -# only-gnu -# needs-dlltool - -include ../tools.mk - -all: - $(RUSTC) --crate-type lib --crate-name raw_dylib_test lib.rs -Cdlltool=$(CURDIR)/script.cmd - $(DIFF) output.txt "$(TMPDIR)"/output.txt diff --git a/tests/run-make/raw-dylib-custom-dlltool/rmake.rs b/tests/run-make/raw-dylib-custom-dlltool/rmake.rs new file mode 100644 index 00000000000..86b952f0b45 --- /dev/null +++ b/tests/run-make/raw-dylib-custom-dlltool/rmake.rs @@ -0,0 +1,24 @@ +// Instead of using the default dlltool, the rust compiler can also accept a custom +// command file with the -C dlltool flag. This test uses it to compile some rust code +// with the raw_dylib Windows-exclusive feature, and checks that the output contains +// the string passed from the custom dlltool, confirming that the default dlltool was +// successfully overridden. +// See https://github.com/rust-lang/rust/pull/109677 + +//@ only-windows +//@ only-gnu +//@ needs-dlltool +// Reason: this test specifically checks the custom dlltool feature, only +// available on Windows-gnu. + +use run_make_support::{diff, rustc}; + +fn main() { + let out = rustc() + .crate_type("lib") + .crate_name("raw_dylib_test") + .input("lib.rs") + .arg("-Cdlltool=script.cmd") + .run(); + diff().expected_file("output.txt").actual_file("actual.txt").normalize(r#"\r"#, "").run(); +} diff --git a/tests/run-make/raw-dylib-custom-dlltool/script.cmd b/tests/run-make/raw-dylib-custom-dlltool/script.cmd index 95f85c61c67..51834590be0 100644 --- a/tests/run-make/raw-dylib-custom-dlltool/script.cmd +++ b/tests/run-make/raw-dylib-custom-dlltool/script.cmd @@ -1,2 +1,2 @@ -echo Called dlltool via script.cmd> %TMPDIR%\output.txt +echo Called dlltool via script.cmd> actual.txt dlltool.exe %* diff --git a/tests/run-make/raw-dylib-inline-cross-dylib/rmake.rs b/tests/run-make/raw-dylib-inline-cross-dylib/rmake.rs index b0cdc0aa4af..6e3b31a0cdb 100644 --- a/tests/run-make/raw-dylib-inline-cross-dylib/rmake.rs +++ b/tests/run-make/raw-dylib-inline-cross-dylib/rmake.rs @@ -32,8 +32,8 @@ fn main() { // Make sure we do find an import to the functions we expect to be imported. .assert_stdout_contains("library_function"); if is_msvc() { - cc().arg("-c").out_exe("extern_1.obj").input("extern_1.c").run(); - cc().arg("-c").out_exe("extern_2.obj").input("extern_2.c").run(); + cc().arg("-c").out_exe("extern_1").input("extern_1.c").run(); + cc().arg("-c").out_exe("extern_2").input("extern_2.c").run(); cc().input("extern_1.obj") .arg("-link") .arg("-dll") @@ -47,15 +47,15 @@ fn main() { .arg("-noimplib") .run(); } else { - cc().arg("-v").arg("-c").out_exe("extern_1.obj").input("extern_1.c").run(); - cc().arg("-v").arg("-c").out_exe("extern_2.obj").input("extern_2.c").run(); - cc().input("extern_1.obj").out_exe("extern_1.dll").arg("-shared").run(); - cc().input("extern_2.obj").out_exe("extern_2.dll").arg("-shared").run(); + cc().arg("-v").arg("-c").out_exe("extern_1").input("extern_1.c").run(); + cc().arg("-v").arg("-c").out_exe("extern_2").input("extern_2.c").run(); + cc().input("extern_1").out_exe("extern_1.dll").arg("-shared").run(); + cc().input("extern_2").out_exe("extern_2.dll").arg("-shared").run(); } let out = run("driver").stdout_utf8(); diff() .expected_file("output.txt") .actual_text("actual_output", out) - .normalize(r#"\\r"#, "") + .normalize(r#"\r"#, "") .run(); }