about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRémy Rakic <remy.rakic+github@gmail.com>2023-06-21 15:47:42 +0000
committerRémy Rakic <remy.rakic+github@gmail.com>2023-06-30 20:28:46 +0000
commit5ea0f6373312c5536bb879d8ef38f5b2fffb42ff (patch)
tree4a8f9766be0696ba02389037d42528c0d46d2aa8
parent99605a0389e42a711f4e87272faa5f3c7f1c3a87 (diff)
downloadrust-5ea0f6373312c5536bb879d8ef38f5b2fffb42ff.tar.gz
rust-5ea0f6373312c5536bb879d8ef38f5b2fffb42ff.zip
add whether `LinkerFlavor` invokes the linker via a C/C++ compiler
-rw-r--r--compiler/rustc_target/src/spec/mod.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
index 876c3818e6a..124e67e2e5a 100644
--- a/compiler/rustc_target/src/spec/mod.rs
+++ b/compiler/rustc_target/src/spec/mod.rs
@@ -367,6 +367,25 @@ impl LinkerFlavor {
             | LinkerFlavor::Ptx => false,
         }
     }
+
+    /// Returns whether the flavor calls the linker via a C/C++ compiler.
+    pub fn uses_cc(self) -> bool {
+        // Exhaustive match in case new flavors are added in the future.
+        match self {
+            LinkerFlavor::Gnu(Cc::Yes, _)
+            | LinkerFlavor::Darwin(Cc::Yes, _)
+            | LinkerFlavor::WasmLld(Cc::Yes)
+            | LinkerFlavor::Unix(Cc::Yes)
+            | LinkerFlavor::EmCc => true,
+            LinkerFlavor::Gnu(..)
+            | LinkerFlavor::Darwin(..)
+            | LinkerFlavor::WasmLld(_)
+            | LinkerFlavor::Msvc(_)
+            | LinkerFlavor::Unix(_)
+            | LinkerFlavor::Bpf
+            | LinkerFlavor::Ptx => false,
+        }
+    }
 }
 
 macro_rules! linker_flavor_cli_impls {