about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-07-26 01:47:34 +0000
committerbors <bors@rust-lang.org>2022-07-26 01:47:34 +0000
commitfe5cc380980935ed8c488923934b68e69c040bac (patch)
treeb8a6b4527167dca1c10ed95491d4e776cdbdc266
parentc5528ce64368630668c8bb0d3d827a9bd66ec21a (diff)
parentfef3b3e27dae698088849d637893f7221057bad7 (diff)
downloadrust-fe5cc380980935ed8c488923934b68e69c040bac.tar.gz
rust-fe5cc380980935ed8c488923934b68e69c040bac.zip
Auto merge of #98989 - dpaoliello:rawdylibbin, r=michaelwoerister
Enable raw-dylib for bin crates

Fixes #93842

When `raw-dylib` is used in a `bin` crate, we need to collect all of the `raw-dylib` functions, generate the import library and add that to the linker command line.

I also changed the tests so that 1) the C++ dlls are created after the Rust dlls, thus there is no chance of accidentally using them in the Rust linking process and 2) disabled generating import libraries when building with MSVC.
-rw-r--r--src/archive.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/archive.rs b/src/archive.rs
index 411ec27139e..21f62a6b009 100644
--- a/src/archive.rs
+++ b/src/archive.rs
@@ -4,7 +4,6 @@ use std::path::{Path, PathBuf};
 use rustc_codegen_ssa::back::archive::ArchiveBuilder;
 use rustc_session::Session;
 
-use rustc_data_structures::temp_dir::MaybeTempDir;
 use rustc_session::cstore::DllImport;
 
 struct ArchiveConfig<'a> {
@@ -177,7 +176,16 @@ impl<'a> ArchiveBuilder<'a> for ArArchiveBuilder<'a> {
         any_members
     }
 
-    fn inject_dll_import_lib(&mut self, _lib_name: &str, _dll_imports: &[DllImport], _tmpdir: &MaybeTempDir) {
+    fn sess(&self) -> &Session {
+        self.config.sess
+    }
+
+    fn create_dll_import_lib(
+        _sess: &Session,
+        _lib_name: &str,
+        _dll_imports: &[DllImport],
+        _tmpdir: &Path,
+    ) -> PathBuf {
         unimplemented!();
     }
 }