Loading packaging/build-nspawn.sh +60 −5 Original line number Diff line number Diff line Loading @@ -139,6 +139,63 @@ setup_toolchain() { make -j\$(nproc) make install # Build libc++, libc++abi and libunwind against musl from LLVM source cd /tmp LLVM_TAG=llvmorg-${LLVM_VERSION}.1.8 wget -q https://github.com/llvm/llvm-project/archive/refs/tags/\${LLVM_TAG}.tar.gz -O llvm-project.tar.gz tar xf llvm-project.tar.gz LLVM_SRC=/tmp/llvm-project-\${LLVM_TAG} # Build libunwind (no C++ deps) mkdir -p /tmp/build-libunwind && cd /tmp/build-libunwind cmake \${LLVM_SRC}/libunwind -G Ninja \ -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ -DCMAKE_C_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC\" \ -DCMAKE_CXX_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC -nostdinc++\" \ -DCMAKE_EXE_LINKER_FLAGS=\"-fuse-ld=lld --target=x86_64-linux-musl -L/usr/local/musl/lib -rtlib=compiler-rt\" \ -DCMAKE_INSTALL_PREFIX=/usr/local/musl \ -DLIBUNWIND_ENABLE_SHARED=OFF \ -DLIBUNWIND_USE_COMPILER_RT=ON \ -DLLVM_PATH=\${LLVM_SRC}/llvm ninja ninja install # Build libc++abi (depends on libunwind) mkdir -p /tmp/build-libcxxabi && cd /tmp/build-libcxxabi cmake \${LLVM_SRC}/libcxxabi -G Ninja \ -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ -DCMAKE_C_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC\" \ -DCMAKE_CXX_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC -nostdinc++ -I\${LLVM_SRC}/libcxx/include\" \ -DCMAKE_EXE_LINKER_FLAGS=\"-fuse-ld=lld --target=x86_64-linux-musl -L/usr/local/musl/lib -rtlib=compiler-rt -lunwind\" \ -DCMAKE_INSTALL_PREFIX=/usr/local/musl \ -DLIBCXXABI_ENABLE_SHARED=OFF \ -DLIBCXXABI_USE_COMPILER_RT=ON \ -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ -DLIBCXXABI_LIBUNWIND_PATH=\${LLVM_SRC}/libunwind \ -DLLVM_PATH=\${LLVM_SRC}/llvm ninja ninja install # Build libc++ (depends on libc++abi) mkdir -p /tmp/build-libcxx && cd /tmp/build-libcxx cmake \${LLVM_SRC}/libcxx -G Ninja \ -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ -DCMAKE_C_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC\" \ -DCMAKE_CXX_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC -nostdinc++ -I\${LLVM_SRC}/libcxx/include\" \ -DCMAKE_EXE_LINKER_FLAGS=\"-fuse-ld=lld --target=x86_64-linux-musl -L/usr/local/musl/lib -rtlib=compiler-rt -lunwind -lc++abi\" \ -DCMAKE_INSTALL_PREFIX=/usr/local/musl \ -DLIBCXX_ENABLE_SHARED=OFF \ -DLIBCXX_USE_COMPILER_RT=ON \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=\${LLVM_SRC}/libcxxabi/include \ -DLIBCXX_HAS_MUSL_LIBC=ON \ -DLLVM_PATH=\${LLVM_SRC}/llvm ninja ninja install # Create musl-clang wrapper that uses libc++ and compiler-rt cat > /usr/local/musl/bin/musl-clang++ << 'WRAPPER' #!/bin/sh Loading Loading @@ -179,8 +236,6 @@ WRAPPER # Find compiler-rt lib path RT_PATH=\$(dirname \$(find /usr/lib/llvm-${LLVM_VERSION} -name 'libclang_rt.builtins-x86_64.a' | head -1)) LLVM_LIB=/usr/lib/llvm-${LLVM_VERSION}/lib SYSTEM_LIB=/usr/lib/x86_64-linux-gnu cat > /usr/local/musl/share/musl-llvm-toolchain.cmake << CMAKE set(CMAKE_SYSTEM_NAME Linux) Loading @@ -191,10 +246,10 @@ set(CMAKE_CXX_COMPILER clang++-${LLVM_VERSION}) set(CMAKE_LINKER lld-${LLVM_VERSION}) set(CMAKE_C_FLAGS_INIT \"--target=x86_64-linux-musl --sysroot=/usr/local/musl -isystem /usr/local/musl/include -fPIC\") set(CMAKE_CXX_FLAGS_INIT \"--target=x86_64-linux-musl --sysroot=/usr/local/musl -isystem /usr/local/musl/include -nostdinc++ -isystem /usr/include/c++/v1 -fPIC\") set(CMAKE_CXX_FLAGS_INIT \"--target=x86_64-linux-musl --sysroot=/usr/local/musl -isystem /usr/local/musl/include -nostdinc++ -isystem /usr/local/musl/include/c++/v1 -fPIC\") set(CMAKE_EXE_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${LLVM_LIB} -L\${SYSTEM_LIB} -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_SHARED_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${LLVM_LIB} -L\${SYSTEM_LIB} -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_EXE_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_SHARED_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_CXX_STANDARD_LIBRARIES \"-lc++ -lc++abi -lunwind\") Loading Loading
packaging/build-nspawn.sh +60 −5 Original line number Diff line number Diff line Loading @@ -139,6 +139,63 @@ setup_toolchain() { make -j\$(nproc) make install # Build libc++, libc++abi and libunwind against musl from LLVM source cd /tmp LLVM_TAG=llvmorg-${LLVM_VERSION}.1.8 wget -q https://github.com/llvm/llvm-project/archive/refs/tags/\${LLVM_TAG}.tar.gz -O llvm-project.tar.gz tar xf llvm-project.tar.gz LLVM_SRC=/tmp/llvm-project-\${LLVM_TAG} # Build libunwind (no C++ deps) mkdir -p /tmp/build-libunwind && cd /tmp/build-libunwind cmake \${LLVM_SRC}/libunwind -G Ninja \ -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ -DCMAKE_C_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC\" \ -DCMAKE_CXX_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC -nostdinc++\" \ -DCMAKE_EXE_LINKER_FLAGS=\"-fuse-ld=lld --target=x86_64-linux-musl -L/usr/local/musl/lib -rtlib=compiler-rt\" \ -DCMAKE_INSTALL_PREFIX=/usr/local/musl \ -DLIBUNWIND_ENABLE_SHARED=OFF \ -DLIBUNWIND_USE_COMPILER_RT=ON \ -DLLVM_PATH=\${LLVM_SRC}/llvm ninja ninja install # Build libc++abi (depends on libunwind) mkdir -p /tmp/build-libcxxabi && cd /tmp/build-libcxxabi cmake \${LLVM_SRC}/libcxxabi -G Ninja \ -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ -DCMAKE_C_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC\" \ -DCMAKE_CXX_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC -nostdinc++ -I\${LLVM_SRC}/libcxx/include\" \ -DCMAKE_EXE_LINKER_FLAGS=\"-fuse-ld=lld --target=x86_64-linux-musl -L/usr/local/musl/lib -rtlib=compiler-rt -lunwind\" \ -DCMAKE_INSTALL_PREFIX=/usr/local/musl \ -DLIBCXXABI_ENABLE_SHARED=OFF \ -DLIBCXXABI_USE_COMPILER_RT=ON \ -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ -DLIBCXXABI_LIBUNWIND_PATH=\${LLVM_SRC}/libunwind \ -DLLVM_PATH=\${LLVM_SRC}/llvm ninja ninja install # Build libc++ (depends on libc++abi) mkdir -p /tmp/build-libcxx && cd /tmp/build-libcxx cmake \${LLVM_SRC}/libcxx -G Ninja \ -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ -DCMAKE_C_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC\" \ -DCMAKE_CXX_FLAGS=\"--target=x86_64-linux-musl --sysroot=/usr/local/musl -fPIC -nostdinc++ -I\${LLVM_SRC}/libcxx/include\" \ -DCMAKE_EXE_LINKER_FLAGS=\"-fuse-ld=lld --target=x86_64-linux-musl -L/usr/local/musl/lib -rtlib=compiler-rt -lunwind -lc++abi\" \ -DCMAKE_INSTALL_PREFIX=/usr/local/musl \ -DLIBCXX_ENABLE_SHARED=OFF \ -DLIBCXX_USE_COMPILER_RT=ON \ -DLIBCXX_CXX_ABI=libcxxabi \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=\${LLVM_SRC}/libcxxabi/include \ -DLIBCXX_HAS_MUSL_LIBC=ON \ -DLLVM_PATH=\${LLVM_SRC}/llvm ninja ninja install # Create musl-clang wrapper that uses libc++ and compiler-rt cat > /usr/local/musl/bin/musl-clang++ << 'WRAPPER' #!/bin/sh Loading Loading @@ -179,8 +236,6 @@ WRAPPER # Find compiler-rt lib path RT_PATH=\$(dirname \$(find /usr/lib/llvm-${LLVM_VERSION} -name 'libclang_rt.builtins-x86_64.a' | head -1)) LLVM_LIB=/usr/lib/llvm-${LLVM_VERSION}/lib SYSTEM_LIB=/usr/lib/x86_64-linux-gnu cat > /usr/local/musl/share/musl-llvm-toolchain.cmake << CMAKE set(CMAKE_SYSTEM_NAME Linux) Loading @@ -191,10 +246,10 @@ set(CMAKE_CXX_COMPILER clang++-${LLVM_VERSION}) set(CMAKE_LINKER lld-${LLVM_VERSION}) set(CMAKE_C_FLAGS_INIT \"--target=x86_64-linux-musl --sysroot=/usr/local/musl -isystem /usr/local/musl/include -fPIC\") set(CMAKE_CXX_FLAGS_INIT \"--target=x86_64-linux-musl --sysroot=/usr/local/musl -isystem /usr/local/musl/include -nostdinc++ -isystem /usr/include/c++/v1 -fPIC\") set(CMAKE_CXX_FLAGS_INIT \"--target=x86_64-linux-musl --sysroot=/usr/local/musl -isystem /usr/local/musl/include -nostdinc++ -isystem /usr/local/musl/include/c++/v1 -fPIC\") set(CMAKE_EXE_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${LLVM_LIB} -L\${SYSTEM_LIB} -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_SHARED_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${LLVM_LIB} -L\${SYSTEM_LIB} -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_EXE_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_SHARED_LINKER_FLAGS_INIT \"-fuse-ld=lld -L/usr/local/musl/lib -L\${RT_PATH} -rtlib=compiler-rt --target=x86_64-linux-musl\") set(CMAKE_CXX_STANDARD_LIBRARIES \"-lc++ -lc++abi -lunwind\") Loading