#!/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 }