108 lines
2.7 KiB
Bash
108 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
if ! type "include" >/dev/null 2>&1; then
|
|
include() {
|
|
. "$(cd "$(dirname "$1")" && pwd)/${2}"
|
|
}
|
|
fi
|
|
|
|
include "${BASH_SOURCE[0]}" ./pragma_once.bash
|
|
if ! pragma_once ${BASH_SOURCE[0]}; then return 0; fi
|
|
|
|
include "${BASH_SOURCE[0]}" ./attach/export.bash
|
|
include "${BASH_SOURCE[0]}" ./patch/export.bash
|
|
include "${BASH_SOURCE[0]}" ./libc/export.bash
|
|
include "${BASH_SOURCE[0]}" ./base/export.bash
|
|
|
|
# =========================
|
|
# GLOBAL CONFIG (LLD BUILD)
|
|
# =========================
|
|
|
|
L_LLD_SRC_DIR=""
|
|
L_LLD_BUILD_DIR="/ae/bash/0_cmake_build_dir/lld"
|
|
L_LLD_INSTALL_DIR="/ae/bash/0_cmake_install_dir/lld"
|
|
|
|
L_LLD_CMAKE="/ae/opt/cmake/bin/cmake"
|
|
L_LLD_NINJA="/usr/bin/ninja"
|
|
|
|
L_LLD_TOOLCHAIN_FILE=""
|
|
|
|
L_LLD_LLVM_VERSION="llvmorg-22.1.8"
|
|
|
|
L_LLD_BUILD_TYPE="Release"
|
|
|
|
# =========================
|
|
# TOOLCHAIN SETTER
|
|
# =========================
|
|
|
|
lld_set_toolchain() {
|
|
L_LLD_TOOLCHAIN_FILE="$1"
|
|
}
|
|
|
|
lld_use_clang() {
|
|
L_LLD_TOOLCHAIN_FILE="${_library_root_dir_}/cmake_toolchain/mingw-clang.cmake"
|
|
}
|
|
|
|
lld_use_mingw() {
|
|
L_LLD_TOOLCHAIN_FILE="${_library_root_dir_}/cmake_toolchain/mingw.cmake"
|
|
}
|
|
|
|
# =========================
|
|
# BUILD LLD (CLEAN VERSION)
|
|
# =========================
|
|
|
|
build_lld() {
|
|
local src_dir=""
|
|
ensure_repo_version src_dir "llvm" "${L_LLD_LLVM_VERSION}"
|
|
L_LLD_SRC_DIR="${src_dir}/llvm"
|
|
mkdir -p "${L_LLD_BUILD_DIR}"
|
|
mkdir -p "${L_LLD_INSTALL_DIR}"
|
|
|
|
local toolchain_arg=""
|
|
if [[ -n "${L_LLD_TOOLCHAIN_FILE}" ]]; then
|
|
toolchain_arg="-DCMAKE_TOOLCHAIN_FILE=${L_LLD_TOOLCHAIN_FILE}"
|
|
fi
|
|
|
|
local cmd
|
|
cmd="${L_LLD_CMAKE} -S ${L_LLD_SRC_DIR} -B ${L_LLD_BUILD_DIR} ${toolchain_arg} -DCMAKE_INSTALL_PREFIX=${L_LLD_INSTALL_DIR} -DCMAKE_BUILD_TYPE=${L_LLD_BUILD_TYPE} -DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY -DLLVM_ENABLE_PROJECTS=lld -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF"
|
|
|
|
exec_record "${cmd}"
|
|
|
|
exec_record "${L_LLD_CMAKE} --build ${L_LLD_BUILD_DIR} -j$(nproc)"
|
|
|
|
exec_record "${L_LLD_CMAKE} --install ${L_LLD_BUILD_DIR}"
|
|
}
|
|
|
|
# =========================
|
|
# MINGW ENTRY
|
|
# =========================
|
|
|
|
build_mingw_lld() {
|
|
local suffix="_629_1518"
|
|
|
|
L_LLD_BUILD_DIR="${_root_}/0_cmake_build_dir/lld${suffix}"
|
|
L_LLD_INSTALL_DIR="${_root_}/0_cmake_install_dir/lld${suffix}"
|
|
|
|
lld_use_mingw
|
|
build_lld
|
|
|
|
return 0
|
|
}
|
|
|
|
# =========================
|
|
# CLANG ENTRY
|
|
# =========================
|
|
|
|
build_clang_lld() {
|
|
local suffix="_clang"
|
|
local toolchain_dir="${_library_root_dir_}/linux_shell/build_script/cmake_toolchain"
|
|
L_LLD_TOOLCHAIN_FILE="${toolchain_dir}/mingw-clang.cmake"
|
|
L_LLD_BUILD_DIR="${_root_}/0_cmake_build_dir/lld${suffix}"
|
|
L_LLD_INSTALL_DIR="${_root_}/0_cmake_install_dir/lld${suffix}"
|
|
|
|
lld_use_clang
|
|
build_lld
|
|
|
|
return 0
|
|
}
|