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