]> git.lizzy.rs Git - rust.git/blobdiff - src/bootstrap/compile.rs
build llvm libunwind.a in rustbuild
[rust.git] / src / bootstrap / compile.rs
index d25989954783ae05ce240f9ffcebf595622e71c7..afddbc1da9e702176ab947c57697c6b544cd3865 100644 (file)
@@ -23,7 +23,7 @@
 use crate::builder::Cargo;
 use crate::builder::{Builder, Kind, RunConfig, ShouldRun, Step};
 use crate::cache::{Interned, INTERNER};
-use crate::config::TargetSelection;
+use crate::config::{LlvmLibunwind, TargetSelection};
 use crate::dist;
 use crate::native;
 use crate::tool::SourceType;
@@ -234,6 +234,18 @@ fn copy_self_contained_objects(
         }
     }
 
+    if target.contains("musl")
+        || target.contains("x86_64-fortanix-unknown-sgx")
+        || builder.config.llvm_libunwind == LlvmLibunwind::InTree
+            && (target.contains("linux") || target.contains("fuchsia"))
+    {
+        let libunwind_path = builder.ensure(native::Libunwind { target });
+        let libunwind_source = libunwind_path.join("libunwind.a");
+        let libunwind_target = libdir_self_contained.join("libunwind.a");
+        builder.copy(&libunwind_source, &libunwind_target);
+        target_deps.push((libunwind_target, DependencyType::TargetSelfContained));
+    }
+
     target_deps
 }