Dimitry Andric <dim_at_FreeBSD.org> wrote on Date: Tue, 23 Dec 2025 21:08:31 UTC :
> On 23 Dec 2025, at 22:04, Dimitry Andric <[email protected]> wrote: > > > > The branch main has been updated by dim: > > > > URL: > > https://cgit.FreeBSD.org/src/commit/?id=8d5a11cd0137d3ad70f6b06e063ea91a776d510a > > > > commit 8d5a11cd0137d3ad70f6b06e063ea91a776d510a > > Author: Dimitry Andric <[email protected]> > > AuthorDate: 2025-06-18 10:06:25 +0000 > > Commit: Dimitry Andric <[email protected]> > > CommitDate: 2025-12-23 21:01:40 +0000 > > > > src.conf: Add WITH_LLVM_LINK_STATIC_LIBRARIES build knob > > > > In commit 2e47f35be5dc libllvm, libclang and liblldb were converted into > > private shared libraries. This allowed clang, lld, lldb, and other llvm > > tools to be linked against these shared libraries, which makes them > > smaller and avoids duplication. > > > > However, this also comes at the cost of some performance, since the > > dynamic libraries are quite large, and contain lots of long symbols > > (mangled C++ identifiers). > > > > Add a WITH_LLVM_LINK_STATIC_LIBRARIES build knob that can be used to go > > back to the previous behavior: libllvm, libclang and liblldb are built > > as internal static libraries, i.e. only available during buildworld, and > > fully linked into the various executables such as clang, lld, etc. > > > > PR: 287447 > > Reviewed by: emaste > > MFC after: 1 week > > Differential Revision: https://reviews.freebsd.org/D50956 > > NOTE: toggling this option requires a full clean build, at least until > https://reviews.freebsd.org/D52011 lands. A significant question question here (after the MFC activity: for more than main) that is especially significant for the ampere* port-package builder machines (slower and few of them vs. the number of types of builds) but also for other of the more time-taking builder machines: Will the poudriere port-package build jails be built based on using WITH_LLVM_LINK_STATIC_LIBRARIES ? (The boot kernel and boot world are not the issue.) The performance difference between 14.3-RELEASE and 14.3-STABLE jails is large on aarch64 in my testing. (No such comparison is available for ampere* builds: no 14.3-STABLE build history logs exist to compare against.) 14.3-RELEASE predates the shared library change. 14.3-STABLE currently is using the shared libraries (before being shrunk some). 00:09:18 14.3-RELEASE -> 00:12:19 14.3-STABLE, ratio about 1.32, for cmake-core-3.31.9 on the Windows Dev Kit 2023 (using all 8 cores) (Those, of course, ares not matching contexts to how official builds are done. But the above avoided any jemalloc 5.3.0 involvement in causing the time ratio observed. Comparison and contrasts with 15.0-RELEASE do not avoid such. I could build other examples.) The best match that I have for ampere* numbers that is using 150arm64 builds and 143arm64 builds: 38:25:51 14.3-RELEASE -> 53:33:46 15.0-RELEASE, ratio about 1.39, for qt6-webengine-6.9.3 on the ampere*'s 15:24:24 14.3-RELEASE -> 21:26:14 15.0-RELEASE, ratio about 1.39, for llvm21-21.1.2 on the ampere*'s 15.0-RELEASE has the toolchain programs using the shared libraries. These sorts of figures can be explored from the official logs that exist --but 15.0 has more differences than just use of the shared libraries by the toolchain programs. I'd consider time ratios of 1.3+ significant. === Mark Millard marklmi at yahoo.com
