放弃 linux交叉windows 编译clang

因为 llvm clang源码cmakelist 不支持 里面汇编也不支持
This commit is contained in:
2026-07-01 15:39:11 +08:00
parent 661e55300d
commit d777714fd1
73 changed files with 2713 additions and 834 deletions
+1
View File
@@ -4,3 +4,4 @@
/identifier.sqlite /identifier.sqlite
/3rdParty/GTest.zip /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)
-107
View File
@@ -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)
@@ -4,7 +4,7 @@ set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc-posix) set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc-posix)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++-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_CXX_STANDARD_REQUIRED ON)
set(CMAKE_C_FLAGS_INIT "-pthread") 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_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE 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)
+111
View File
@@ -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"
}
+361
View File
@@ -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
+37
View File
@@ -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 fi
include "${BASH_SOURCE[0]}" ./pragma_once.bash 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]}" ./attach/export.bash
include "${BASH_SOURCE[0]}" ./patch/export.bash include "${BASH_SOURCE[0]}" ./patch/export.bash
include "${BASH_SOURCE[0]}" ./libc/export.bash include "${BASH_SOURCE[0]}" ./libc/export.bash
include "${BASH_SOURCE[0]}" ./base/export.bash include "${BASH_SOURCE[0]}" ./base/export.bash
include "${BASH_SOURCE[0]}" ./llvm/export.bash
# shellcheck source=./attach/export.bash # shellcheck source=./attach/export.bash
# shellcheck source=./patch/export.bash # shellcheck source=./patch/export.bash
# shellcheck source=./libc/export.bash # shellcheck source=./libc/export.bash
# shellcheck source=./base/export.bash # shellcheck source=./base/export.bash
# shellcheck source=./llvm/export.bash
include "${BASH_SOURCE[0]}" ./cmake.bash include "${BASH_SOURCE[0]}" ./cmake.bash
include "${BASH_SOURCE[0]}" ./lld.bash include "${BASH_SOURCE[0]}" ./lld.bash
include "${BASH_SOURCE[0]}" ./install_llvm.bash
# shellcheck source=./cmake.bash # shellcheck source=./cmake.bash
# shellcheck source=./lld.bash # shellcheck source=./lld.bash
# shellcheck source=./install_llvm.bash
install_win_mingw_run_time() { install_win_mingw_run_time() {
local install_prefix="$1" local install_prefix="$1"
@@ -177,13 +183,16 @@ build_ubuntu_2004() {
attach_env_canadian_stage3 "${host}" "${ver}" attach_env_canadian_stage3 "${host}" "${ver}"
local pkg_root="/ae/pkg_mingw-w64-x86_64" local pkg_root="/ae/pkg_mingw-w64-x86_64"
local zlib_pkg local zlib_pkg
zlib_pkg="$(
download_msys2_pkg \ download_msys2_pkg zlib_pkg "mingw64" "mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst" "${pkg_root}"
"mingw64" \
"mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst" \ # zlib_pkg="$(
"${pkg_root}" \ # download_msys2_pkg \
"9e75842a070ba648e986e12424e1c92c9d7d77200e85f6a34eeb600819f2e694" # "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" install_win_mingw_run_time "${toolchain_root}/bin"
local libexec_runtime_dir="${toolchain_root}/libexec/gcc/${target}/${ver2}" local libexec_runtime_dir="${toolchain_root}/libexec/gcc/${target}/${ver2}"
check_directory_var libexec_runtime_dir 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" compress_directory_tar_gz "/ae/env/${name}" "/ae/env" "${name}.tar.gz"
} }
#sudo chmod -R 777 /aenv/test_sysroot build_ubuntu2004_gcc93_clang_then_windows_lld_linux_x86
#compress_directory_tar_gz "/aenv/test_sysroot" "/aenv" "aaa.tar.gz"
#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 exit 0
echo "执行完毕 !!!" echo "执行完毕 !!!"
+32 -33
View File
@@ -1,18 +1,16 @@
include_guard(GLOBAL) 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 /) set(CMAKE_SYSROOT /)
endif() endif ()
endif() endif ()
if(CMAKE_SYSROOT) if (CMAKE_SYSROOT)
list(APPEND base_options "-DCMAKE_SYSROOT=${CMAKE_SYSROOT}") list(APPEND base_options "-DCMAKE_SYSROOT=${CMAKE_SYSROOT}")
endif() endif ()
set(zlib_opts) set(zlib_opts)
list(APPEND zlib_opts "-DZLIB_BUILD_EXAMPLES=OFF") list(APPEND zlib_opts "-DZLIB_BUILD_EXAMPLES=OFF")
@@ -25,15 +23,15 @@ _register_git_cmake_library(
rcl_get_effective_install_dir(zlib ZLIB_ROOT) rcl_get_effective_install_dir(zlib ZLIB_ROOT)
set(ZLIB_INCLUDE_DIR ${ZLIB_ROOT}/include) set(ZLIB_INCLUDE_DIR ${ZLIB_ROOT}/include)
if(MSVC) if (MSVC)
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/zlibstaticd.lib") set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/zlibstaticd.lib")
else() else ()
set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/zlibstatic.lib") set(ZLIB_LIBRARY "${ZLIB_ROOT}/lib/zlibstatic.lib")
endif() endif ()
else() else ()
set(ZLIB_LIBRARY ${ZLIB_ROOT}/lib/libz.a) set(ZLIB_LIBRARY ${ZLIB_ROOT}/lib/libz.a)
endif() endif ()
rcl_cmake_library_set_cmake_options(zlib ${zlib_opts}) rcl_cmake_library_set_cmake_options(zlib ${zlib_opts})
rcl_cmake_library_set_other_use_opt(zlib 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_ROOT "${EXTERNAL_INSTALL_DIR}/PNG_${LIBPNG_VERSION}")
set(PNG_PNG_INCLUDE_DIR "${PNG_ROOT}/include") set(PNG_PNG_INCLUDE_DIR "${PNG_ROOT}/include")
if(WIN32) if (WIN32)
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16_staticd.lib") set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16_staticd.lib")
else() else ()
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16_static.lib") set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16_static.lib")
endif() endif ()
else() else ()
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16d.a") set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16d.a")
else() else ()
set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16.a") set(PNG_LIBRARY "${PNG_ROOT}/lib/libpng16.a")
endif() endif ()
endif() endif ()
set(libpng_opts) set(libpng_opts)
list(APPEND libpng_opts "-DPNG_SHARED=OFF") list(APPEND libpng_opts "-DPNG_SHARED=OFF")
@@ -101,8 +99,6 @@ rcl_cmake_library_set_other_use_opt(libpng
) )
set(GTest_opts) set(GTest_opts)
list(APPEND GTest_opts "-Dgtest_force_shared_crt=ON") list(APPEND GTest_opts "-Dgtest_force_shared_crt=ON")
_register_git_cmake_library( _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) set(GTest_DIR ${EXTERNAL_INSTALL_DIR}/googletest/lib/cmake)
#_register_git_cmake_library( #_register_git_cmake_library(
# libarchive # libarchive
# libarchive # libarchive
@@ -143,9 +138,6 @@ rcl_cmake_library_set_cmake_options(libzip ${libzip_opts})
rcl_cmake_library_set_deps(libzip zlib) rcl_cmake_library_set_deps(libzip zlib)
#set(ucoro_opts) #set(ucoro_opts)
#_register_git_cmake_library_opt( #_register_git_cmake_library_opt(
# "ucoro" # "ucoro"
@@ -157,7 +149,7 @@ rcl_cmake_library_set_deps(libzip zlib)
set(spdlog_opts) set(spdlog_opts)
list(APPEND spdlog_opts list(APPEND spdlog_opts
"-DSPDLOG_BUILD_EXAMPLE=OFF" "-DSPDLOG_BUILD_EXAMPLE=OFF"
"-DSPDLOG_BUILD_TESTS=OFF" "-DSPDLOG_BUILD_TESTS=OFF"
"-DSPLOG_BUILD_BENCH=OFF" "-DSPLOG_BUILD_BENCH=OFF"
@@ -174,8 +166,6 @@ _register_git_cmake_library(
rcl_cmake_library_set_cmake_options(spdlog ${spdlog_opts}) rcl_cmake_library_set_cmake_options(spdlog ${spdlog_opts})
_register_git_cmake_library( _register_git_cmake_library(
pfr pfr
pfr pfr
@@ -183,4 +173,13 @@ _register_git_cmake_library(
"2.2.0" "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!") message("base.cmake load complete!")