HEADS UP: libllvm, libclang, and liblldb converted into shared libraries

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sat, 26 Apr 2025 16:06:54 UTC
Hi,

In https://cgit.freebsd.org/src/commit/?id=2e47f35be5dc I committed a
change to convert libllvm, libclang, and liblldb into private shared
libraries. This means that tools like clang, lld, lldb, and more are now
quite a bit smaller, as all the common functionality is located in those
shared libraries.

Note that these shared libraries are not the same as upstream's, and are
_not_ ABI compatible, which is why they are installed as private shared
libraries. If you need ABI compatibility and/or the llvm-config tools,
please use one of the devel/llvm ports.

This affects the following binaries in the base system (some of them
only exist if they're enabled through various WITH_XXX options):

- addr2line
- ar
- bugpoint
- c++
- c++filt
- cc
- clang
- clang++
- clang-cpp
- clang-format
- cpp
- gcov
- ld.lld
- llc
- lldb
- lldb-server
- lli
- llvm-addr2line
- llvm-ar
- llvm-as
- llvm-bcanalyzer
- llvm-cov
- llvm-cxxdump
- llvm-cxxfilt
- llvm-diff
- llvm-dis
- llvm-dwarfdump
- llvm-dwarfutil
- llvm-dwp
- llvm-extract
- llvm-link
- llvm-lto
- llvm-lto2
- llvm-mc
- llvm-mca
- llvm-modextract
- llvm-nm
- llvm-objcopy
- llvm-objdump
- llvm-pdbutil
- llvm-profdata
- llvm-ranlib
- llvm-readelf
- llvm-readobj
- llvm-rtdyld
- llvm-size
- llvm-strings
- llvm-strip
- llvm-symbolizer
- llvm-xray
- nm
- objcopy
- objdump
- opt
- ranlib
- readelf
- size
- strings
- strip

In addition, all these executables are now position independent (PIE).

Please let me know if you encounter any problems resulting due to this
change, as I intend to MFC it. For example, I tried covering all
incremental build scenarios, but I may have missed some corner case.

-Dimitry