devel/llvm/ndmake.sh
$ cat ndmake.sh
#!/bin/sh -ue
NAME=llvm
VERSION=21.1.8
RELEASE=1
SOURCE="https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/llvm-project-${VERSION}.src.tar.xz
0012-libc-libc-abi-libunwind-disable-multiarch-locations.patch
0014-clang-disable-multiarch-layout-on-musl.patch
0017-clang-use-as-needed-by-default.patch
0024-clang-link-libcxxabi-on-linux-when-using-libc.patch
compiler-rt-sanitizer-supported-arch.patch
fix-msan-with-musl.patch
musl-stack-size.patch
musl-targets.patch"
BUILD_STYLE=cmake
BUILD_OPT="
-DLLVM_TARGETS_TO_BUILD='host;AMDGPU'
-DLLVM_HOST_TRIPLE=x86_64-pc-linux-musl
-DLLVM_INCLUDE_BENCHMARKS=OFF
-DLLVM_INCLUDE_EXAMPLES=OFF
-DLLVM_INCLUDE_DOCS=OFF
-DLLVM_INCLUDE_TESTS=OFF
-DLLVM_ENABLE_RUNTIMES='compiler-rt;libunwind;libcxx;libcxxabi'
-DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;lld'
-DLLVM_ENABLE_RTTI=ON
-DLLVM_ENABLE_EH=ON
-DLLVM_ENABLE_LIBXML2=OFF
-DLLVM_ENABLE_LIBCXX=ON
-DLLVM_ENABLE_LLD=ON
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
-DLLVM_ENABLE_PLUGINS=OFF
-DLLVM_BUILD_LLVM_DYLIB=OFF
-DLLVM_LINK_LLVM_DYLIB=OFF
-DLLVM_ENABLE_LTO=OFF
-DLLVM_BUILD_LTO=OFF
-DLLVM_TOOL_LTO_BUILD=OFF
-DCLANG_BUILD_EXAMPLES=OFF
-DCLANG_INCLUDE_DOCS=OFF
-DCLANG_INCLUDE_TESTS=OFF
-DCLANG_PLUGIN_SUPPORT=OFF
-DLIBCLANG_BUILD_STATIC=ON
-DCLANG_TOOL_LIBCLANG_BUILD=OFF
-DCLANG_TOOL_CLANG_SHLIB_BUILD=OFF
-DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF
-DCLANG_ENABLE_STATIC_ANALYZER=OFF
-DCLANG_DEFAULT_RTLIB=compiler-rt
-DCLANG_DEFAULT_UNWINDLIB=libunwind
-DCLANG_DEFAULT_CXX_STDLIB=libc++
-DCLANG_CONFIG_FILE_SYSTEM_DIR=/etc/clang
-DLIBCXX_HAS_MUSL_LIBC=ON
-DLIBCXX_CXX_ABI=libcxxabi
-DLIBCXX_USE_COMPILER_RT=ON
-DLIBCXX_HAS_ATOMIC_LIB=No
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON
-DLIBCXXABI_USE_LLVM_UNWINDER=ON
-DLIBCXXABI_USE_COMPILER_RT=ON
-DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON
-DLIBCXX_ENABLE_SHARED=OFF
-DLIBCXXABI_ENABLE_SHARED=OFF
-DLIBUNWIND_ENABLE_SHARED=OFF
-DLIBUNWIND_HAS_NODEFAULTLIBS_FLAG=OFF
-DLIBUNWIND_USE_COMPILER_RT=ON
-DLIBUNWIND_ENABLE_ASSERTIONS=OFF
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON
-DCOMPILER_RT_INCLUDE_TESTS=OFF
-DCOMPILER_RT_BUILD_SANITIZERS=ON
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF
-DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF"
if [ -e /usr/bin/ccache ]; then
BUILD_OPT="$BUILD_OPT -DLLVM_CCACHE_BUILD=ON"
fi
build() {
msg "building llvm with cmake (custom config)..."
C_COMPILER=$(command -v "${CC:-cc}")
CXX_COMPILER=$(command -v "${CXX:-c++}")
cmake -S llvm -B build \
-G Ninja \
-DCMAKE_MAKE_PROGRAM="$(command -v samu)" \
-DCMAKE_C_COMPILER="$C_COMPILER" \
-DCMAKE_CXX_COMPILER="$CXX_COMPILER" \
-DCMAKE_INSTALL_PREFIX="$PREFIX" \
-DCMAKE_INSTALL_BINDIR=bin \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_BUILD_TESTS=OFF \
${BUILD_OPT} \
-DLLVM_ENABLE_ZSTD=OFF \
-DLLVM_ENABLE_ZLIB=OFF || die "cmake config failed"
cmake --build build --parallel "$NPROC" || die "cmake build failed"
DESTDIR="$PKG" cmake --install build || die "cmake install failed"
msg "installing llvm.pc..."
mkdir -p "$PKG/$PREFIX/lib/pkgconfig"
LLVM_CONFIG="$PKG/$PREFIX/bin/llvm-config"
[ -x "$LLVM_CONFIG" ] || die "installed llvm-config not found"
LLVM_VERSION=$("$LLVM_CONFIG" --version) || die "llvm-config --version failed"
LLVM_CPPFLAGS=$("$LLVM_CONFIG" --cppflags) || die "llvm-config --cppflags failed"
LLVM_LIBS=$("$LLVM_CONFIG" --libs --system-libs --link-static) || die "llvm-config --libs failed"
cat > "$PKG/$PREFIX/lib/pkgconfig/llvm.pc" <<EOF
prefix=$PREFIX
exec_prefix=\${prefix}
libdir=\${exec_prefix}/lib
includedir=\${prefix}/include
Name: llvm
Description: LLVM libraries and headers
Version: $LLVM_VERSION
Cflags: $LLVM_CPPFLAGS
Libs: -L\${libdir} $LLVM_LIBS
EOF
}
. ${0%/*}/../../libsh/libdmake.sh
