From 1b1c951bb4507fa5f3f0843a66b733c94c50acd1 Mon Sep 17 00:00:00 2001
From: Dmitry Ivanov <ivadmi5@gmail.com>
Date: Wed, 24 Jul 2024 15:44:46 +0300
Subject: [PATCH] chore: make dynamic build link against shared libunwind

---
 build.rs | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/build.rs b/build.rs
index 19081a16dc..4b121060c0 100644
--- a/build.rs
+++ b/build.rs
@@ -373,6 +373,7 @@ fn build_tarantool(jsc: Option<&jobserver::Client>, build_root: &Path, use_stati
                 .args([
                     "-DENABLE_BUNDLED_LDAP=OFF",
                     "-DENABLE_BUNDLED_LIBCURL=OFF",
+                    "-DENABLE_BUNDLED_LIBUNWIND=OFF",
                     "-DENABLE_BUNDLED_LIBYAML=OFF",
                     "-DENABLE_BUNDLED_OPENSSL=OFF",
                     "-DENABLE_BUNDLED_ZSTD=OFF",
@@ -505,9 +506,14 @@ fn build_tarantool(jsc: Option<&jobserver::Client>, build_root: &Path, use_stati
         // duplicate symbols which is not allowed (by default) when linking with
         // via -l... option
         let arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();
-        let lib_dir = format!("{tarantool_build}/third_party/libunwind/src/.libs");
-        rustc::link_arg(format!("{lib_dir}/libunwind-{arch}.a"));
-        rustc::link_arg(format!("{lib_dir}/libunwind.a"));
+        if use_static_build {
+            let lib_dir = format!("{tarantool_build}/third_party/libunwind/src/.libs");
+            rustc::link_arg(format!("{lib_dir}/libunwind-{arch}.a"));
+            rustc::link_arg(format!("{lib_dir}/libunwind.a"));
+        } else {
+            rustc::link_lib_dynamic(format!("unwind-{arch}"));
+            rustc::link_lib_dynamic("unwind");
+        }
     }
 
     rustc::link_arg("-lc");
-- 
GitLab