Initial commit

This commit is contained in:
2026-03-21 12:43:00 -05:00
commit 83bf16823c
438 changed files with 33617 additions and 0 deletions
+230
View File
@@ -0,0 +1,230 @@
#!/bin/sh
set -eu
jobs() {
if command -v nproc >/dev/null 2>&1; then
nproc
else
getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1
fi
}
target_triple() {
printf '%s\n' "${CHOST:-x86_64-sfg-linux-gnu}"
}
assert_destdir() {
[ "${DESTDIR:-}" != "" ] || {
echo "build.sh: DESTDIR is not set" >&2
exit 1
}
}
haul_from_primary() {
pkg=$1
shift
old_destdir=$DESTDIR
DESTDIR=$DEPOT_PRIMARY_DESTDIR
export DESTDIR
haul "$pkg" "$@"
DESTDIR=$old_destdir
export DESTDIR
}
depot_build() {
j=$(jobs)
triple=$(target_triple)
cmake -G Ninja llvm \
-B build-clang-llvm \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="$CC" \
-DCMAKE_CXX_COMPILER="$CXX" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DLLVM_ENABLE_PROJECTS=clang\;lld\;flang \
-DLLVM_ENABLE_RUNTIMES=compiler-rt \
-DLLVM_USE_LINKER=lld \
-DLLVM_DEFAULT_TARGET_TRIPLE="$triple" \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DCLANG_LINK_CLANG_DYLIB=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_FFI=ON \
-DCLANG_DEFAULT_PIE_ON_LINUX=ON \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
-DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
-DLLVM_INCLUDE_UTILS=ON \
-DLLVM_BUILD_UTILS=ON \
-DSANITIZER_CXX_ABI=libcxxabi \
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
-DCOMPILER_RT_DEFAULT_TARGET_ONLY=OFF \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DLLVM_INSTALL_UTILS=ON \
-DCLANG_DEFAULT_UNWINDLIB="none" \
-DCOMPILER_RT_BUILD_SANITIZERS=ON \
-DCOMPILER_RT_BUILD_XRAY=ON \
-DCOMPILER_RT_BUILD_LIBFUZZER=ON \
-DCOMPILER_RT_BUILD_PROFILE=ON \
-DCOMPILER_RT_BUILD_MEMPROF=ON \
-DCOMPILER_RT_BUILD_ORC=ON \
-DCOMPILER_RT_BUILD_CRT=ON \
-DLLVM_BUILD_DOCS=ON \
-DCMAKE_INSTALL_DOCDIR=share/doc \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DLLVM_ENABLE_SPHINX=ON \
-DCOMPILER_RT_DEFAULT_TARGET_ARCH="i686;x86_64" \
-DCLANG_DEFAULT_RTLIB=compiler-rt \
-DLLVM_INCLUDE_TESTS=ON
ninja -C build-clang-llvm -j"$j"
cmake -G Ninja runtimes/ \
-B build-libcxx \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="$CC" \
-DCMAKE_CXX_COMPILER="$CXX" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLLVM_ENABLE_RUNTIMES=libcxx\;libcxxabi\;libunwind \
-DCMAKE_C_COMPILER_TARGET="$triple" \
-DCMAKE_CXX_COMPILER_TARGET="$triple" \
-DLLVM_DEFAULT_TARGET_TRIPLE="$triple" \
-DLLVM_ENABLE_LTO=Thin \
-DLLVM_ENABLE_SPHINX=ON \
-DLIBCXX_INCLUDE_DOCS=ON \
-DCMAKE_INSTALL_DOCDIR=share/doc \
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -unwindlib=libunwind -rtlib=compiler-rt" \
-DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS -unwindlib=libunwind -rtlib=compiler-rt"
ninja -C build-libcxx -j"$j"
cmake -G Ninja llvm-libgcc \
-DCMAKE_C_COMPILER="$CC" \
-DCMAKE_CXX_COMPILER="$CXX" \
-B build-llvm-libgcc \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCOMPILER_RT_BUILD_BUILTINS=ON \
-DCOMPILER_RT_BUILD_LIBUNWIND=ON \
-DCOMPILER_RT_BUILD_XRAY=OFF \
-DCOMPILER_RT_BUILD_PROFILE=OFF \
-DLLVM_LIBGCC_EXPLICIT_OPT_IN=Yes \
-DCMAKE_C_COMPILER_TARGET="$triple" \
-DCMAKE_CXX_COMPILER_TARGET="$triple" \
-DLLVM_DEFAULT_TARGET_TRIPLE="$triple" \
-DCOMPILER_RT_BUILD_CRT=ON \
-DCOMPILER_RT_BUILD_ORC=OFF \
-DCOMPILER_RT_BAREMETAL_BUILD=OFF \
-DCOMPILER_RT_USE_LLVM_UNWINDER=ON \
-DCOMPILER_RT_ENABLE_STATIC_UNWINDER=ON \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_BUILD_MEMPROF=OFF \
-DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -unwindlib=libunwind -rtlib=compiler-rt" \
-DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS -unwindlib=libunwind -rtlib=compiler-rt"
ninja -C build-llvm-libgcc -j"$j"
}
depot_install() {
# Primary package: install the big LLVM/Clang/Flang tree once, then split from it.
assert_destdir
DESTDIR="$DESTDIR" cmake --install build-clang-llvm
ln -snf clang "$DESTDIR/usr/bin/cc"
ln -snf clang++ "$DESTDIR/usr/bin/c++"
ln -snf flang "$DESTDIR/usr/bin/f95"
ln -snf ld.lld "$DESTDIR/usr/bin/ld"
ln -snf linux/clang_rt.crtbegin-x86_64.o "$DESTDIR/usr/lib/crtbeginS.o"
ln -snf linux/clang_rt.crtend-x86_64.o "$DESTDIR/usr/lib/crtendS.o"
ln -snf linux/clang_rt.crtbegin-x86_64.o "$DESTDIR/usr/lib/crtbeginT.o"
ln -snf linux/clang_rt.crtend-x86_64.o "$DESTDIR/usr/lib/crtendT.o"
ln -snf linux/clang_rt.crtbegin-x86_64.o "$DESTDIR/usr/lib/crtbegin.o"
ln -snf linux/clang_rt.crtend-x86_64.o "$DESTDIR/usr/lib/crtend.o"
if [ -f "$DESTDIR/usr/share/clang/bash-autocomplete.sh" ]; then
mkdir -p "$DESTDIR/usr/share/bash-completion/completions"
mv "$DESTDIR/usr/share/clang/bash-autocomplete.sh" \
"$DESTDIR/usr/share/bash-completion/completions/clang"
fi
}
depot_install_llvm_libs() {
# Split shared LLVM libraries out of the primary LLVM install tree.
haul_from_primary llvm-libs 'usr/lib/libLLVM*.so*'
haul_from_primary llvm-libs 'usr/lib/libLTO.so*'
haul_from_primary llvm-libs 'usr/lib/libRemarks.so*'
}
depot_install_clang() {
haul_from_primary clang 'usr/bin/analyze-build'
haul_from_primary clang 'usr/bin/amdgpu-arch'
haul_from_primary clang 'usr/bin/c-index-test'
haul_from_primary clang 'usr/bin/clang*'
haul_from_primary clang 'usr/bin/diagtool'
haul_from_primary clang 'usr/bin/git-clang-format'
haul_from_primary clang 'usr/bin/hmaptool'
haul_from_primary clang 'usr/bin/intercept-build'
haul_from_primary clang 'usr/bin/nvptx-arch'
haul_from_primary clang 'usr/bin/scan-build*'
haul_from_primary clang 'usr/bin/scan-view'
haul_from_primary clang 'usr/bin/cc'
haul_from_primary clang 'usr/bin/c++'
haul_from_primary clang 'usr/include/clang*'
haul_from_primary clang 'usr/lib/clang'
haul_from_primary clang 'usr/lib/cmake/clang'
haul_from_primary clang 'usr/lib/libclang*.so*'
haul_from_primary clang 'usr/share/clang*'
haul_from_primary clang 'usr/share/scan-build'
haul_from_primary clang 'usr/share/scan-view'
haul_from_primary clang 'usr/share/bash-completion/completions/clang'
haul_from_primary clang 'usr/lib/crt*'
haul_from_primary clang 'usr/share/doc/clang*'
haul_from_primary clang 'usr/share/man/man1/clang*'
}
depot_install_libcxx() {
assert_destdir
DESTDIR="$DESTDIR" cmake --install build-libcxx
# Keep libcxx package focused (libunwind belongs to llvm-libgcc in this split).
rm -f "$DESTDIR/usr/include/__libunwind_config.h" \
"$DESTDIR/usr/include/libunwind.h" \
"$DESTDIR/usr/include/libunwind.modulemap" \
"$DESTDIR/usr/include/unwind.h" \
"$DESTDIR/usr/include/unwind_itanium.h" \
"$DESTDIR/usr/include/unwind_arm_ehabi.h" \
"$DESTDIR/usr/include/mach-o/compact_unwind_encoding.h"
rm -f "$DESTDIR/usr/lib/libunwind.so" \
"$DESTDIR/usr/lib/libunwind.so.1" \
"$DESTDIR/usr/lib/libunwind.so.1.0" \
"$DESTDIR/usr/lib/libunwind.a"
rm -rf "$DESTDIR/usr/lib/cmake/libunwind"
rmdir "$DESTDIR/usr/include/mach-o" 2>/dev/null || true
}
depot_install_llvm_libgcc() {
assert_destdir
DESTDIR="$DESTDIR" cmake --install build-llvm-libgcc
}
depot_install_flang() {
haul_from_primary flang 'usr/bin/flang*'
haul_from_primary flang 'usr/bin/tco'
haul_from_primary flang 'usr/bin/fir-*'
haul_from_primary flang 'usr/bin/f95'
haul_from_primary flang 'usr/include/flang*'
haul_from_primary flang 'usr/lib/cmake/flang*'
haul_from_primary flang 'usr/lib/libFIR*'
haul_from_primary flang 'usr/lib/libFortran*'
haul_from_primary flang 'usr/lib/libFlang*'
haul_from_primary flang 'usr/lib/libflang*'
haul_from_primary flang 'usr/lib/libCUFAttrs.a'
haul_from_primary flang 'usr/lib/libCUFDialect.a'
haul_from_primary flang 'usr/share/man/man1/flang*'
}