toolchain: Save the progress to move it to single stage toolchain

This commit is contained in:
Sameer Rahmani 2023-03-05 18:01:31 +00:00
parent 674543e797
commit a8e938eab2
Signed by: lxsameer
GPG Key ID: B0A4AF28AB9FD90B
2 changed files with 44 additions and 10 deletions

View File

@ -38,10 +38,15 @@ set(LLVM_BUILD_LLVM_DYLIB OFF CACHE BOOL "")
set(LLVM_ENABLE_EH ON CACHE BOOL "")
set(LLVM_ENABLE_RTTI ON CACHE BOOL "")
set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-gnu CACHE STRING "")
set(COMPILER_RT_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-gnu CACHE STRING "")
set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-musl CACHE STRING "")
set(COMPILER_RT_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-musl CACHE STRING "")
set(LLVM_HOST_TRIPLE x86_64-pc-linux-gnu CACHE STRING "")
set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-musl CACHE STRING "")
set(COMPILER_RT_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-musl CACHE STRING "")
set(LLVM_HOST_TRIPLE x86_64-pc-linux-musl CACHE STRING "")
set(LLVM_RUNTIME_TARGETS x86_64-pc-linux-gnu CACHE STRING "")
set(COMPILER_RT_USE_BUILTINS_LIBRARY ON CACHE BOOL "")
# Create the builtin libs of compiler-rt
set(COMPILER_RT_BUILD_BUILTINS ON CACHE BOOL "")
@ -59,9 +64,12 @@ set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
set(LIBCXX_CXX_ABI libcxxabi CACHE BOOL "")
set(LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
set(CLANG_USE_COMPILER_RT ON CACHE BOOL "")
set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
set(LIBCXX_HAS_GCC_LIB OFF CACHE BOOL "")
set(LIBCXX_HAS_MUSL_LIBC ON CACHE BOOL "")
set(CLANG_DEFAULT_CXX_STDLIB "libc++" CACHE STRING "")
set(CLANG_DEFAULT_RTLIB "compiler-rt" CACHE STRING "")
set(CLANG_DEFAULT_UNWINDLIB "libunwind" CACHE STRING "")

View File

@ -30,6 +30,19 @@ STAGE1_DIR="$DEPS_BUILD_DIR/stage1.$LLVM_VERSION.$MUSL_VERSION"
STAGE2_DIR="$DEPS_BUILD_DIR/stage2.$LLVM_VERSION.$MUSL_VERSION"
STAGE2_TC_DIR="$DEPS_BUILD_DIR/stage2_tc.$LLVM_VERSION.$MUSL_VERSION"
DOCKER_IMAGE="serene/toolchain-base"
DOCKER_TAG="latest"
function run_in_container() {
docker run --rm -t \
-v "$ME:/home/serene/serene" \
-v "$SERENE_HOME_DIR:/home/serene/.serene/" \
--user "$(id -u):$(id -g)" \
"$DOCKER_IMAGE:$DOCKER_TAG" \
"$@"
}
function build_toolchain_stage0() {
local version repo src stage1 old_path install_dir build_dir
@ -51,8 +64,9 @@ function build_toolchain_stage0() {
_push "$build_dir"
export CFLAGS=' -g -g1 '
export CFLAGS=' -g -g1 ' # -nodefaultlibs -nostdlibs -nostdinc++ -nostdlib++
export CXXFLAGS="$CFLAGS"
#export LDFLAGS="-lc -lc++"
cmake -G Ninja \
-DCMAKE_INSTALL_PREFIX="$install_dir" \
-DLLVM_PARALLEL_COMPILE_JOBS="$(nproc)" \
@ -77,7 +91,8 @@ function build_musl_stage1() {
local version repo src build_dir install_dir old_path stage1
version="$MUSL_VERSION"
install_dir="$STAGE1_DIR"
install_dir="$DEPS_BUILD_DIR/musl.stage1.$version"
#install_dir="$STAGE1_DIR.tmp"
build_dir="$DEPS_BUILD_DIR/${MUSL_DIR_NAME}_build.stage1.$version"
repo="${MUSL_REPO:-git://git.musl-libc.org/musl}"
src="$DEPS_SOURCE_DIR/$MUSL_DIR_NAME.$version"
@ -168,8 +183,10 @@ function build_musl_stage1() {
function build_toolchain_stage1() {
local version repo src install_dir build_dir old_path
local version repo src install_dir build_dir old_path musl
#musl="$DEPS_BUILD_DIR/musl.stage1.$MUSL_VERSION"
musl="$STAGE1_DIR.tmp"
version="$LLVM_VERSION"
install_dir="$STAGE1_DIR"
build_dir="$LLVM_BUILD_DIR.stage1.$version"
@ -205,10 +222,10 @@ function build_toolchain_stage1() {
}) && {
info "libc++ looks ok!"
}
export CFLAGS=' -g -g1 '
export CXXFLAGS="$CFLAGS -isystem $STAGE0_DIR/include "
export LDFLAGS="-fuse-ld=lld -L $STAGE0_DIR/lib/ -lc++abi -L $STAGE0_DIR/lib/x86_64-pc-linux-gnu"
# -isystem $STAGE0_DIR/include/c++/v1/ -isystem $STAGE0_DIR/include -isystem $musl/include
export CFLAGS=' -g -g1 -nodefaultlibs'
export CXXFLAGS="$CFLAGS -nostdinc++ -nostdlib++ -isystem $STAGE0_DIR/include/x86_64-pc-linux-gnu/c++/v1/ -isystem $STAGE0_DIR/include/c++/v1/ -isystem $musl/include -isystem $STAGE0_DIR/include"
export LDFLAGS="-fuse-ld=lld -L $musl/lib/ -L $STAGE0_DIR/lib/ -lc++ -lc++abi -L $STAGE0_DIR/lib/x86_64-pc-linux-gnu -L $STAGE0_DIR/lib/clang/17/lib/x86_64-pc-linux-gnu -lc --rtlib=compiler-rt -lunwind -rpath $STAGE0_DIR/lib"
# Set the compiler and linker flags...
#LINKERFLAGS="-Wl,-dynamic-linker $install_dir/lib/ld-musl-x86_64.so.1"
@ -219,6 +236,8 @@ function build_toolchain_stage1() {
-DLLVM_PARALLEL_LINK_JOBS="$(nproc)" \
-C "$ME/cmake/toolchains/stage2.standalone.cmake" \
"$src/llvm"
# -DCMAKE_SYSROOT="$STAGE0_DIR" \
# -DDEFAULT_SYSROOT="$STAGE0_DIR" \
# -DCMAKE_EXE_LINKER_FLAGS="${LINKERFLAGS}" \
# -DCMAKE_SHARED_LINKER_FLAGS="${LINKERFLAGS}" \
@ -555,14 +574,21 @@ function build_toolchain() {
build_libcxx_stage2
build_toolchain_stage2
;;
"dstage0")
run_in_container ./builder deps build toolchain stage0
;;
"stage0")
build_toolchain_stage0
;;
"stage1")
#cp -r "$STAGE0_DIR" "$STAGE1_DIR"
#cp -r "$STAGE0_DIR" "$STAGE1_DIR.tmp"
build_musl_stage1
build_toolchain_stage1
;;
"stage1-tc")
#cp -r "$STAGE0_DIR" "$STAGE1_DIR"
build_toolchain_stage1
;;
"stage2")
build_musl_stage2
build_libcxx_stage2