authorgravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2025-02-01 12:14:37-05:00
committergravatar for michael.dusan@gmail.comMichael Dusan <michael.dusan@gmail.com> 2025-02-01 12:16:21-05:00
log127b0921baa01c6fc256a5349ad174fc8d50652e
treeaf44d11a27e5ecda10ea2db673f326dfb2502c30
parent3924f173af51c50ac18be2166fe115555241778e
signaturelock-open Commit is signed but in an unrecognized format.

openbsd: fix stage3 link

- llvm requires libexecinfo which has conflicting symbols with libc++abi - workaround is to link c++abi dynamically

1 files changed, 9 insertions(+), 14 deletions(-)

build.zig+9-14
...@@ -791,24 +791,19 @@ fn addCmakeCfgOptionsToExe(...@@ -791,24 +791,19 @@ fn addCmakeCfgOptionsToExe(
791 if (target.abi != .msvc) mod.link_libcpp = true;791 if (target.abi != .msvc) mod.link_libcpp = true;
792 },792 },
793 .freebsd => {793 .freebsd => {
794 if (static) {794 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++.{s}", .{lib_suffix}), null, need_cpp_includes);
795 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++.{s}", .{lib_suffix}), null, need_cpp_includes);795 if (static) try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes);
796 try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes);
797 } else {
798 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++.{s}", .{lib_suffix}), null, need_cpp_includes);
799 }
800 },796 },
801 .openbsd => {797 .openbsd => {
802 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++.{s}", .{lib_suffix}), null, need_cpp_includes);798 // - llvm requires libexecinfo which has conflicting symbols with libc++abi
803 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++abi.{s}", .{lib_suffix}), null, need_cpp_includes);799 // - only an issue with .a linking
800 // - workaround is to link c++abi dynamically
801 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++.{s}", .{target.dynamicLibSuffix()[1..]}), null, need_cpp_includes);
802 try addCxxKnownPath(b, cfg, exe, b.fmt("libc++abi.{s}", .{target.dynamicLibSuffix()[1..]}), null, need_cpp_includes);
804 },803 },
805 .netbsd, .dragonfly => {804 .netbsd, .dragonfly => {
806 if (static) {805 try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes);
807 try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes);806 if (static) try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes);
808 try addCxxKnownPath(b, cfg, exe, b.fmt("libgcc_eh.{s}", .{lib_suffix}), null, need_cpp_includes);
809 } else {
810 try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes);
811 }
812 },807 },
813 .solaris, .illumos => {808 .solaris, .illumos => {
814 try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes);809 try addCxxKnownPath(b, cfg, exe, b.fmt("libstdc++.{s}", .{lib_suffix}), null, need_cpp_includes);