]> git.lizzy.rs Git - rust.git/commitdiff
Handle #![windows_subsystem]
authorbjorn3 <bjorn3@users.noreply.github.com>
Sat, 6 Mar 2021 13:58:29 +0000 (14:58 +0100)
committerbjorn3 <bjorn3@users.noreply.github.com>
Sat, 6 Mar 2021 13:58:29 +0000 (14:58 +0100)
src/driver/aot.rs

index b87dcc41928b699b27f7e905a69f83f23299e894..0f1da66170a32c3ca1681ffea2c26fa1d1affc92 100644 (file)
@@ -163,6 +163,22 @@ pub(super) fn run_aot(
     metadata: EncodedMetadata,
     need_metadata_module: bool,
 ) -> Box<(CodegenResults, FxHashMap<WorkProductId, WorkProduct>)> {
+    use rustc_span::symbol::sym;
+
+    let subsystem = tcx
+        .sess
+        .first_attr_value_str_by_name(&tcx.hir().krate().item.attrs, sym::windows_subsystem);
+    let windows_subsystem = subsystem.map(|subsystem| {
+        if subsystem != sym::windows && subsystem != sym::console {
+            tcx.sess.fatal(&format!(
+                "invalid windows subsystem `{}`, only \
+                                    `windows` and `console` are allowed",
+                subsystem
+            ));
+        }
+        subsystem.to_string()
+    });
+
     let mut work_products = FxHashMap::default();
 
     let cgus = if tcx.sess.opts.output_types.should_codegen() {
@@ -280,7 +296,7 @@ pub(super) fn run_aot(
             allocator_module,
             metadata_module,
             metadata,
-            windows_subsystem: None, // Windows is not yet supported
+            windows_subsystem,
             linker_info: LinkerInfo::new(tcx),
             crate_info: CrateInfo::new(tcx),
         },