diff options
| author | Alexander Hill <ahill@breadpudding.dev> | 2025-11-07 19:32:17 -0500 |
|---|---|---|
| committer | Alexander Hill <ahill@breadpudding.dev> | 2025-11-07 19:32:17 -0500 |
| commit | 5484dbc5de255c56766f66d0c1d7afdcf988ee99 (patch) | |
| tree | d4f228a2a8f7e0bde29721aca47fd7bf0f3de95b | |
| parent | d97f4abeb3a36af6b8d6289edb725d1e6522a71f (diff) | |
Discovered a much faster way to build LLVM
| -rw-r--r-- | Dockerfile | 6 | ||||
| -rwxr-xr-x | build-bootstrap.sh | 488 | ||||
| -rw-r--r-- | sources.list | 34 |
3 files changed, 160 insertions, 368 deletions
diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 2b16c4d..0000000 --- a/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM alpine:latest - -RUN apk update -RUN apk upgrade -RUN apk add cargo clang cmake curl git libc++ linux-headers make python3 rsync rust samurai umount -RUN git clone https://github.com/cbpudding/maplelinux-bootstrap /maple diff --git a/build-bootstrap.sh b/build-bootstrap.sh index e4bf660..f1a43f3 100755 --- a/build-bootstrap.sh +++ b/build-bootstrap.sh @@ -1,115 +1,126 @@ -#!/bin/sh -e +#!/bin/zsh -e +export BUILD=$(clang -dumpmachine) export MAPLE=$(pwd)/maple +export MICROARCH="skylake" +export TARGET=x86_64-maple-linux-musl -export BUILD=$(clang -dumpmachine) +export AR=llvm-ar export CC=clang -export CFLAGS="-O3 -march=skylake -pipe" +export CFLAGS="-O3 -march=$MICROARCH -pipe" export CXX=clang++ export CXXFLAGS="$CFLAGS" -export HOST=x86_64-maple-linux-musl export LD=ld.lld +export RANLIB=llvm-ranlib export THREADS=$(nproc) -# A simplified FHS variant with symlinks for backwards compatibility ~ahill -# TODO: Where does /usr/com fit into all of this (shared state directory)? ~ahill -mkdir -p $MAPLE/bin -mkdir -p $MAPLE/boot -mkdir -p $MAPLE/boot/EFI/BOOT/ -mkdir -p $MAPLE/dev -mkdir -p $MAPLE/etc -mkdir -p $MAPLE/home -mkdir -p $MAPLE/lib +# A simplified version of the filesystem loosely based on FHS with symlinks for +# backwards compatibility. ~ahill +mkdir -p $MAPLE/{bin,boot/EFI/BOOT,dev,etc,home,lib,proc,run,sys,tmp,usr/{include,share},var/{cache,lib,log,spool,tmp}} # TODO: Does it make sense to have this long-term? Anything that depends on # libc++ fails to link without it, but this should be fixed via a # configuration change in LLVM. ~ahill -ln -sf . $MAPLE/lib/$HOST -mkdir -p $MAPLE/maple/patches -mkdir -p $MAPLE/maple/sources -mkdir -p $MAPLE/proc -mkdir -p $MAPLE/run +ln -sf . $MAPLE/lib/$TARGET +ln -sf . $MAPLE/usr/include/$TARGET +# NOTE: Symlinks are for compatibility's sake. These shouldn't have to exist for +# the base system to function. ~ahill ln -sf bin $MAPLE/sbin -mkdir -p $MAPLE/sys -mkdir -p $MAPLE/tmp -mkdir -p $MAPLE/usr ln -sf ../bin $MAPLE/usr/bin -mkdir -p $MAPLE/usr/include -ln -sf . $MAPLE/usr/include/$HOST +ln -sf ../bin $MAPLE/usr/sbin ln -sf ../lib $MAPLE/usr/lib ln -sf ../lib $MAPLE/usr/libexec -ln -sf ../bin $MAPLE/usr/sbin -mkdir -p $MAPLE/usr/share -mkdir -p $MAPLE/var -mkdir -p $MAPLE/var/cache -mkdir -p $MAPLE/var/lib ln -sf ../run/lock $MAPLE/var/lock -mkdir -p $MAPLE/var/log ln -sf ../run $MAPLE/var/run -mkdir -p $MAPLE/var/spool -mkdir -p $MAPLE/var/tmp -mkdir -p build -cd build - -# LLVM Build -tar xf ../sources/llvm-project-*.tar* -cd llvm-project-*/ -# TODO: Python is a required part of LLVM, but we can't include the latest -# version due to conflicts with LibreSSL. Maybe we can piggyback off of -# Python 3.9 for a while, but that's not a sustainable solution long-term. -# ~ahill -# See also: https://peps.python.org/pep-0644/ -cmake -B stage1 -G Ninja -S llvm \ - -DCLANG_DEFAULT_CXX_STDLIB=libc++ \ - -DCLANG_DEFAULT_RTLIB=compiler-rt \ - -DCLANG_DEFAULT_UNWINDLIB=libunwind \ - -DCLANG_VENDOR=Maple \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ - -DCMAKE_INSTALL_PREFIX=$MAPLE/maple/tools \ - -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ - -DLIBCXX_CXX_ABI=libcxxabi \ - -DLIBCXX_HAS_MUSL_LIBC=ON \ - -DLIBCXX_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DLIBUNWIND_ENABLE_ASSERTIONS=OFF \ - -DLIBUNWIND_USE_COMPILER_RT=ON \ - -DLLVM_BUILD_LLVM_DYLIB=ON \ - -DLLVM_DEFAULT_TARGET_TRIPLE=$HOST \ - -DLLVM_ENABLE_LIBCXX=ON \ - -DLLVM_ENABLE_PROJECTS="clang;lld;llvm" \ - -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx" \ - -DLLVM_HOST_TRIPLE=$BUILD \ - -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \ - -DLLVM_INSTALL_UTILS=ON \ - -DLLVM_LINK_LLVM_DYLIB=ON -cmake --build stage1 -cmake --install stage1 -cd .. +# NOTE: These are exclusively used for the bootstrapping process and can be +# removed later. ~ahill +mkdir -p $MAPLE/maple/{patches,sources} -export CC="$MAPLE/maple/tools/bin/clang" -export CFLAGS="$CFLAGS --sysroot=$MAPLE" -export CXX="$MAPLE/maple/tools/bin/clang++" -export CXXFLAGS="$CFLAGS" -export LD=$MAPLE/maple/tools/bin/ld.lld -export PATH="$MAPLE/maple/tools/bin:$PATH" -export RUSTFLAGS="-C target-feature=-crt-static" +# Create the build directory and enter it so we can begin! ~ahill +mkdir build +cd build # Linux Headers tar xf ../sources/linux-*.tar* cd linux-*/ LLVM=1 make -j $THREADS mrproper -# TODO: Why do we need rsync to install the Linux headers? ~ahill -LLVM=1 make -j $THREADS headers_install INSTALL_HDR_PATH=$MAPLE/usr +# NOTE: We don't use the built-in headers_install here because it requires rsync +# for some reason. ~ahill +LLVM=1 make -j $THREADS headers +find usr/include -type f ! -name "*.h" -delete +cp -r usr/include $MAPLE/usr cd .. -# musl Build -# FIXME: CVE-2025-26519 +# musl Build (Stage 1) tar xf ../sources/musl-*.tar* cd musl-*/ -./configure --includedir=/usr/include --prefix="" +./configure \ + --bindir=/bin \ + --build=$BUILD \ + --includedir=/usr/include \ + --libdir=/lib \ + --prefix=/ \ + --target=$TARGET +make -O -j $THREADS +make -O install-headers DESTDIR=$MAPLE +cd .. + +# LLVM Build +tar xf ../sources/llvm-project-*.tar* +cd llvm-project-*/ + +# Common flags used across all of the LLVM builds +COMMON_LLVM_CMAKE=( + "-DCMAKE_ASM_COMPILER_TARGET=$TARGET" + "-DCMAKE_BUILD_TYPE=Release" + "-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" + "-DCMAKE_C_COMPILER=$CC" + "-DCMAKE_C_COMPILER_TARGET=$TARGET" + "-DCMAKE_CXX_COMPILER=$CXX" + "-DCMAKE_CXX_COMPILER_TARGET=$TARGET" + "-DCMAKE_FIND_ROOT_PATH=$MAPLE" + "-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY" + "-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY" + "-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY" + "-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER" + "-DCMAKE_INSTALL_DATAROOTDIR=usr/share" + "-DCMAKE_INSTALL_INCLUDEDIR=usr/include" + "-DCMAKE_INSTALL_LIBEXECDIR=lib" + "-DCMAKE_INSTALL_PREFIX=$MAPLE" + "-DCMAKE_INSTALL_RPATH=/lib" + "-DCMAKE_INSTALL_RUNSTATEDIR=run" + "-DCMAKE_INSTALL_SHAREDSTATEDIR=usr/com" + "-DCMAKE_SYSROOT=$MAPLE" + "-DCMAKE_SYSTEM_NAME=Linux" + "-DLLVM_HOST_TRIPLE=$TARGET" + "-DLLVM_USE_LINKER=lld" + "-DLLVM_TARGETS_TO_BUILD=X86" + "-DLLVM_ENABLE_ZSTD=OFF" +) + +# (LLVM) Builtins Build +# NOTE: For some reason, atomics are not built unless you... disable the thing +# that disables it? Why was it implemented this way? ~ahill +cmake -S compiler-rt/lib/builtins -B build-builtins \ + $COMMON_LLVM_CMAKE \ + -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF +cmake --build build-builtins +cmake --install build-builtins + +# musl Build (Stage 2) +# FIXME: CVE-2025-26519 +cd ../musl-*/ +make -O clean +CFLAGS="-fuse-ld=lld --sysroot=$MAPLE $CFLAGS" \ +LIBCC="$MAPLE/lib/linux/libclang_rt.builtins-x86_64.a" \ +./configure \ + --bindir=/bin \ + --build=$BUILD \ + --includedir=/usr/include \ + --libdir=/lib \ + --prefix=/ \ + --target=$TARGET make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE +make -O install DESTDIR=$MAPLE # NOTE: musl provides static libraries for POSIX libraries such as libm, but # fails to provide shared versions which will breaks builds later on. # Granted, they are useless since libc.so contains all the functionality @@ -123,272 +134,59 @@ done # entry point is something I have never thought of before, but I'm # interested in exploring the possibilities. ~ahill ln -sf /lib/ld-musl-x86_64.so.1 $MAPLE/bin/ldd -cd .. - -# dash Build -tar xf ../sources/dash-*.tar* -cd dash-*/ -./configure \ - --datarootdir=/usr/share \ - --exec-prefix="" \ - --includedir=/usr/include \ - --libexecdir=/lib \ - --prefix="" \ - --sharedstatedir=/usr/com -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -ln -sf dash $MAPLE/bin/sh -cd .. - -# m4 Build -tar xf ../sources/m4-*.tar* -cd m4-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-nls \ - --enable-c++ \ - --includedir=/usr/include \ - --libexecdir=/lib \ - --prefix="" \ - --sharedstatedir=/usr/com -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -cd .. - -# Coreutils Build -tar xf ../sources/coreutils-*.tar* -cd coreutils-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-nls \ - --enable-install-program=hostname \ - --includedir=/usr/include \ - --libexecdir=/lib \ - --prefix="" \ - --sharedstatedir=/usr/com -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -cd .. +cd ../llvm-project-*/ -# Diffutils Build -tar xf ../sources/diffutils-*.tar* -cd diffutils-*/ -./configure \ - --disable-nls \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -cd .. - -# Findutils Build -tar xf ../sources/findutils-*.tar* -cd findutils-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-nls \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -cd .. - -# Grep Build -tar xf ../sources/grep-*.tar* -cd grep-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-nls \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -cd .. - -# Gzip Build -tar xf ../sources/gzip-*.tar* -cd gzip-*/ -./configure \ - --datarootdir=/usr/share \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREAD -make -O -j $THREAD install DESTDIR=$MAPLE -cd .. - -# Make Build -tar xf ../sources/make-*.tar* -cd make-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-nls \ - --enable-year2038 \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREAD -make -O -j $THREAD install DESTDIR=$MAPLE -cd .. - -# Sed Build -tar xf ../sources/sed-*.tar* -cd sed-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-i18n \ - --disable-nls \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREAD -make -O -j $THREAD install DESTDIR=$MAPLE -cd .. - -# Tar Build -tar xf ../sources/tar-*.tar* -cd tar-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-nls \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREAD -make -O -j $THREAD install DESTDIR=$MAPLE -cd .. - -# Xz Build -tar xf ../sources/xz-*.tar* -cd xz-*/ -./configure \ - --datarootdir=/usr/share \ - --disable-doc \ - --disable-nls \ - --disable-static \ - --enable-year2038 \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREAD -make -O -j $THREAD install DESTDIR=$MAPLE -cd .. - -# Gawk Build -tar xf ../sources/gawk-*.tar* -cd gawk-*/ -./configure \ - --disable-mpfr \ - --disable-nls \ - --exec-prefix="" \ - --libexecdir=/lib \ - --localstatedir=/var \ - --prefix=/usr \ - --sysconfdir=/etc -make -O -j $THREADS -make -O -j $THREADS install DESTDIR=$MAPLE -cd .. - -# LLVM Build (Stage 2) -# NOTE: We are removing the sysroot option from CFLAGS and CXXFLAGS to prevent a -# potential conflict with CMake. Adapted from Nick's contribution. ~ahill -export CFLAGS=$(echo $CFLAGS | sed "s/--sysroot=\S*//") -export CXXFLAGS=$(echo $CXXFLAGS | sed "s/--sysroot=\S*//") -cd llvm-project-*/ -TOOLCHAIN_FILE=$HOST-maple-clang.cmake -# NOTE: First time doing this. Did I do it right? ~ahill -echo "set(CMAKE_SYSTEM_NAME Linux)" > $TOOLCHAIN_FILE -echo "set(CMAKE_SYSROOT $MAPLE)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_C_COMPILER_TARGET $HOST)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_CXX_COMPILER_TARGET $HOST)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_C_FLAGS_INIT \"$CFLAGS\")" >> $TOOLCHAIN_FILE -echo "set(CMAKE_CXX_FLAGS_INIT \"$CXXFLAGS\")" >> $TOOLCHAIN_FILE -echo "set(CMAKE_LINKER_TYPE LLD)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_C_COMPILER \"$CC\")" >> $TOOLCHAIN_FILE -echo "set(CMAKE_CXX_COMPILER \"$CXX\")" >> $TOOLCHAIN_FILE -echo "set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)" >> $TOOLCHAIN_FILE -echo "set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)" >> $TOOLCHAIN_FILE +# (LLVM) Runtimes Build # TODO: Is it possible to prevent CMake from building static libraries? ~ahill -# NOTE: compiler-rt fails to build on musl because execinfo.h is missing. -# Disabling COMPILER_RT_BUILD_GWP_ASAN works. ~ahill -# See also: https://github.com/llvm/llvm-project/issues/60687 -# TODO: When building LLVM from an older version, clang-tblgen and llvm-tblgen -# start complaining about missing libc++ symbols when CMake builds a -# native version for the build. CLANG_TABLEGEN and LLVM_TABLEGEN are both -# set, but that only seems to temporarily defer the build. ~ahill -# See also: https://github.com/llvm/llvm-project/issues/53561 -cmake -B stage2 -G Ninja -S llvm \ +# NOTE: We have to trick CMake because we don't have a copy of libunwind yet, so +# CMAKE_C_COMPILER_WORKS and CMAKE_CXX_COMPILER_WORKS are manually set to +# prevent it from trying to link with libunwind initially. ~ahill +cmake -S runtimes -B build-runtimes \ + $COMMON_LLVM_CMAKE \ + -DCMAKE_C_COMPILER_WORKS=ON \ + -DCMAKE_C_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \ + -DCMAKE_CXX_COMPILER_WORKS=ON \ + -DCMAKE_CXX_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \ + -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF \ + -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ + -DLIBCXX_CXX_ABI=libcxxabi \ + -DLIBCXX_HAS_MUSL_LIBC=ON \ + -DLIBCXX_USE_COMPILER_RT=ON \ + -DLIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL=OFF \ + -DLIBCXXABI_USE_COMPILER_RT=ON \ + -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ + -DLIBUNWIND_USE_COMPILER_RT=ON \ + -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx" +cmake --build build-runtimes +cmake --install build-runtimes + +# (LLVM) LLVM Build +# NOTE: For some reason, atomics cannot be found in compiler-rt, so we have to +# help it by specifying HAVE_CXX_ATOMICS_WITHOUT_LIB and +# HAVE_CXX_ATOMICS64_WITHOUT_LIB. ~ahill +cmake -S llvm -B build-llvm \ + $COMMON_LLVM_CMAKE \ -DCLANG_DEFAULT_CXX_STDLIB=libc++ \ - -DCLANG_DEFAULT_RTLIB=compiler-rt \ - -DCLANG_DEFAULT_UNWINDLIB=libunwind \ - -DCLANG_VENDOR=Maple \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ - -DCMAKE_INSTALL_BINDIR=$MAPLE/bin \ - -DCMAKE_INSTALL_LIBDIR=$MAPLE/lib \ - -DCMAKE_INSTALL_PREFIX=$MAPLE/usr \ - -DCMAKE_INSTALL_RPATH=/lib \ - -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ - -DCMAKE_TOOLCHAIN_FILE=$(pwd)/$TOOLCHAIN_FILE \ - -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \ - -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \ - -DLIBCXX_CXX_ABI=libcxxabi \ - -DLIBCXX_HAS_MUSL_LIBC=ON \ - -DLIBCXX_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_COMPILER_RT=ON \ - -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DLIBUNWIND_ENABLE_ASSERTIONS=OFF \ - -DLIBUNWIND_USE_COMPILER_RT=ON \ - -DLLVM_BUILD_LLVM_DYLIB=ON \ - -DLLVM_ENABLE_LIBCXX=ON \ - -DLLVM_ENABLE_LLD=ON \ - -DLLVM_ENABLE_PROJECTS="clang;libclc;lld;lldb;llvm" \ - -DLLVM_ENABLE_RTTI=ON \ - -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx" \ - -DLLVM_ENABLE_ZSTD=OFF \ - -DLLVM_HOST_TRIPLE=$HOST \ - -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \ - -DLLVM_INSTALL_UTILS=ON \ - -DLLVM_LINK_LLVM_DYLIB=ON -cmake --build stage2 -cmake --install stage2 -ln -sf clang $MAPLE/bin/cc -ln -sf clang++ $MAPLE/bin/c++ -ln -sf ld.lld $MAPLE/bin/ld -# NOTE: Temporary workaround because builds that require __config fail -# otherwise. Is there a better solution for this? ~ahill -mv $MAPLE/maple/tools/include/$HOST/c++/v1/__config_site $MAPLE/maple/tools/include/c++/v1/ -cd .. - -# Rust Build -tar xf ../sources/rustc-*.tar* -cd rustc-*/ + -DCLANG_DEFAULT_RTLIB=compiler-rt \ + -DCLANG_DEFAULT_UNWINDLIB=libunwind \ + -DCLANG_VENDOR=Maple \ + -DCMAKE_C_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -unwindlib=libunwind -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \ + -DCMAKE_CXX_FLAGS="-fuse-ld=lld -Qunused-arguments -rtlib=compiler-rt -stdlib=libc++ -unwindlib=libunwind -Wl,--dynamic-linker=/lib/ld-musl-x86_64.so.1" \ + -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ + -DCXX_SUPPORTS_CUSTOM_LINKER=ON \ + -DHAVE_CXX_ATOMICS_WITHOUT_LIB=ON \ + -DHAVE_CXX_ATOMICS64_WITHOUT_LIB=ON \ + -DLLVM_BUILD_LLVM_DYLIB=ON \ + -DLLVM_ENABLE_LIBCXX=ON \ + -DLLVM_ENABLE_PROJECTS="clang;libclc;lld;lldb;llvm" \ + -DLLVM_ENABLE_RTTI=ON \ + -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \ + -DLLVM_INSTALL_UTILS=ON \ + -DLLVM_LINK_LLVM_DYLIB=ON +cmake --build build-llvm # ... -cd .. +# Finally done with LLVM ~ahill cd .. -# Copy the necessary configuration files to the bootstrap -cp -rv root/* maple/ -cp config/linux.$(uname -m).config $MAPLE/maple/ +# ...
\ No newline at end of file diff --git a/sources.list b/sources.list index d84c23f..f9ebdaf 100644 --- a/sources.list +++ b/sources.list @@ -1,25 +1,25 @@ #sha256sum,comment,url,filename(optional) -ba885c1319578d6c94d46e9b0dceb4014caafe2490e437a0dbca3f270a223f5a,autoconf,https://ftpmirror.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz, -168aa363278351b89af56684448f525a5bce5079d0b6842bd910fdd3f1646887,automake,https://ftpmirror.gnu.org/gnu/automake/automake-1.18.1.tar.xz, +ba885c1319578d6c94d46e9b0dceb4014caafe2490e437a0dbca3f270a223f5a,autoconf,https://ftp.gnu.org/gnu/autoconf/autoconf-2.72.tar.xz, +168aa363278351b89af56684448f525a5bce5079d0b6842bd910fdd3f1646887,automake,https://ftp.gnu.org/gnu/automake/automake-1.18.1.tar.xz, 0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d,babel,https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz, -ae470fec429775653e042015edc928d07c8c3b2fc59765172a330d3d87785f86,bc,https://ftpmirror.gnu.org/gnu/bc/bc-1.08.2.tar.gz, -9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2,bison,https://ftpmirror.gnu.org/gnu/bison/bison-3.8.2.tar.xz, +ae470fec429775653e042015edc928d07c8c3b2fc59765172a330d3d87785f86,bc,https://ftp.gnu.org/gnu/bc/bc-1.08.2.tar.gz, +9bba0214ccf7f1079c5d59210045227bcf619519840ebfa80cd3849cff5a5bf2,bison,https://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.xz, 698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397,build,https://files.pythonhosted.org/packages/25/1c/23e33405a7c9eac261dff640926b8b5adaed6a6eb3e1767d441ed611d0c0/build-1.3.0.tar.gz, ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269,bzip2,https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz, 445ed8208a6e4823de1226a74ca319d3600e83f6369f99b14265006599c32ccb,cairo,https://cairographics.org/releases/cairo-1.18.4.tar.xz, 33ea8eb2a4daeaa506e8fcafd5d6d89027ed6f2f0609645c6f149b560d301706,chrony,https://chrony-project.org/releases/chrony-4.8.tar.gz, ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a,click,https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz, 643f04182b7ba323ab31f526f785134fb79cba3188a852206ef0473fee282a15,cmake,https://github.com/Kitware/CMake/releases/download/v4.1.2/cmake-4.1.2.tar.gz, -e6d4fd2d852c9141a1c2a18a13d146a0cd7e45195f72293a4e4c044ec6ccca15,coreutils,https://ftpmirror.gnu.org/gnu/coreutils/coreutils-9.8.tar.xz, -937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db,cpio,https://ftpmirror.gnu.org/gnu/cpio/cpio-2.15.tar.bz2, +e6d4fd2d852c9141a1c2a18a13d146a0cd7e45195f72293a4e4c044ec6ccca15,coreutils,https://ftp.gnu.org/gnu/coreutils/coreutils-9.8.tar.xz, +937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db,cpio,https://ftp.gnu.org/gnu/cpio/cpio-2.15.tar.bz2, 40c8cddbcb6cc6251c03dea423a472a6cea4037be654ba5cf5dec6eb2d22ff1d,curl,https://curl.se/download/curl-8.16.0.tar.xz, 845fd61702ae5e53e09664faa450da82805958924b109b8c5b4777bd8551af00,dash,https://salsa.debian.org/debian/dash/-/archive/debian/0.5.12-12/dash-debian-0.5.12-12.tar.gz, 6721e606609226dbf4d864a78802a9e96beec0ee034a1bd84138b3e037bba7d9,dhcpcd,https://github.com/NetworkConfiguration/dhcpcd/releases/download/v10.2.4/dhcpcd-10.2.4.tar.xz, -7c8b7f9fc8609141fdea9cece85249d308624391ff61dedaf528fcb337727dfd,diffutils,https://ftpmirror.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz, +7c8b7f9fc8609141fdea9cece85249d308624391ff61dedaf528fcb337727dfd,diffutils,https://ftp.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz, 64926eebf90092dca21b14259a5301b7b98e7b1943e8a201c7d726084809b527,dosfstools,https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz, 93ebe1294ee3203d3bf548c78d51bde9494d3f24de64eaec380a2620f0431f20,dropbear,https://github.com/mkj/dropbear/archive/refs/tags/DROPBEAR_2025.88.tar.gz,dropbear-2025.88.tar.gz 71df8f40706a7bb0a80a5367079ea75d91da4f8c65c58ec59bcdfbf7decdab9f,expat,https://github.com/libexpat/libexpat/releases/download/R_2_7_3/expat-2.7.3.tar.xz, -1387e0b67ff247d2abde998f90dfbf70c1491391a59ddfecb8ae698789f0a4f5,findutils,https://ftpmirror.gnu.org/gnu/findutils/findutils-4.10.0.tar.xz, +1387e0b67ff247d2abde998f90dfbf70c1491391a59ddfecb8ae698789f0a4f5,findutils,https://ftp.gnu.org/gnu/findutils/findutils-4.10.0.tar.xz, 1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c,fribidi,https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz, 2b47e8f2d90d35d29339ed78e1a6eabb36eefa9cfa5a5ca3b0d1f27502c43675,flatpak,https://github.com/flatpak/flatpak/releases/download/1.16.1/flatpak-1.16.1.tar.xz, e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995,flex,https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz, @@ -27,7 +27,7 @@ e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995,flex,https://gi f0129159515c13ebe53ba2a6a94755e98c266470e844ee0aacc6196fd62b44f0,font-util,https://gitlab.freedesktop.org/xorg/font/util/-/archive/font-util-1.4.1/util-font-util-1.4.1.tar.gz, 82e73b26adad651b236e5f5d4b3074daf8ff0910188808496326bd3449e5261d,fontconfig,https://gitlab.freedesktop.org/fontconfig/fontconfig/-/archive/2.17.1/fontconfig-2.17.1.tar.gz, 32427e8c471ac095853212a37aef816c60b42052d4d9e48230bab3bdf2936ccc,freetype,https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.xz, -f8c3486509de705192138b00ef2c00bbbdd0e84c30d5c07d23fc73a9dc4cc9cc,gawk,https://ftpmirror.gnu.org/gnu/gawk/gawk-5.3.2.tar.xz, +f8c3486509de705192138b00ef2c00bbbdd0e84c30d5c07d23fc73a9dc4cc9cc,gawk,https://ftp.gnu.org/gnu/gawk/gawk-5.3.2.tar.xz, cc591e3949a95e2f7b50173c9373df8846648b15aa596d9e7ec7258381bfac0d,gdk-pixbuf,https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/archive/2.44.3/gdk-pixbuf-2.44.3.tar.gz, d1fb86e260cfe7da6031f94d2e44c0da55903dbae0a2fa0fae78c91ae1b56f00,gettext,https://ftp.gnu.org/pub/gnu/gettext/gettext-0.26.tar.xz, 3524fc5fd81f16f80e1696a8281bd8ad831048b67848015d7b7382bf365ae685,git,https://github.com/git/git/archive/refs/tags/v2.51.0.tar.gz,git-2.51.0.tar.gz @@ -35,9 +35,9 @@ d1fb86e260cfe7da6031f94d2e44c0da55903dbae0a2fa0fae78c91ae1b56f00,gettext,https:/ b16c78e7604b9be9f546ee35ad8b6db6f39bbbbfb19e8d038b6fe2ea5bba4ff4,glslang,https://github.com/KhronosGroup/glslang/archive/refs/tags/15.4.0.tar.gz,glslang-15.4.0.tar.gz a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898,gmp,https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz, fd87e0aba7e43ae054837afd6cd4db03a3f2693deb3619085e6ed9d8d9604ad8,gperf,https://ftp.gnu.org/pub/gnu/gperf/gperf-3.3.tar.gz, -2649b27c0e90e632eadcd757be06c6e9a4f48d941de51e7c0f83ff76408a07b9,grep,https://ftpmirror.gnu.org/gnu/grep/grep-3.12.tar.xz, +2649b27c0e90e632eadcd757be06c6e9a4f48d941de51e7c0f83ff76408a07b9,grep,https://ftp.gnu.org/gnu/grep/grep-3.12.tar.xz, 069a00aa1fc893f18423602f4e095583be5a220429f6e8a58d70511490b4b019,gvdb,https://gitlab.gnome.org/GNOME/gvdb/-/archive/2b42fc75f09dbe1cd1057580b5782b08f2dcb400/gvdb-2b42fc75f09dbe1cd1057580b5782b08f2dcb400.tar.gz, -01a7b881bd220bfdf615f97b8718f80bdfd3f6add385b993dcf6efd14e8c0ac6,gzip,https://ftpmirror.gnu.org/gnu/gzip/gzip-1.14.tar.xz, +01a7b881bd220bfdf615f97b8718f80bdfd3f6add385b993dcf6efd14e8c0ac6,gzip,https://ftp.gnu.org/gnu/gzip/gzip-1.14.tar.xz, e5c81b7f6e0b102dfb000cfa424538b8e896ab78a2f4b8a5ec8cae62ab43369e,harfbuzz,https://github.com/harfbuzz/harfbuzz/releases/download/12.1.0/harfbuzz-12.1.0.tar.xz, d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000,importlib_metadata,https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz, 9781e59410ab7dea8e9f79bb10ff1488e63d10fcbb70503b94426ba27a8e2dec,iproute2,https://www.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.17.0.tar.xz, @@ -60,7 +60,7 @@ f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc,libffi,https:// a395317730e0e8d5e71419d4d1256a89e32c2fa793607b63c4d0fb497ae34602,libpciaccess,https://gitlab.freedesktop.org/xorg/lib/libpciaccess/-/archive/libpciaccess-0.18.1/libpciaccess-libpciaccess-0.18.1.tar.gz, 4df396518620a7aa3651443e87d1b2862e4e88cad135a8b93423e01706232307,libpng,https://download.sourceforge.net/libpng/libpng-1.6.50.tar.xz, c7ff7a7d675d5f57730940e5ccff1dbe2dcd5b7405b5397e0f7ffd66a5ed5679,libressl,https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.1.1.tar.gz, -f81f5860666b0bc7d84baddefa60d1cb9fa6fceb2398cc3baca6afaa60266675,libtool,https://ftpmirror.gnu.org/gnu/libtool/libtool-2.5.4.tar.xz, +f81f5860666b0bc7d84baddefa60d1cb9fa6fceb2398cc3baca6afaa60266675,libtool,https://ftp.gnu.org/gnu/libtool/libtool-2.5.4.tar.xz, 0bd89b657d62d019598e6c7ed726ff8fed80e8ba092a83b484d66afb80b77da5,libudev-zero,https://github.com/illiliti/libudev-zero/archive/refs/tags/1.0.3.tar.gz,libudev-zero-1.0.3.tar.gz ea97bead1e8721d9002055970e8ad64ef79ee9dcee8595a3dae2cf5c2192a47f,libX11,https://gitlab.freedesktop.org/xorg/lib/libx11/-/archive/libX11-1.8.12/libx11-libX11-1.8.12.tar.gz, af261cc1b3b349cfe7a7899a48b4e4aa257b4d11bf2ea084fb3191df7d15fbe9,libXau,https://gitlab.freedesktop.org/xorg/lib/libxau/-/archive/libXau-1.0.12/libxau-libXau-1.0.12.tar.gz, @@ -82,8 +82,8 @@ a23745e7865f4aa2ee2610f289ed8081140580cbe577b46aa1a7fb28ab7192cf,libXxf86vm,http fdebcb065065f5c1b8dc68a6fb59cda50cdddbf9103d207c2196d55ea764f57f,Linux,https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.17.2.tar.xz, 21dbcec6e01dd578f14789eac9024a18941e6f2702a05cf91b28c232eeb26ab0,Linux PAM,https://github.com/linux-pam/linux-pam/releases/download/v1.7.1/Linux-PAM-1.7.1.tar.xz, 9c9db50d8046f668156d83f6b594631b4ca79a0d96e4f19bed9dc019b022e58f,LLVM,https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.3/llvm-project-21.1.3.src.tar.xz, -e236ea3a1ccf5f6c270b1c4bb60726f371fa49459a8eaaebc90b216b328daf2b,m4,https://ftpmirror.gnu.org/gnu/m4/m4-1.4.20.tar.xz, -dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3,make,https://ftpmirror.gnu.org/gnu/make/make-4.4.1.tar.gz, +e236ea3a1ccf5f6c270b1c4bb60726f371fa49459a8eaaebc90b216b328daf2b,m4,https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.xz, +dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3,make,https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz, 99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28,mako,https://files.pythonhosted.org/packages/9e/38/bd5b78a920a64d708fe6bc8e0a2c075e1389d53bef8413725c63ba041535/mako-1.3.10.tar.gz, ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0,markupsafe,https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz, ec966eec39879f33c785343373021c44f887c836a08fcaf1d63412e3bdbfca32,mdevd,https://skarnet.org/software/mdevd/mdevd-0.1.7.0.tar.gz, @@ -98,7 +98,7 @@ b7324cbe86e767b65f26f467ed8b12ad80e124e3ccb89076855c98e43a9eddd4,nasm,https://ww 1b661016bd8cd4189be83b441dd7062c967b641fdc00f741e359e22d06857df8,openrc,https://github.com/OpenRC/openrc/archive/refs/tags/0.63.tar.gz,openrc-0.63.tar.gz d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f,packaging,https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz, 1b2e2f683dfb5adec3faf17087ade8c648f10a5d3d0e17e421e0ac1a39e6740e,pango,https://gitlab.gnome.org/GNOME/pango/-/archive/1.57.0/pango-1.57.0.tar.gz, -f87cee69eec2b4fcbf60a396b030ad6aa3415f192aa5f7ee84cad5e11f7f5ae3,patch,https://ftpmirror.gnu.org/gnu/patch/patch-2.8.tar.xz, +f87cee69eec2b4fcbf60a396b030ad6aa3415f192aa5f7ee84cad5e11f7f5ae3,patch,https://ftp.gnu.org/gnu/patch/patch-2.8.tar.xz, 8d28d7f2c3b970c3a4bf3776bcbb5adfc923183ce74bc8df1ebaad8c1985bd07,pcre2,https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.46/pcre2-10.46.tar.gz, e093ef184d7f9a1b9797e2465296f55510adb6dab8842b0c3ed53329663096dc,perl,https://www.cpan.org/src/5.0/perl-5.42.0.tar.gz, a098c33924754ad43f981b740f6d576c70f9ed1006e12221b1845431ebce1239,pixman,https://cairographics.org/releases/pixman-0.46.4.tar.xz, @@ -111,7 +111,7 @@ c2e6d193cc78f84cd6ddb72aaf6d5c6a9162f0470e5992092057f5ff518562fa,procps-ng,https d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e,pyyaml,https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz, 6bfeaddd90ffda2f063492b092bfed925c4b8c701579baf4b1316e021470daac,rustc,https://static.rust-lang.org/dist/rustc-1.90.0-src.tar.xz, 3b8cf51548dfc49b7efe035e191ff5e1963ebc4fe8f6064a5eefc5343eaf78a5,samurai,https://github.com/michaelforney/samurai/releases/download/1.2/samurai-1.2.tar.gz, -6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181,sed,https://ftpmirror.gnu.org/gnu/sed/sed-4.9.tar.xz, +6e226b732e1cd739464ad6862bd1a1aba42d7982922da7a53519631d24975181,sed,https://ftp.gnu.org/gnu/sed/sed-4.9.tar.xz, f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c,setuptools,https://files.pythonhosted.org/packages/18/5d/3bf57dcd21979b887f014ea83c24ae194cfcd12b9e0fda66b957c69d1fca/setuptools-80.9.0.tar.gz, 6662c9b9497b6c9bf13bead9d7a9084756f68238302c5ed089fb4dbd29d102d7,setuptools_scm,https://files.pythonhosted.org/packages/8f/8d/ffdcace33d0480d591057a30285b7c33f8dc431fed3fff7dbadf5f9f128f/setuptools_scm-9.2.0.tar.gz, add4604d3bc410344433122a819ee4154b79dd8316a56298c60417e637c07608,shadow,https://github.com/shadow-maint/shadow/releases/download/4.18.0/shadow-4.18.0.tar.xz, @@ -121,7 +121,7 @@ add4604d3bc410344433122a819ee4154b79dd8316a56298c60417e637c07608,shadow,https:// 5bbea925663d4cd2bab23efad53874f2718248a73dcaf9dd21dff8cb48e602fc,SPIRV-Headers,https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/vulkan-sdk-1.4.321.0.tar.gz,SPIRV-Headers-vulkan-sdk-1.4.321.0.tar.gz 4f7019a06c731daebbc18080db338964002493ead4cfb440fef95d120c50a170,SPIRV-LLVM-Translator,https://github.com/KhronosGroup/SPIRV-LLVM-Translator/archive/refs/tags/v21.1.0.tar.gz,spirv-llvm-translator-21.1.0.tar.gz 6a9313fa68e061d463f616357cd24cdf1c3a27d906ea791d7ba67dd1b6666a40,SPIRV-Tools,https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v2025.1.tar.gz,spirv-tools-2025.1.tar.gz -4d62ff37342ec7aed748535323930c7cf94acf71c3591882b26a7ea50f3edc16,tar,https://ftpmirror.gnu.org/gnu/tar/tar-1.35.tar.xz, +4d62ff37342ec7aed748535323930c7cf94acf71c3591882b26a7ea50f3edc16,tar,https://ftp.gnu.org/gnu/tar/tar-1.35.tar.xz, b92017489bdc1db3a4c97191aa4b75366673cb746de0dce5d7a749d5954681ba,tiff,https://download.osgeo.org/libtiff/tiff-4.7.1.tar.xz, 6ee152cfb083a378285a49c8e52294307458119147f795bfb7f460cb7ed1d659,tinyramfs,https://github.com/illiliti/tinyramfs/archive/refs/tags/0.2.0.tar.gz,tinyramfs-0.2.0.tar.gz cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff,tomli,https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz, |
