On Mon, 8 Dec 2025 03:59:17 +0200 Konstantin Belousov <[email protected]> wrote:
> > libLLVM.so.19.1 => /usr/local/llvm19/bin/../lib/libLLVM.so.19.1 > > (0x805c00000) > Did you noted this line? > > > libc++.so.1 => /lib/libc++.so.1 (0x801092000) > > libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x80119b000) > > libm.so.5 => /lib/libm.so.5 (0x8011bd000) > > libc.so.7 => /lib/libc.so.7 (0x80d663000) > > librt.so.1 => /lib/librt.so.1 (0x805bcb000) > > libexecinfo.so.1 => /usr/lib/libexecinfo.so.1 (0x805bd4000) > > libz.so.6 => /lib/libz.so.6 (0x805bda000) > > libzstd.so.1 => /usr/local/lib/libzstd.so.1 (0x80d963000) > > libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x80da38000) > > libelf.so.2 => /lib/libelf.so.2 (0x80da59000) > > [vdso] (0x7ffffffff000) > > > > But > > # ls /usr/bin/cc > > -r-xr-xr-x 6 root wheel 82M Oct 19 18:10:39 2025 /usr/bin/cc* > > # ls /usr/local/llvm19/bin/clang-19 > > -rwxr-xr-x 2 root wheel 125K Aug 18 06:43:31 2025 > > /usr/local/llvm19/bin/clang-19* So it dynamic linked.... > > .... > > And we found in port: > > CMAKE_ARGS= -DLLVM_BUILD_LLVM_DYLIB=ON > > CMAKE_ARGS+= -DLLVM_LINK_LLVM_DYLIB=ON > > (exist from first llvm6 372b8a151352984140f74c342a62eae2236b2c2c > > and copy-pasted to all next llvm~s by [email protected]) Did you noted this lines? Without CMAKE_ARGS= -DLLVM_BUILD_LLVM_DYLIB=ON CMAKE_ARGS+= -DLLVM_LINK_LLVM_DYLIB=ON # ls /tmp/ports/usr/ports/devel/llvm19/work-default/stage/usr/local/llvm19/bin/clang-19 -rwxr-xr-x 2 root wheel 164M Dec 8 04:23:13 2025 /tmp/ports/usr/ports/devel/llvm19/work-default/stage/usr/local/llvm19/bin/clang-19* # ldd /tmp/ports/usr/ports/devel/llvm19/work-default/stage/usr/local/llvm19/bin/clang-19 /tmp/ports/usr/ports/devel/llvm19/work-default/stage/usr/local/llvm19/bin/clang-19: ld-elf.so.1: /tmp/ports/usr/ports/devel/llvm19/work-default/stage/usr/local/llvm19/bin/clang-19: mmap of entire address space failed: Cannot allocate memory /tmp/ports/usr/ports/devel/llvm19/work-default/stage/usr/local/llvm19/bin/clang-19: exit status 1 > > According to: https://llvm.org/docs/CMake.html > > ============================================================================================= > > BUILD_SHARED_LIBS is only recommended for use by LLVM developers. > > If you want to build LLVM as a shared library, you should use the > > LLVM_BUILD_LLVM_DYLIB option. > > ============================================================================================= > > > > So upstream DOES NOT RECOMMEND to build shared libs to users!!! > I am curious about the motivation. > > JFYI, shared llvm libs are required for lot of things. The incomplete > list of examples that I am aware of are dri drivers and ispc Intel > compiler. # grep -rsp "libLLVM.so" /usr/ports/ | grep '/Makefile' /usr/ports/devel/ispc/Makefile:LIB_DEPENDS= libLLVM.so:devel/llvm${LLVM_VERSION} \ /usr/ports/graphics/seexpr/Makefile:LLVM_LIB_DEPENDS= libLLVM.so:devel/llvm${LLVM_DEFAULT} # grep -rsp "LLVM_VERSION" /usr/ports/ | grep '/Makefile' | grep 'libLLVM' /usr/ports/audio/faust/Makefile:LIB_DEPENDS= libLLVM-${LLVM_VERSION}.so:devel/llvm${LLVM_VERSION} \ /usr/ports/lang/crystal/Makefile: libLLVM-${_LLVM_VERSION}.so:devel/llvm${_LLVM_VERSION} \ # grep -rsp 'llvm\${LLVM_VERSION}' /usr/ports/ | grep '/Makefile' /usr/ports/cad/nvc/Makefile:BUILD_DEPENDS= llvm-config${LLVM_VERSION}:devel/llvm${LLVM_VERSION} /usr/ports/devel/edi/Makefile:LIBCLANG_LIB_DEPENDS= libclang.so:devel/llvm${LLVM_VERSION} /usr/ports/devel/fccf/Makefile:CMAKE_ARGS= -DLLVM_DIR:STRING=${PREFIX}/llvm${LLVM_VERSION}/lib/cmake/llvm /usr/ports/devel/cppinsights/Makefile:CMAKE_ARGS= -DLLVM_CONFIG_PATH="${LOCALBASE}/llvm${LLVM_VERSION}/bin/llvm-config" /usr/ports/graphics/mesa-dri/Makefile.common:LDFLAGS+= -Wl,-rpath=${LOCALBASE}/llvm${LLVM_VERSION}/lib /usr/ports/lang/halide/Makefile:RUN_DEPENDS= llvm${LLVM_VERSION}>0:devel/llvm${LLVM_VERSION} /usr/ports/lang/lfortran/Makefile:CMAKE_ARGS= -DLLVM_INSTALL_DIR:PATH="${LOCALBASE}/llvm${LLVM_VERSION}" \ /usr/ports/lang/pocl/Makefile: spirv-llvm-translator-llvm${LLVM_VERSION}>=${LLVM_VERSION}:devel/spirv-llvm-translator@llvm${LLVM_VERSION} \ /usr/ports/lang/pocl/Makefile: -DWITH_LLVM_CONFIG="${LOCALBASE}/llvm${LLVM_VERSION}/bin/llvm-config" /usr/ports/math/symengine/Makefile:LLVM_BUILD_DEPENDS= llvm${LLVM_VERSION}>0:devel/llvm${LLVM_VERSION} Ok, shared lib required for some ports. Nice to have static linked executables + shared lib for ports that use it. But shared lib for llvm in base is not used, no reason to build llvm in base with shared lib, since it only used to compile world+kernel.
