On Thu, Nov 14, 2024 at 05:22:17PM +0800, Hilton Chain wrote: > On Thu, 14 Nov 2024 14:05:52 +0800, > Hilton Chain wrote: > > > > Currently I'm 1. modifying each-lib-rpath option of 'zig build'. 2. passing > > libc to linker. I'll write details on this when succeed. > > 1. Modification about each-lib-rpath. > --8<---------------cut here---------------start------------->8--- > -feach-lib-rpath Ensure adding rpath for each used dynamic library > --8<---------------cut here---------------end--------------->8--- > > This option is on implicitly for native builds. This implicity is what our Zig > currently solely relies on. > > I'm modifying it so that it's also on when CROSS_LIBRARY_PATH or LIBRARY_PATH is > set. This approach is better than my previous one since it only adds needed > libraries. > > > 2. Pass libc to Zig's linker > This was the behavior in 0.9, but changed due to issue on macOS[1]. (btw, our > CPLUS_INCLUDE_PATH also has issue with macOS target[2]). RUNPATH for glibc was > missing because of this, since it's the linker handling each-lib-rpath. > > Since we do not support macOS anyway, can we restore this behavior? At worst I could see adding a comment that it would likely break future macOS cross-compiles. I don't see an issue with either putting it back unconditionally or trying to make it conditional based on (%current-system) or the contents of (%current-target-system). > > I also have concern for Zig's relying on /usr/bin/env (Zig uses an ELF file to > find dynamic linker, env is chosen for it's well-known). We have patched this > reference, not sure if it will cause issue for cross-building Zig. We use search-input-file in the replacement, so it should choose the cross-binutils for the replacement /bin/env, so it shouldn't be a problem. > > Thanks > --- > [1]: https://github.com/ziglang/zig/issues/10765 > [2]: https://github.com/ziglang/zig/issues/18063 -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted