From 1d0705294f23803df7beb79caed9851230775bfc Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 3 Mar 2024 12:04:03 -0800 Subject: [PATCH] Link LLVM-based tools dynamically to LLVM I noticed that #388 increased the size of the Windows distribution by 200M+ and my guess for that is that all the symlinks which point to clang get copied as real files (due to symlinks not always working on Windows). To help counteract that this commit enables the `LLVM_LINK_LLVM_DYLIB=ON` option when building LLVM and Clang. That should build a `libLLVM.so` which helps reduce the size of all the tools since they no longer all statically link LLVM. Locally the size of a full build is ~100M less as a result of this change. On Windows where all the binaries are copied around it should hopefully help much more. I've additionally taken a leaf out of rust-lang/rust's book of building LLVM to pass the `LLVM_VERSION_SUFFIX` option here too. That I believe helps avoid `libLLVM.so` conflicting with a system-installed `libLLVM.so` by accident by ensuring there's a suffix present on the binaries built for wasi-sdk. --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Makefile b/Makefile index b30a62a..80eaa5a 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,8 @@ build/llvm.BUILT: -DCLANG_LINKS_TO_CREATE="$(call join-with,;,$(CLANG_LINKS_TO_CREATE))" \ -DCMAKE_BUILD_TYPE=MinSizeRel \ -DLLVM_ENABLE_TERMINFO=OFF \ + -DLLVM_LINK_LLVM_DYLIB=ON \ + -DLLVM_VERSION_SUFFIX=-wasi-sdk \ -DLLVM_ENABLE_ZLIB=OFF \ -DLLVM_ENABLE_ZSTD=OFF \ -DLLVM_STATIC_LINK_CXX_STDLIB=ON \ @@ -118,6 +120,8 @@ build/llvm.BUILT: install-objdump \ install-objcopy \ install-c++filt \ + install-LLVM \ + install-clang-cpp \ llvm-config touch build/llvm.BUILT