Skip to content

Instantly share code, notes, and snippets.

@compnerd
Last active October 3, 2023 13:18
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save compnerd/ebbc625a359d1d3e292e1fd2007ecb52 to your computer and use it in GitHub Desktop.
Save compnerd/ebbc625a359d1d3e292e1fd2007ecb52 to your computer and use it in GitHub Desktop.
pushd /image/usr/src/linux-5.13.12
make ARCH=x86_64 mrproper
make ARCH=x86_64 INSTALL_HDR_PATH=/image/usr headers_install
popd
mkdir -p /image/var/tmp/build/compiler-rt-12.0.1
pushd /image/var/tmp/build/compiler-rt-12.0.1
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_CXX_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_INSTALL_LIBDIR=lib \
-D CMAKE_INSTALL_PREFIX=/usr \
-D COMPILER_RT_BUILD_LIBFUZZER=NO \
-D COMPILER_RT_BUILD_PROFILE=NO \
-D COMPILER_RT_BUILD_SANITIZERS=NO \
-D COMPILER_RT_BUILD_XRAY=NO \
-D COMPILER_RT_DEFAULT_TARGET_TRIPLE=x86_64-unknown-linux-musl \
-G Ninja \
-S /image/usr/src/compiler-rt-12.0.1.src
ninja
DESTDIR=/image ninja install
popd
mkdir -p /image/var/tmp/build/musl-1.2.2
pushd /image/var/tmp/build/musl-1.2.2
LIBCC=/image/usr/lib/linux/libclang_rt.builtins-x86_64.a \
CC=clang \
/image/usr/src/musl-1.2.2/configure \
--prefix=/usr \
--syslibdir=/usr/lib \
--host=x86_64-unknown-linux-musl \
--disable-static
make -j 32 AR=ar RANLIB=ranlib
make DESTDIR=/image install-libs install-headers
popd
mkdir -p /image/var/tmp/build/libunwind-12.0.1
pushd /image/var/tmp/build/libunwind-12.0.1
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_CXX_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER_WORKS=YES \
-D CMAKE_INSTALL_LIBDIR=lib \
-D CMAKE_INSTALL_PREFIX=/usr \
-D LIBUNWIND_ENABLE_STATIC=NO \
-D LIBUNWIND_USE_COMPILER_RT=YES \
-D LIBUNWIND_INCLUDE_DOCS=NO \
-G Ninja \
-S /image/usr/src/libunwind-12.0.1.src
ninja
DESTDIR=/image ninja install
popd
mkdir -p /image/var/tmp/build/libcxxabi-12.0.1
pushd /image/var/tmp/build/libcxxabi-12.0.1
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_CXX_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER_WORKS=YES \
-D CMAKE_INSTALL_LIBDIR=lib \
-D CMAKE_INSTALL_PREFIX=/usr \
-D LIBCXXABI_USE_LLVM_UNWINDER=YES \
-D LIBCXXABI_USE_COMPILER_RT=YES \
-D LIBCXXABI_TARGET_TRIPLE=x86_64-unknown-linux-musl \
-D LIBCXXABI_SYSROOT=/image/usr \
-D LIBCXXABI_ENABLE_STATIC=NO \
-D LIBCXXABI_LIBCXX_PATH=/image/usr/src/libcxx-12.0.1.src \
-G Ninja \
-S /image/usr/src/libcxxabi-12.0.1.src
ninja
DESTDIR=/image ninja install
popd
mkdir -p /image/var/tmp/build/libcxx-12.0.1
pushd /image/var/tmp/build/libcxx-12.0.1
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_CXX_COMPILER_TARGET=x86_64-unknown-linux-musl \
-D CMAKE_CXX_COMPILER_WORKS=YES \
-D CMAKE_INSTALL_LIBDIR=lib \
-D CMAKE_INSTALL_PREFIX=/usr \
-D LIBCXX_ENABLE_STATIC=NO \
-D LIBCXX_CXX_ABI=libcxxabi \
-D LIBCXX_TARGET_TRIPLE=x86_64-unknown-linux-musl \
-D LIBCXX_SYSROOT=/image/usr \
-D LIBCXX_HAS_MUSL_LIBC=YES \
-D LLVM_PATH=/image/usr/src/llvm-12.0.1.src \
-G Ninja \
-S /image/usr/src/libcxx-12.0.1.src
ninja
DESTDIR=/image ninja install
popd
mkdir -p /image/var/tmp/build/llvm-12.0.1
pushd /image/var/tmp/build/llvm-12.0.1
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_C_FLAGS="--sysroot=/image/usr -stdlib=libc++" \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_CXX_FLAGS="--sysroot=/image -stdlib=libc++" \
-D CMAKE_INSTALL_LIBDIR=lib \
-D CMAKE_INSTALL_PREFIX=/usr \
-D CMAKE_EXE_LINKER_FLAGS="-Xlinker --dynamic-linker=/usr/lib/ld-musl-x86_64.so.1" \
-D LLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-linux-musl \
-D LLVM_ENABLE_PROJECTS="clang;lld" \
-D LLVM_TARGETS_TO_BUILD="AArch64;ARM;RISCV;X86;WebAssembly" \
-D LLVM_INSTALL_BINUTILS_SYMLINKS=YES \
-D LLVM_INSTALL_TOOLCHAIN_ONLY=YES \
-D LLVM_DISTRIBUTION_COMPONENTS="clang;lld" \
-D LLVM_TABLEGEN=/image/var/tmp/build/llvm-tools-12.0.1/bin/llvm-tblgen \
-D CLANG_TABLEGEN=/image/var/tmp/build/llvm-tools-12.0.1/bin/clang-tblgen \
-G Ninja \
-S /image/usr/src/llvm-12.0.1.src
export CFLAGS="-target x86_64-unknown-linux-musl --sysroot=/image/usr"
export CXXFLAGS="-target x86_64-unknown-linux-musl --sysroot=/image/usr"
export LDFLAGS="-target x86_64-unknown-linux-musl --sysroot=/image/usr -stdlib=libc++ -rtlib=compiler-rt -unwindlib=libunwind -Xlinker --dynamic-linker=/usr/lib/ld-musl-x86_64.so.1"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment