放弃 linux交叉windows 编译clang
因为 llvm clang源码cmakelist 不支持 里面汇编也不支持
This commit is contained in:
@@ -4,3 +4,4 @@
|
||||
/identifier.sqlite
|
||||
|
||||
/3rdParty/GTest.zip
|
||||
/old/
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,38 +0,0 @@
|
||||
#!/bin/bash
|
||||
# shellcheck disable=SC2155
|
||||
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]}" ./global_rely/export.bash
|
||||
# shellcheck source=./global_rely/export.bash
|
||||
|
||||
download_msys2_pkg() {
|
||||
local repo="$1"
|
||||
local pkg_name="$2"
|
||||
local pkg_root="$3"
|
||||
local sha256="${4:-}"
|
||||
|
||||
check_and_create_dir_var pkg_root
|
||||
|
||||
local pkg_path="${pkg_root}/${pkg_name}"
|
||||
local url="https://mirror.msys2.org/mingw/${repo}/${pkg_name}"
|
||||
|
||||
if [[ -f "${pkg_path}" ]]; then
|
||||
echo "[reuse] ${pkg_path}" >&2
|
||||
else
|
||||
echo "[download] ${url}" >&2
|
||||
curl -L --fail --retry 3 \
|
||||
-o "${pkg_path}" \
|
||||
"${url}"
|
||||
fi
|
||||
|
||||
if [[ -n "${sha256}" ]]; then
|
||||
echo "${sha256} ${pkg_path}" | sha256sum -c - >&2
|
||||
fi
|
||||
|
||||
printf '%s\n' "${pkg_path}"
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
|
||||
# =========================
|
||||
# compiler (clang instead of gcc)
|
||||
# =========================
|
||||
set(CMAKE_C_COMPILER clang)
|
||||
set(CMAKE_CXX_COMPILER clang++)
|
||||
|
||||
# =========================
|
||||
# target triple (VERY IMPORTANT)
|
||||
# =========================
|
||||
set(CMAKE_C_FLAGS "--target=x86_64-w64-windows-gnu")
|
||||
set(CMAKE_CXX_FLAGS "--target=x86_64-w64-windows-gnu")
|
||||
|
||||
# =========================
|
||||
# STL / runtime search
|
||||
# =========================
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
|
||||
# =========================
|
||||
# cross compile behavior fix
|
||||
# =========================
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
@@ -1,107 +0,0 @@
|
||||
#!/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
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
# shellcheck disable=SC2155
|
||||
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]}" ./global_rely/export.bash
|
||||
# shellcheck source=./global_rely/export.bash
|
||||
|
||||
#download_msys2_pkg() {
|
||||
# local repo="$1"
|
||||
# local pkg_name="$2"
|
||||
# local pkg_root="$3"
|
||||
# local sha256="${4:-}"
|
||||
#
|
||||
# check_and_create_dir_var pkg_root
|
||||
#
|
||||
# local pkg_path="${pkg_root}/${pkg_name}"
|
||||
# local url="https://mirror.msys2.org/mingw/${repo}/${pkg_name}"
|
||||
#
|
||||
# if [[ -f "${pkg_path}" ]]; then
|
||||
# echo "[reuse] ${pkg_path}" >&2
|
||||
# else
|
||||
# echo "[download] ${url}" >&2
|
||||
# curl -L --fail --retry 3 \
|
||||
# -o "${pkg_path}" \
|
||||
# "${url}"
|
||||
# fi
|
||||
#
|
||||
# if [[ -n "${sha256}" ]]; then
|
||||
# echo "${sha256} ${pkg_path}" | sha256sum -c - >&2
|
||||
# fi
|
||||
#
|
||||
# printf '%s\n' "${pkg_path}"
|
||||
#}
|
||||
|
||||
#download_msys2_pkg() {
|
||||
# local repo="$1"
|
||||
# local pkg_name="$2"
|
||||
# local pkg_root="$3"
|
||||
# local sha256="${4:-}"
|
||||
# check_and_create_dir_var pkg_root >&2
|
||||
# local pkg_path="${pkg_root}/${pkg_name}"
|
||||
# local url="https://mirror.msys2.org/mingw/${repo}/${pkg_name}"
|
||||
# if [[ -f "${pkg_path}" ]]; then
|
||||
# echo "[reuse] ${pkg_path}" >&2
|
||||
# else
|
||||
# echo "[download] ${url}" >&2
|
||||
# curl -L --fail --retry 3 -o "${pkg_path}" "${url}"
|
||||
# fi
|
||||
# if [[ -n "${sha256}" ]]; then
|
||||
# echo "${sha256} ${pkg_path}" | sha256sum -c - >&2
|
||||
# fi
|
||||
# printf '%s\n' "${pkg_path}"
|
||||
#}
|
||||
|
||||
download_msys2_pkg() {
|
||||
local -n out_path="$1"
|
||||
local repo="$2"
|
||||
local pkg_name="$3"
|
||||
local pkg_root="$4"
|
||||
local sha256="${5:-}"
|
||||
check_and_create_dir_var pkg_root
|
||||
out_path="${pkg_root}/${pkg_name}"
|
||||
local url="https://mirror.msys2.org/mingw/${repo}/${pkg_name}"
|
||||
if [[ -f "${out_path}" ]]; then
|
||||
echo "[reuse] ${out_path}" >&2
|
||||
else
|
||||
echo "[download] ${url}" >&2
|
||||
curl -L --fail --retry 3 -o "${out_path}" "${url}"
|
||||
fi
|
||||
if [[ -n "${sha256}" ]]; then
|
||||
echo "${sha256} ${out_path}" | sha256sum -c - >&2
|
||||
fi
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
set(LLVM_MINGW_ROOT "/ae/opt/llvm-mingw")
|
||||
set(CMAKE_C_COMPILER "${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-clang")
|
||||
set(CMAKE_CXX_COMPILER "${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-clang++")
|
||||
set(CMAKE_RC_COMPILER "${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-windres")
|
||||
set(CMAKE_AR "${LLVM_MINGW_ROOT}/bin/llvm-ar")
|
||||
set(CMAKE_RANLIB "${LLVM_MINGW_ROOT}/bin/llvm-ranlib")
|
||||
set(CMAKE_STRIP "${LLVM_MINGW_ROOT}/bin/llvm-strip")
|
||||
set(CMAKE_FIND_ROOT_PATH "${LLVM_MINGW_ROOT}/x86_64-w64-mingw32")
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
+2
-2
@@ -4,7 +4,7 @@ set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc-posix)
|
||||
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++-posix)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_C_FLAGS_INIT "-pthread")
|
||||
@@ -18,4 +18,4 @@ set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
@@ -0,0 +1,111 @@
|
||||
#!/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
|
||||
install_llvm_mingw() {
|
||||
local ver="$1"
|
||||
local install_dir="/ae/opt/llvm-mingw"
|
||||
local repo="https://github.com/mstorsjo/llvm-mingw.git"
|
||||
local release_base="https://github.com/mstorsjo/llvm-mingw/releases/download"
|
||||
local work_dir="${install_dir}/.install"
|
||||
local download_dir="${work_dir}/download"
|
||||
local extract_dir="${work_dir}/extract"
|
||||
sudo mkdir -p "${download_dir}" "${extract_dir}"
|
||||
if [[ -z "$ver" ]]; then
|
||||
ver=$(git ls-remote --tags "${repo}" |
|
||||
awk '{print $2}' |
|
||||
sed 's#refs/tags/##' |
|
||||
sed 's/\^{}//g' |
|
||||
grep -E '^[0-9]{8}$' |
|
||||
sort -V |
|
||||
tail -n 1)
|
||||
fi
|
||||
if [[ -z "$ver" ]]; then
|
||||
echo "[llvm-mingw] failed to resolve version" >&2
|
||||
return 1
|
||||
fi
|
||||
echo "[llvm-mingw] selected version=${ver}"
|
||||
local file=""
|
||||
local url=""
|
||||
local candidates=(
|
||||
"llvm-mingw-${ver}-ucrt-ubuntu-22.04-x86_64.tar.xz"
|
||||
"llvm-mingw-${ver}-ucrt-ubuntu-20.04-x86_64.tar.xz"
|
||||
"llvm-mingw-${ver}-ucrt-ubuntu-18.04-x86_64.tar.xz"
|
||||
"llvm-mingw-${ver}-ucrt-x86_64-linux.tar.xz"
|
||||
"llvm-mingw-${ver}-msvcrt-ubuntu-22.04-x86_64.tar.xz"
|
||||
"llvm-mingw-${ver}-msvcrt-ubuntu-20.04-x86_64.tar.xz"
|
||||
"llvm-mingw-${ver}-msvcrt-ubuntu-18.04-x86_64.tar.xz"
|
||||
"llvm-mingw-${ver}-msvcrt-x86_64-linux.tar.xz"
|
||||
)
|
||||
for file in "${candidates[@]}"; do
|
||||
url="${release_base}/${ver}/${file}"
|
||||
echo "[llvm-mingw] test ${url}"
|
||||
if wget -q --spider "${url}"; then
|
||||
break
|
||||
fi
|
||||
file=""
|
||||
done
|
||||
if [[ -z "$file" ]]; then
|
||||
echo "[llvm-mingw] no downloadable linux x86_64 asset found for ${ver}" >&2
|
||||
return 1
|
||||
fi
|
||||
url="${release_base}/${ver}/${file}"
|
||||
echo "[llvm-mingw] downloading ${url}"
|
||||
sudo rm -rf "${work_dir}"
|
||||
sudo mkdir -p "${download_dir}" "${extract_dir}"
|
||||
sudo wget -q --show-progress "${url}" -O "${download_dir}/${file}"
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "[llvm-mingw] download failed ${url}" >&2
|
||||
return 1
|
||||
fi
|
||||
sudo tar -xf "${download_dir}/${file}" -C "${extract_dir}"
|
||||
local src_dir=""
|
||||
src_dir=$(find "${extract_dir}" -mindepth 1 -maxdepth 1 -type d -name "llvm-mingw-*" | head -n 1)
|
||||
if [[ -z "$src_dir" ]]; then
|
||||
echo "[llvm-mingw] extract failed" >&2
|
||||
return 1
|
||||
fi
|
||||
sudo find "${install_dir}" -mindepth 1 -maxdepth 1 ! -name ".install" -exec rm -rf {} +
|
||||
sudo cp -a "${src_dir}/." "${install_dir}/"
|
||||
sudo rm -rf "${work_dir}"
|
||||
export PATH="${install_dir}/bin:$PATH"
|
||||
echo "[llvm-mingw installed] version=${ver}"
|
||||
echo "[llvm-mingw path] ${install_dir}"
|
||||
}
|
||||
check_llvm_mingw() {
|
||||
local clang="/ae/opt/llvm-mingw/bin/x86_64-w64-mingw32-clang"
|
||||
if [[ -x "$clang" ]]; then
|
||||
"$clang" --version | head -n1
|
||||
return 0
|
||||
fi
|
||||
if ! command -v x86_64-w64-mingw32-clang >/dev/null 2>&1; then
|
||||
echo "[llvm-mingw] not installed"
|
||||
return 1
|
||||
fi
|
||||
x86_64-w64-mingw32-clang --version | head -n1
|
||||
}
|
||||
get_llvm_mingw_version() {
|
||||
local clang="/ae/opt/llvm-mingw/bin/x86_64-w64-mingw32-clang"
|
||||
if [[ -x "$clang" ]]; then
|
||||
"$clang" --version | head -n1
|
||||
return
|
||||
fi
|
||||
if ! command -v x86_64-w64-mingw32-clang >/dev/null 2>&1; then
|
||||
echo "none"
|
||||
return
|
||||
fi
|
||||
x86_64-w64-mingw32-clang --version | head -n1
|
||||
}
|
||||
llvm_mingw_require() {
|
||||
local required="$1"
|
||||
local cur
|
||||
cur=$(get_llvm_mingw_version)
|
||||
if [[ "$cur" == "none" ]]; then
|
||||
return 1
|
||||
fi
|
||||
echo "$cur" | grep -q "$required"
|
||||
}
|
||||
@@ -0,0 +1,361 @@
|
||||
#!/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
|
||||
LLVM_SRC_DIR=""
|
||||
LLVM_BUILD_DIR="/ae/bash/0_cmake_build_dir/lld"
|
||||
LLVM_INSTALL_DIR="/ae/bash/0_cmake_install_dir/lld"
|
||||
LLVM_CMAKE="/ae/opt/cmake/bin/cmake"
|
||||
LLVM_NINJA="/usr/bin/ninja"
|
||||
LLVM_GENERATOR="Ninja"
|
||||
LLVM_LLVM_VERSION="llvmorg-22.1.8"
|
||||
LLVM_BUILD_TYPE="Release"
|
||||
LLVM_ENABLE_PROJECTS="lld"
|
||||
LLVM_TARGETS_TO_BUILD="X86"
|
||||
LLVM_EXPERIMENTAL_TARGETS_TO_BUILD=""
|
||||
LLVM_DEFAULT_TARGET_TRIPLE=""
|
||||
LLVM_TARGET_ARCH=""
|
||||
LLVM_NATIVE_TOOL_DIR=""
|
||||
LLVM_TABLEGEN=""
|
||||
LLVM_TC_FILE=""
|
||||
LLVM_TC_SYSROOT=""
|
||||
LLVM_TC_STAGING_PREFIX=""
|
||||
LLVM_TC_C_COMPILER=""
|
||||
LLVM_TC_CXX_COMPILER=""
|
||||
LLVM_TC_C_COMPILER_TARGET=""
|
||||
LLVM_TC_CXX_COMPILER_TARGET=""
|
||||
LLVM_TC_SYSTEM_NAME=""
|
||||
LLVM_TC_SYSTEM_PROCESSOR=""
|
||||
LLVM_TC_FIND_ROOT_PATH=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_PROGRAM=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_LIBRARY=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_INCLUDE=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_PACKAGE=""
|
||||
LLVM_TC_LINKER_TYPE=""
|
||||
LLVM_TC_C_USING_LINKER_LLD=""
|
||||
LLVM_TC_CXX_USING_LINKER_LLD=""
|
||||
LLVM_TC_C_STANDARD_LINK_DIRECTORIES=""
|
||||
LLVM_TC_CXX_STANDARD_LINK_DIRECTORIES=""
|
||||
LLVM_TC_CXX_STANDARD_INCLUDE_DIRECTORIES=""
|
||||
LLVM_TC_PTHREAD_LIB=""
|
||||
LLVM_TC_AR=""
|
||||
LLVM_TC_RANLIB=""
|
||||
LLVM_TC_LINKER=""
|
||||
LLVM_TC_RC_COMPILER=""
|
||||
LLVM_TC_MT=""
|
||||
clear_llvm_toolchain_config() {
|
||||
LLVM_TC_FILE=""
|
||||
LLVM_TC_SYSROOT=""
|
||||
LLVM_TC_STAGING_PREFIX=""
|
||||
LLVM_TC_C_COMPILER=""
|
||||
LLVM_TC_CXX_COMPILER=""
|
||||
LLVM_TC_C_COMPILER_TARGET=""
|
||||
LLVM_TC_CXX_COMPILER_TARGET=""
|
||||
LLVM_TC_SYSTEM_NAME=""
|
||||
LLVM_TC_SYSTEM_PROCESSOR=""
|
||||
LLVM_TC_FIND_ROOT_PATH=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_PROGRAM=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_LIBRARY=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_INCLUDE=""
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_PACKAGE=""
|
||||
LLVM_TC_LINKER_TYPE=""
|
||||
LLVM_TC_C_USING_LINKER_LLD=""
|
||||
LLVM_TC_CXX_USING_LINKER_LLD=""
|
||||
LLVM_TC_C_STANDARD_LINK_DIRECTORIES=""
|
||||
LLVM_TC_CXX_STANDARD_LINK_DIRECTORIES=""
|
||||
LLVM_TC_CXX_STANDARD_INCLUDE_DIRECTORIES=""
|
||||
LLVM_TC_PTHREAD_LIB=""
|
||||
LLVM_TC_AR=""
|
||||
LLVM_TC_RANLIB=""
|
||||
LLVM_TC_LINKER=""
|
||||
LLVM_TC_RC_COMPILER=""
|
||||
LLVM_TC_MT=""
|
||||
}
|
||||
clear_llvm_build_config() {
|
||||
LLVM_DEFAULT_TARGET_TRIPLE=""
|
||||
LLVM_TARGET_ARCH=""
|
||||
LLVM_NATIVE_TOOL_DIR=""
|
||||
LLVM_TABLEGEN=""
|
||||
}
|
||||
clear_llvm_platform_config() {
|
||||
clear_llvm_toolchain_config
|
||||
clear_llvm_build_config
|
||||
}
|
||||
cmake_escape_value() {
|
||||
local s="$1"
|
||||
s="${s//\\/\\\\}"
|
||||
s="${s//\"/\\\"}"
|
||||
printf '%s' "$s"
|
||||
}
|
||||
toolchain_set() {
|
||||
local file="$1"
|
||||
local name="$2"
|
||||
local value="$3"
|
||||
if [[ -n "${value}" ]]; then
|
||||
printf 'set(%s "%s")\n' "${name}" "$(cmake_escape_value "${value}")" >>"${file}"
|
||||
fi
|
||||
}
|
||||
toolchain_set_raw() {
|
||||
local file="$1"
|
||||
local name="$2"
|
||||
local value="$3"
|
||||
if [[ -n "${value}" ]]; then
|
||||
printf 'set(%s %s)\n' "${name}" "${value}" >>"${file}"
|
||||
fi
|
||||
}
|
||||
toolchain_cache_string() {
|
||||
local file="$1"
|
||||
local name="$2"
|
||||
local value="$3"
|
||||
if [[ -n "${value}" ]]; then
|
||||
printf 'set(%s "%s" CACHE STRING "" FORCE)\n' "${name}" "$(cmake_escape_value "${value}")" >>"${file}"
|
||||
fi
|
||||
}
|
||||
toolchain_cache_raw() {
|
||||
local file="$1"
|
||||
local name="$2"
|
||||
local value="$3"
|
||||
if [[ -n "${value}" ]]; then
|
||||
printf 'set(%s %s CACHE INTERNAL "" FORCE)\n' "${name}" "${value}" >>"${file}"
|
||||
fi
|
||||
}
|
||||
toolchain_pthread_config() {
|
||||
local file="$1"
|
||||
local value="$2"
|
||||
if [[ -n "${value}" ]]; then
|
||||
toolchain_cache_string "${file}" CMAKE_C_STANDARD_LIBRARIES "${value}"
|
||||
toolchain_cache_string "${file}" CMAKE_CXX_STANDARD_LIBRARIES "${value}"
|
||||
toolchain_cache_string "${file}" CMAKE_THREAD_LIBS_INIT "${value}"
|
||||
toolchain_cache_string "${file}" LLVM_PTHREAD_LIB "${value}"
|
||||
toolchain_cache_raw "${file}" CMAKE_HAVE_LIBC_PTHREAD "0"
|
||||
toolchain_cache_raw "${file}" CMAKE_USE_PTHREADS_INIT "1"
|
||||
toolchain_cache_raw "${file}" CMAKE_USE_WIN32_THREADS_INIT "0"
|
||||
toolchain_cache_raw "${file}" CMAKE_HAVE_THREADS_LIBRARY "1"
|
||||
toolchain_set_raw "${file}" THREADS_PREFER_PTHREAD_FLAG "ON"
|
||||
fi
|
||||
}
|
||||
llvm_has_toolchain_config() {
|
||||
[[ -n "${LLVM_TC_SYSROOT}${LLVM_TC_STAGING_PREFIX}${LLVM_TC_C_COMPILER}${LLVM_TC_CXX_COMPILER}${LLVM_TC_C_COMPILER_TARGET}${LLVM_TC_CXX_COMPILER_TARGET}${LLVM_TC_SYSTEM_NAME}${LLVM_TC_SYSTEM_PROCESSOR}${LLVM_TC_FIND_ROOT_PATH}${LLVM_TC_FIND_ROOT_PATH_MODE_PROGRAM}${LLVM_TC_FIND_ROOT_PATH_MODE_LIBRARY}${LLVM_TC_FIND_ROOT_PATH_MODE_INCLUDE}${LLVM_TC_FIND_ROOT_PATH_MODE_PACKAGE}${LLVM_TC_LINKER_TYPE}${LLVM_TC_C_USING_LINKER_LLD}${LLVM_TC_CXX_USING_LINKER_LLD}${LLVM_TC_C_STANDARD_LINK_DIRECTORIES}${LLVM_TC_CXX_STANDARD_LINK_DIRECTORIES}${LLVM_TC_CXX_STANDARD_INCLUDE_DIRECTORIES}${LLVM_TC_PTHREAD_LIB}${LLVM_TC_AR}${LLVM_TC_RANLIB}${LLVM_TC_LINKER}${LLVM_TC_RC_COMPILER}${LLVM_TC_MT}" ]]
|
||||
}
|
||||
llvm_generate_toolchain_file() {
|
||||
local file="$1"
|
||||
mkdir -p "$(dirname "${file}")"
|
||||
: >"${file}"
|
||||
printf 'set(LLVM_TC_GENERATED_ID "windows-lld-linux-x86-winpthread")\n' >>"${file}"
|
||||
toolchain_set "${file}" CMAKE_SYSTEM_NAME "${LLVM_TC_SYSTEM_NAME}"
|
||||
toolchain_set "${file}" CMAKE_SYSTEM_PROCESSOR "${LLVM_TC_SYSTEM_PROCESSOR}"
|
||||
toolchain_set "${file}" CMAKE_C_COMPILER "${LLVM_TC_C_COMPILER}"
|
||||
toolchain_set "${file}" CMAKE_CXX_COMPILER "${LLVM_TC_CXX_COMPILER}"
|
||||
toolchain_set "${file}" CMAKE_C_COMPILER_TARGET "${LLVM_TC_C_COMPILER_TARGET}"
|
||||
toolchain_set "${file}" CMAKE_CXX_COMPILER_TARGET "${LLVM_TC_CXX_COMPILER_TARGET}"
|
||||
toolchain_set "${file}" CMAKE_SYSROOT "${LLVM_TC_SYSROOT}"
|
||||
|
||||
echo "${file} 33333333333333333 ==================================== ${LLVM_TC_SYSROOT}"
|
||||
toolchain_set "${file}" CMAKE_STAGING_PREFIX "${LLVM_TC_STAGING_PREFIX}"
|
||||
toolchain_set "${file}" CMAKE_FIND_ROOT_PATH "${LLVM_TC_FIND_ROOT_PATH}"
|
||||
toolchain_set "${file}" CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "${LLVM_TC_FIND_ROOT_PATH_MODE_PROGRAM}"
|
||||
toolchain_set "${file}" CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "${LLVM_TC_FIND_ROOT_PATH_MODE_LIBRARY}"
|
||||
toolchain_set "${file}" CMAKE_FIND_ROOT_PATH_MODE_INCLUDE "${LLVM_TC_FIND_ROOT_PATH_MODE_INCLUDE}"
|
||||
toolchain_set "${file}" CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "${LLVM_TC_FIND_ROOT_PATH_MODE_PACKAGE}"
|
||||
toolchain_cache_string "${file}" CMAKE_LINKER_TYPE "${LLVM_TC_LINKER_TYPE}"
|
||||
toolchain_set "${file}" CMAKE_C_USING_LINKER_LLD "${LLVM_TC_C_USING_LINKER_LLD}"
|
||||
toolchain_set "${file}" CMAKE_CXX_USING_LINKER_LLD "${LLVM_TC_CXX_USING_LINKER_LLD}"
|
||||
toolchain_set "${file}" CMAKE_C_STANDARD_LINK_DIRECTORIES "${LLVM_TC_C_STANDARD_LINK_DIRECTORIES}"
|
||||
toolchain_set "${file}" CMAKE_CXX_STANDARD_LINK_DIRECTORIES "${LLVM_TC_CXX_STANDARD_LINK_DIRECTORIES}"
|
||||
toolchain_set "${file}" CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES "${LLVM_TC_CXX_STANDARD_INCLUDE_DIRECTORIES}"
|
||||
toolchain_pthread_config "${file}" "${LLVM_TC_PTHREAD_LIB}"
|
||||
toolchain_set "${file}" CMAKE_AR "${LLVM_TC_AR}"
|
||||
toolchain_set "${file}" CMAKE_RANLIB "${LLVM_TC_RANLIB}"
|
||||
toolchain_set "${file}" CMAKE_LINKER "${LLVM_TC_LINKER}"
|
||||
toolchain_set "${file}" CMAKE_RC_COMPILER "${LLVM_TC_RC_COMPILER}"
|
||||
toolchain_set "${file}" CMAKE_MT "${LLVM_TC_MT}"
|
||||
}
|
||||
llvm_prepare_toolchain_file() {
|
||||
if [[ -z "${LLVM_TC_FILE}" ]] && llvm_has_toolchain_config; then
|
||||
LLVM_TC_FILE="${LLVM_BUILD_DIR}/toolchain.cmake"
|
||||
llvm_generate_toolchain_file "${LLVM_TC_FILE}"
|
||||
echo "========== generated toolchain ==========" >&2
|
||||
cat "${LLVM_TC_FILE}" >&2
|
||||
echo "=========================================" >&2
|
||||
fi
|
||||
}
|
||||
llvm_build_base() {
|
||||
local src_dir=""
|
||||
local jobs=""
|
||||
local cmd=""
|
||||
local build_cmd=""
|
||||
local install_cmd=""
|
||||
ensure_repo_version src_dir "llvm" "${LLVM_LLVM_VERSION}"
|
||||
LLVM_SRC_DIR="${src_dir}/llvm"
|
||||
mkdir -p "${LLVM_BUILD_DIR}"
|
||||
mkdir -p "${LLVM_INSTALL_DIR}"
|
||||
llvm_prepare_toolchain_file
|
||||
jobs="$(nproc)"
|
||||
cmd="\"${LLVM_CMAKE}\""
|
||||
cmd="${cmd} -S \"${LLVM_SRC_DIR}\""
|
||||
cmd="${cmd} -B \"${LLVM_BUILD_DIR}\""
|
||||
cmd="${cmd} \"-DCMAKE_INSTALL_PREFIX=${LLVM_INSTALL_DIR}\""
|
||||
cmd="${cmd} \"-DCMAKE_BUILD_TYPE=${LLVM_BUILD_TYPE}\""
|
||||
cmd="${cmd} -DLLVM_INCLUDE_TESTS=OFF"
|
||||
cmd="${cmd} -DLLVM_INCLUDE_BENCHMARKS=OFF"
|
||||
cmd="${cmd} -DLLVM_INCLUDE_EXAMPLES=OFF"
|
||||
cmd="${cmd} -DLLVM_INCLUDE_DOCS=OFF"
|
||||
if [[ -n "${LLVM_ENABLE_PROJECTS}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_ENABLE_PROJECTS=${LLVM_ENABLE_PROJECTS}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_TARGETS_TO_BUILD}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_DEFAULT_TARGET_TRIPLE}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_DEFAULT_TARGET_TRIPLE}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_TARGET_ARCH}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_TARGET_ARCH=${LLVM_TARGET_ARCH}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_NATIVE_TOOL_DIR}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_NATIVE_TOOL_DIR=${LLVM_NATIVE_TOOL_DIR}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_TABLEGEN}" ]]; then
|
||||
cmd="${cmd} \"-DLLVM_TABLEGEN=${LLVM_TABLEGEN}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_GENERATOR}" ]]; then
|
||||
cmd="${cmd} -G \"${LLVM_GENERATOR}\""
|
||||
fi
|
||||
if [[ "${LLVM_GENERATOR}" == "Ninja" && -n "${LLVM_NINJA}" ]]; then
|
||||
cmd="${cmd} \"-DCMAKE_MAKE_PROGRAM=${LLVM_NINJA}\""
|
||||
fi
|
||||
if [[ -n "${LLVM_TC_PTHREAD_LIB}" ]]; then
|
||||
cmd="${cmd} \"-DCMAKE_C_STANDARD_LIBRARIES=${LLVM_TC_PTHREAD_LIB}\""
|
||||
cmd="${cmd} \"-DCMAKE_CXX_STANDARD_LIBRARIES=${LLVM_TC_PTHREAD_LIB}\""
|
||||
cmd="${cmd} \"-DCMAKE_THREAD_LIBS_INIT=${LLVM_TC_PTHREAD_LIB}\""
|
||||
cmd="${cmd} \"-DLLVM_PTHREAD_LIB=${LLVM_TC_PTHREAD_LIB}\""
|
||||
cmd="${cmd} -DCMAKE_HAVE_LIBC_PTHREAD=0"
|
||||
cmd="${cmd} -DCMAKE_USE_PTHREADS_INIT=1"
|
||||
cmd="${cmd} -DCMAKE_USE_WIN32_THREADS_INIT=0"
|
||||
cmd="${cmd} -DCMAKE_HAVE_THREADS_LIBRARY=1"
|
||||
cmd="${cmd} -DTHREADS_PREFER_PTHREAD_FLAG=ON"
|
||||
fi
|
||||
if [[ -n "${LLVM_TC_FILE}" ]]; then
|
||||
cmd="${cmd} \"-DCMAKE_TOOLCHAIN_FILE=${LLVM_TC_FILE}\""
|
||||
fi
|
||||
exec_record "${cmd}"
|
||||
build_cmd="\"${LLVM_CMAKE}\" --build \"${LLVM_BUILD_DIR}\" --parallel \"${jobs}\""
|
||||
exec_record "${build_cmd}"
|
||||
install_cmd="\"${LLVM_CMAKE}\" --install \"${LLVM_BUILD_DIR}\""
|
||||
exec_record "${install_cmd}"
|
||||
}
|
||||
build_ubuntu2004_gcc93_native_clang() {
|
||||
local suffix="_ubuntu2004_gcc93_native_clang"
|
||||
clear_llvm_platform_config
|
||||
LLVM_BUILD_DIR="/ae/0_cmake_build_dir/llvm${suffix}"
|
||||
LLVM_INSTALL_DIR="/ae/0_cmake_install_dir/llvm${suffix}"
|
||||
LLVM_BUILD_TYPE="Release"
|
||||
LLVM_TC_C_COMPILER="/usr/bin/gcc"
|
||||
LLVM_TC_CXX_COMPILER="/usr/bin/g++"
|
||||
LLVM_ENABLE_PROJECTS="clang;lld"
|
||||
LLVM_TARGETS_TO_BUILD="X86"
|
||||
llvm_build_base
|
||||
return 0
|
||||
}
|
||||
build_windows_lld_linux_x86_by_stage1_clang() {
|
||||
local stage1_install_dir="$1"
|
||||
local suffix="_windows_lld_linux_x86"
|
||||
local extract_root="/ae/0_sysroot/msys2"
|
||||
local sysroot="/ae/0_sysroot/msys2/mingw64"
|
||||
local pkg_root="/ae/bash/0_wget_cache_dir/msys2/mingw64"
|
||||
local pkg_repo="mingw64"
|
||||
local mingw_target="x86_64-w64-windows-gnu"
|
||||
local linux_target="x86_64-linux-gnu"
|
||||
local pkg_name=""
|
||||
local pkg_path=""
|
||||
local gcc_dir=""
|
||||
local link_dirs=""
|
||||
local cxx_config_h=""
|
||||
local cxx_target_dir=""
|
||||
local cxx_dir=""
|
||||
local cxx_include_dirs=""
|
||||
local packages=(
|
||||
"mingw-w64-x86_64-headers-14.0.0.r147.g31bd54ab7-1-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-crt-14.0.0.r147.g31bd54ab7-1-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-libwinpthread-14.0.0.r147.g31bd54ab7-1-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-winpthreads-14.0.0.r147.g31bd54ab7-1-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-tzdata-2026b-1-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-gcc-libs-16.1.0-5-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-gcc-16.1.0-5-any.pkg.tar.zst"
|
||||
"mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst"
|
||||
)
|
||||
rm -rf "${sysroot}"
|
||||
mkdir -p "${extract_root}"
|
||||
for pkg_name in "${packages[@]}"; do
|
||||
pkg_path=""
|
||||
download_msys2_pkg pkg_path "${pkg_repo}" "${pkg_name}" "${pkg_root}"
|
||||
tar --zstd -xf "${pkg_path}" -C "${extract_root}" --exclude='.BUILDINFO' --exclude='.PKGINFO' --exclude='.MTREE' --exclude='.INSTALL'
|
||||
done
|
||||
gcc_dir="$(find "${sysroot}/lib/gcc/x86_64-w64-mingw32" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | sort -V | tail -n 1)"
|
||||
if [[ -z "${gcc_dir}" ]]; then
|
||||
log_error "msys2 gcc dir not found: ${sysroot}/lib/gcc/x86_64-w64-mingw32"
|
||||
return 1
|
||||
fi
|
||||
cxx_config_h="$(find "${sysroot}/include/c++" -path "*/x86_64-w64-mingw32/bits/c++config.h" 2>/dev/null | sort -V | tail -n 1)"
|
||||
if [[ -z "${cxx_config_h}" ]]; then
|
||||
log_error "msys2 c++config.h not found: ${sysroot}/include/c++"
|
||||
return 1
|
||||
fi
|
||||
cxx_target_dir="$(dirname "$(dirname "${cxx_config_h}")")"
|
||||
cxx_dir="$(dirname "${cxx_target_dir}")"
|
||||
link_dirs="${gcc_dir};${sysroot}/lib;${sysroot}/x86_64-w64-mingw32/lib"
|
||||
cxx_include_dirs="${cxx_dir};${cxx_target_dir};${cxx_dir}/backward"
|
||||
clear_llvm_platform_config
|
||||
LLVM_BUILD_DIR="/ae/0_cmake_build_dir/llvm${suffix}"
|
||||
LLVM_INSTALL_DIR="/ae/0_cmake_install_dir/llvm${suffix}"
|
||||
LLVM_BUILD_TYPE="Release"
|
||||
LLVM_TC_SYSTEM_NAME="Windows"
|
||||
LLVM_TC_SYSTEM_PROCESSOR="x86_64"
|
||||
LLVM_TC_C_COMPILER="${stage1_install_dir}/bin/clang"
|
||||
LLVM_TC_CXX_COMPILER="${stage1_install_dir}/bin/clang++"
|
||||
LLVM_TC_C_COMPILER_TARGET="${mingw_target}"
|
||||
LLVM_TC_CXX_COMPILER_TARGET="${mingw_target}"
|
||||
|
||||
echo "22222222222222 ==================================== ${sysroot}"
|
||||
LLVM_TC_SYSROOT="${sysroot}"
|
||||
LLVM_TC_FIND_ROOT_PATH="${sysroot}"
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_PROGRAM="NEVER"
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_LIBRARY="ONLY"
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_INCLUDE="ONLY"
|
||||
LLVM_TC_FIND_ROOT_PATH_MODE_PACKAGE="ONLY"
|
||||
LLVM_TC_LINKER_TYPE="LLD"
|
||||
LLVM_TC_C_USING_LINKER_LLD="-fuse-ld=lld"
|
||||
LLVM_TC_CXX_USING_LINKER_LLD="-fuse-ld=lld"
|
||||
LLVM_TC_C_STANDARD_LINK_DIRECTORIES="${link_dirs}"
|
||||
LLVM_TC_CXX_STANDARD_LINK_DIRECTORIES="${link_dirs}"
|
||||
LLVM_TC_CXX_STANDARD_INCLUDE_DIRECTORIES="${cxx_include_dirs}"
|
||||
LLVM_TC_PTHREAD_LIB="-lwinpthread"
|
||||
LLVM_TC_AR="${stage1_install_dir}/bin/llvm-ar"
|
||||
LLVM_TC_RANLIB="${stage1_install_dir}/bin/llvm-ranlib"
|
||||
LLVM_TC_LINKER="${stage1_install_dir}/bin/ld.lld"
|
||||
LLVM_TC_RC_COMPILER="/usr/bin/x86_64-w64-mingw32-windres"
|
||||
LLVM_ENABLE_PROJECTS="lld"
|
||||
LLVM_TARGETS_TO_BUILD="X86"
|
||||
LLVM_DEFAULT_TARGET_TRIPLE="${linux_target}"
|
||||
LLVM_NATIVE_TOOL_DIR="${stage1_install_dir}/bin"
|
||||
LLVM_TABLEGEN="${stage1_install_dir}/bin/llvm-tblgen"
|
||||
llvm_build_base
|
||||
return 0
|
||||
}
|
||||
build_ubuntu2004_gcc93_clang_then_windows_lld_linux_x86() {
|
||||
local stage1_suffix="_ubuntu2004_gcc93_native_clang"
|
||||
local stage1_install_dir="/ae/0_cmake_install_dir/llvm${stage1_suffix}"
|
||||
build_windows_lld_linux_x86_by_stage1_clang "${stage1_install_dir}"
|
||||
return 0
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,37 @@
|
||||
#!/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
|
||||
|
||||
# shellcheck source=../attach/export.bash
|
||||
# shellcheck source=../patch/export.bash
|
||||
# shellcheck source=../libc/export.bash
|
||||
# shellcheck source=../base/export.bash
|
||||
|
||||
CBT_dep=""
|
||||
CBT_ver=""
|
||||
CBT_relative_cmake_pos=""
|
||||
|
||||
cmake_list_targets() {
|
||||
local base_src_dir
|
||||
ensure_repo_version base_src_dir "${CBT_dep}" "${CBT_ver}"
|
||||
local src_dir="${base_src_dir}${CBT_relative_cmake_pos}"
|
||||
local name="${CBT_dep}_${CBT_ver}"
|
||||
local build_dir="/ae/0_cmake_build_dir/${name}"
|
||||
mkdir -p "${build_dir}"
|
||||
local cmake="/ae/opt/cmake/bin/cmake"
|
||||
local configure_cmd="${cmake} -S ${src_dir} -B ${build_dir}"
|
||||
local list_cmd="${cmake} --build ${build_dir} --target help"
|
||||
exec_record "${configure_cmd}"
|
||||
exec_record "${list_cmd}"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
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]}" ./cmake.bash
|
||||
# shellcheck source=./cmake.bash
|
||||
|
||||
|
||||
return 0
|
||||
@@ -9,21 +9,27 @@ if ! type "include" >/dev/null 2>&1; then
|
||||
}
|
||||
fi
|
||||
include "${BASH_SOURCE[0]}" ./pragma_once.bash
|
||||
if ! pragma_once ${BASH_SOURCE[0]}; then return 0; fi
|
||||
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
|
||||
include "${BASH_SOURCE[0]}" ./llvm/export.bash
|
||||
# shellcheck source=./attach/export.bash
|
||||
# shellcheck source=./patch/export.bash
|
||||
# shellcheck source=./libc/export.bash
|
||||
# shellcheck source=./base/export.bash
|
||||
# shellcheck source=./llvm/export.bash
|
||||
|
||||
include "${BASH_SOURCE[0]}" ./cmake.bash
|
||||
include "${BASH_SOURCE[0]}" ./lld.bash
|
||||
include "${BASH_SOURCE[0]}" ./install_llvm.bash
|
||||
# shellcheck source=./cmake.bash
|
||||
# shellcheck source=./lld.bash
|
||||
# shellcheck source=./install_llvm.bash
|
||||
|
||||
install_win_mingw_run_time() {
|
||||
local install_prefix="$1"
|
||||
@@ -177,13 +183,16 @@ build_ubuntu_2004() {
|
||||
attach_env_canadian_stage3 "${host}" "${ver}"
|
||||
local pkg_root="/ae/pkg_mingw-w64-x86_64"
|
||||
local zlib_pkg
|
||||
zlib_pkg="$(
|
||||
download_msys2_pkg \
|
||||
"mingw64" \
|
||||
"mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst" \
|
||||
"${pkg_root}" \
|
||||
"9e75842a070ba648e986e12424e1c92c9d7d77200e85f6a34eeb600819f2e694"
|
||||
)"
|
||||
|
||||
download_msys2_pkg zlib_pkg "mingw64" "mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst" "${pkg_root}"
|
||||
|
||||
# zlib_pkg="$(
|
||||
# download_msys2_pkg \
|
||||
# "mingw64" \
|
||||
# "mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst" \
|
||||
# "${pkg_root}" \
|
||||
# "9e75842a070ba648e986e12424e1c92c9d7d77200e85f6a34eeb600819f2e694"
|
||||
# )"
|
||||
install_win_mingw_run_time "${toolchain_root}/bin"
|
||||
local libexec_runtime_dir="${toolchain_root}/libexec/gcc/${target}/${ver2}"
|
||||
check_directory_var libexec_runtime_dir
|
||||
@@ -194,16 +203,7 @@ build_ubuntu_2004() {
|
||||
compress_directory_tar_gz "/ae/env/${name}" "/ae/env" "${name}.tar.gz"
|
||||
}
|
||||
|
||||
#sudo chmod -R 777 /aenv/test_sysroot
|
||||
#compress_directory_tar_gz "/aenv/test_sysroot" "/aenv" "aaa.tar.gz"
|
||||
build_ubuntu2004_gcc93_clang_then_windows_lld_linux_x86
|
||||
|
||||
#build_ubuntu_2004 "win_ubuntu2004_0629_1227" "15.1.0" "/ae/env/local_ubuntu2004_15_10_527_1412/releases_gcc-15.1.0_x86_64-linux-gnu"
|
||||
|
||||
# linux 内核模块构建
|
||||
# https://docs.kernel.org/kbuild/modules.html
|
||||
|
||||
build_mingw_lld
|
||||
|
||||
#install_cmake ""
|
||||
exit 0
|
||||
echo "执行完毕 !!!"
|
||||
+32
-33
@@ -1,18 +1,16 @@
|
||||
include_guard(GLOBAL)
|
||||
|
||||
|
||||
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(NOT CMAKE_SYSROOT)
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if (NOT CMAKE_SYSROOT)
|
||||
set(CMAKE_SYSROOT /)
|
||||
endif()
|
||||
endif()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
||||
if(CMAKE_SYSROOT)
|
||||
list(APPEND base_options "-DCMAKE_SYSROOT=${CMAKE_SYSROOT}")
|
||||
endif()
|
||||
if (CMAKE_SYSROOT)
|
||||
list(APPEND base_options "-DCMAKE_SYSROOT=${CMAKE_SYSROOT}")
|
||||
endif ()
|
||||
|
||||
set(zlib_opts)
|
||||
list(APPEND zlib_opts "-DZLIB_BUILD_EXAMPLES=OFF")
|
||||
@@ -25,15 +23,15 @@ _register_git_cmake_library(
|
||||
rcl_get_effective_install_dir(zlib ZLIB_ROOT)
|
||||
set(ZLIB_INCLUDE_DIR ${ZLIB_ROOT}/include)
|
||||
|
||||
if(MSVC)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
if (MSVC)
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/zlibstaticd.lib")
|
||||
else()
|
||||
else ()
|
||||
set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/zlibstatic.lib")
|
||||
endif()
|
||||
else()
|
||||
endif ()
|
||||
else ()
|
||||
set(ZLIB_LIBRARY ${ZLIB_ROOT}/lib/libz.a)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
rcl_cmake_library_set_cmake_options(zlib ${zlib_opts})
|
||||
rcl_cmake_library_set_other_use_opt(zlib
|
||||
@@ -65,19 +63,19 @@ set(LIBPNG_VERSION v1.6.58)
|
||||
set(PNG_ROOT "${EXTERNAL_INSTALL_DIR}/PNG_${LIBPNG_VERSION}")
|
||||
set(PNG_PNG_INCLUDE_DIR "${PNG_ROOT}/include")
|
||||
|
||||
if(WIN32)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
if (WIN32)
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16_staticd.lib")
|
||||
else()
|
||||
else ()
|
||||
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16_static.lib")
|
||||
endif()
|
||||
else()
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
endif ()
|
||||
else ()
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16d.a")
|
||||
else()
|
||||
else ()
|
||||
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16.a")
|
||||
endif()
|
||||
endif()
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
set(libpng_opts)
|
||||
list(APPEND libpng_opts "-DPNG_SHARED=OFF")
|
||||
@@ -101,8 +99,6 @@ rcl_cmake_library_set_other_use_opt(libpng
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
set(GTest_opts)
|
||||
list(APPEND GTest_opts "-Dgtest_force_shared_crt=ON")
|
||||
_register_git_cmake_library(
|
||||
@@ -115,7 +111,6 @@ rcl_cmake_library_set_cmake_options(googletest ${GTest_opts})
|
||||
set(GTest_DIR ${EXTERNAL_INSTALL_DIR}/googletest/lib/cmake)
|
||||
|
||||
|
||||
|
||||
#_register_git_cmake_library(
|
||||
# libarchive
|
||||
# libarchive
|
||||
@@ -143,9 +138,6 @@ rcl_cmake_library_set_cmake_options(libzip ${libzip_opts})
|
||||
rcl_cmake_library_set_deps(libzip zlib)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#set(ucoro_opts)
|
||||
#_register_git_cmake_library_opt(
|
||||
# "ucoro"
|
||||
@@ -157,7 +149,7 @@ rcl_cmake_library_set_deps(libzip zlib)
|
||||
|
||||
|
||||
set(spdlog_opts)
|
||||
list(APPEND spdlog_opts
|
||||
list(APPEND spdlog_opts
|
||||
"-DSPDLOG_BUILD_EXAMPLE=OFF"
|
||||
"-DSPDLOG_BUILD_TESTS=OFF"
|
||||
"-DSPLOG_BUILD_BENCH=OFF"
|
||||
@@ -174,8 +166,6 @@ _register_git_cmake_library(
|
||||
rcl_cmake_library_set_cmake_options(spdlog ${spdlog_opts})
|
||||
|
||||
|
||||
|
||||
|
||||
_register_git_cmake_library(
|
||||
pfr
|
||||
pfr
|
||||
@@ -183,4 +173,13 @@ _register_git_cmake_library(
|
||||
"2.2.0"
|
||||
)
|
||||
|
||||
_register_git_cmake_library(
|
||||
llvm
|
||||
llvm
|
||||
"https://github.com/llvm/llvm-project.git"
|
||||
"llvmorg-22.1.8"
|
||||
)
|
||||
rcl_cmake_library_set_cmake_source_relative_dir(llvm "llvm")
|
||||
|
||||
|
||||
message("base.cmake load complete!")
|
||||
|
||||
Reference in New Issue
Block a user