about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-03-08 13:56:45 +0000
committerbors <bors@rust-lang.org>2023-03-08 13:56:45 +0000
commit38e9a110d4f136c22cb4eed9c3581d7992eade56 (patch)
tree444f012406746465d34ce1fdda7b0f21fb0c2308
parent3d904e024b25211d55ca41f8d7faa8f966d124b8 (diff)
parent4ee2abaf388f2c9cc1260222e6ece305c2cd712d (diff)
downloadrust-38e9a110d4f136c22cb4eed9c3581d7992eade56.tar.gz
rust-38e9a110d4f136c22cb4eed9c3581d7992eade56.zip
Auto merge of #14287 - Veykril:rustc_private-proc-macro, r=Veykril
minor: Fixup dylib extensions for rustc_private proc-macro loading

Follow up to https://github.com/rust-lang/rust-analyzer/pull/14282
-rw-r--r--crates/project-model/src/build_scripts.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs
index 6930ed83731..38c1b37f0e3 100644
--- a/crates/project-model/src/build_scripts.rs
+++ b/crates/project-model/src/build_scripts.rs
@@ -416,7 +416,7 @@ impl WorkspaceBuildScripts {
                         let path = dir_entry.path();
                         tracing::info!("p{:?}", path);
                         let extension = path.extension()?;
-                        if extension == "dll" || extension == "so" {
+                        if extension == std::env::consts::DLL_EXTENSION {
                             let name = path.file_stem()?.to_str()?.split_once('-')?.0.to_owned();
                             let path = AbsPathBuf::try_from(path).ok()?;
                             return Some((name, path));
@@ -426,10 +426,13 @@ impl WorkspaceBuildScripts {
                 })
                 .collect();
             for p in rustc.packages() {
-                if let Some((_, path)) =
-                    proc_macro_dylibs.iter().find(|(name, _)| *name == rustc[p].name)
-                {
-                    bs.outputs[p].proc_macro_dylib_path = Some(path.clone());
+                let package = &rustc[p];
+                if package.targets.iter().any(|&it| rustc[it].is_proc_macro) {
+                    if let Some((_, path)) =
+                        proc_macro_dylibs.iter().find(|(name, _)| *name == package.name)
+                    {
+                        bs.outputs[p].proc_macro_dylib_path = Some(path.clone());
+                    }
                 }
             }