243 lines
6.5 KiB
Bash
243 lines
6.5 KiB
Bash
#!/bin/bash
|
|
|
|
#!/bin/bash
|
|
# shellcheck disable=SC2155
|
|
if ! type "include" > /dev/null 2>&1; then
|
|
include() {
|
|
# echo "${1} ${2}"
|
|
. "$(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
|
|
|
|
|
|
|
|
|
|
install_win_mingw_run_time() {
|
|
local install_prefix="$1"
|
|
local target="x86_64-w64-mingw32"
|
|
|
|
check_directory "${install_prefix}"
|
|
|
|
log_info "Copying MinGW runtime DLLs"
|
|
log_info "Source: /usr/${target}/lib"
|
|
log_info "Dest : ${install_prefix}"
|
|
|
|
mkdir -p "${install_prefix}"
|
|
|
|
find "/usr/${target}" -name "*.dll" | while read -r f; do
|
|
cp -a "$f" "${install_prefix}/"
|
|
log_info "file: ${f} "
|
|
done
|
|
|
|
find "/usr/lib/gcc/${target}" -path "*-posix/*.dll" | while read -r f; do
|
|
cp -a "$f" "${install_prefix}/"
|
|
log_info "file: ${f}"
|
|
done
|
|
|
|
|
|
log_info "Done!"
|
|
}
|
|
|
|
|
|
function safe_llvm_strip {
|
|
# Check if a directory parameter is provided
|
|
if [[ -z "$1" ]]; then
|
|
echo "No directory specified. Exiting."
|
|
return 1
|
|
fi
|
|
|
|
# Directory parameter
|
|
local dir="$1"
|
|
|
|
# Find all regular files in the specified directory and subdirectories
|
|
find "$dir" -type f | while read -r file; do
|
|
# Attempt to strip the file
|
|
llvm-strip --strip-unneeded "$file" 2>/dev/null
|
|
done
|
|
}
|
|
|
|
echo "工作目录: $(pwd)"
|
|
|
|
build_kylin_ver(){
|
|
local ver=${1}
|
|
local ver2=${2}
|
|
local toolchain_name
|
|
local host="x86_64-w64-mingw32"
|
|
cacl_toolchain_name_canadian toolchain_name "${host}" "${ver}"
|
|
local toolchain_root="${gev_canadian_dir}/${toolchain_name}"
|
|
# 编译交叉编译工具
|
|
attach_env_local_cross "${ver}"
|
|
# 解压python库
|
|
local pkg_root="/ae/pkg_mingw-w64-x86_64"
|
|
mkdir -p "${toolchain_root}"
|
|
|
|
|
|
|
|
# --debug-trycompile --debug-output -DCMAKE_TRY_COMPILE_NO_CLEANUP
|
|
# 工具链运行的时候居然也需要 zlib1.dll 但是没重装系统前没发现
|
|
local python_pkg="${pkg_root}/mingw-w64-x86_64-python-3.12.12-1-any.pkg.tar.zst"
|
|
tar --zstd -xf "${python_pkg}" -C "${toolchain_root}" --strip-components=1 mingw64
|
|
local zlib_pkg="${pkg_root}/mingw-w64-x86_64-zlib-1.3.2-2-any.pkg.tar.zst"
|
|
tar --zstd -xf "${zlib_pkg}" -C "${toolchain_root}" --strip-components=1 mingw64
|
|
|
|
local script_text
|
|
local script_path="${toolchain_root}/configure_python.bash"
|
|
# 生成configure 脚本
|
|
|
|
|
|
|
|
gen_python_pth "${toolchain_root}/lib/python3.12/site-packages/myenv.pth" \
|
|
".." \
|
|
"../lib-dynload"
|
|
|
|
|
|
generate_case_dispatch_script_string script_text \
|
|
'--includes|--cflags' "-I ${toolchain_root}/include/python3.12" \
|
|
'--ldflags|--libs' "${toolchain_root}/lib/libpython3.12.dll.a" \
|
|
'--exec-prefix' "${toolchain_root}"
|
|
printf '%s' "$script_text" > "${script_path}"
|
|
chmod 777 "${script_path}"
|
|
|
|
|
|
# 后就
|
|
bge_binutils_gdb_suffix_opts=" --with-python=${script_path} --enable-targets=all --disable-sim"
|
|
attach_env_canadian_stage3 "${host}" "${ver}"
|
|
bge_binutils_gdb_suffix_opts=""
|
|
|
|
|
|
|
|
# 安装mingw 运行时库
|
|
install_win_mingw_run_time "${toolchain_root}/bin"
|
|
#install_win_mingw_run_time "${toolchain_root}/libexec/gcc/${target}/${ver2}"
|
|
|
|
# 非递归复制
|
|
local libexec_runtime_dir="${toolchain_root}/libexec/gcc/${target}/${ver2}"
|
|
check_directory_var libexec_runtime_dir
|
|
cp "${toolchain_root}/bin/"*.dll "${libexec_runtime_dir}"
|
|
|
|
|
|
local target_bin="${toolchain_root}/${target}/bin"
|
|
check_directory_var target_bin
|
|
cp "${toolchain_root}/bin/"*.dll "${target_bin}"
|
|
}
|
|
|
|
|
|
|
|
build_arm_kylin(){
|
|
name="win_arm_kylin_414_1224"
|
|
local target="aarch64-linux-gnu"
|
|
local sysroot="/ae/sysroots/arm_kylin"
|
|
init_env "${name}" "${sysroot}" "${target}"
|
|
gev_cur_toolchain_name="arm_kylin"
|
|
local root="${gev_target_sysroot}"
|
|
check_and_create_dir_var root
|
|
patch_system_qt5 "${root}" "${root}/usr/lib/aarch64-linux-gnu/cmake" "/ae/sysroots/win_qt_host_tool/5.14.2/msvc2017_64/qt5/bin"
|
|
build_kylin_ver "releases/gcc-9.3.0" "9.3.0"
|
|
#build_kylin_ver "releases/gcc-15.2.0" "15.2.0"
|
|
compress_directory_tar_gz "/ae/env/${name}" "/ae/env" "${name}.tar.gz"
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#build_arm_kylin
|
|
|
|
|
|
|
|
build_local_gcc() {
|
|
name="local_ubuntu2004_15_10_527_1412"
|
|
local target="x86_64-linux-gnu"
|
|
local sysroot="/ae/sysroots/ubuntu2004"
|
|
local ver="releases/gcc-15.1.0"
|
|
gev_cur_toolchain_name="local_gcc"
|
|
init_env "${name}" "${sysroot}" "${target}"
|
|
attach_env_local_cross "${ver}"
|
|
compress_directory_tar_gz "/ae/env/${name}" "/ae/env" "${name}.tar.gz"
|
|
}
|
|
|
|
build_ubuntu_2004() {
|
|
# 填写 15.1.0 9.3.0 这种
|
|
local name=$1
|
|
local inter_ver=$2
|
|
local local_gcc_toolchain_dir=$3
|
|
name="${name}_${inter_ver}"
|
|
|
|
local target="x86_64-linux-gnu"
|
|
local sysroot="/ae/sysroots/debootstrap_ubuntu_2004"
|
|
local ver="releases/gcc-${inter_ver}"
|
|
local ver2="${inter_ver}"
|
|
init_env "${name}" "${sysroot}" "${target}"
|
|
gev_cur_toolchain_name="ubuntu_2004_${target}_${inter_ver}"
|
|
|
|
|
|
if [ -z "$local_gcc_toolchain_dir" ]; then
|
|
attach_env_local_cross "${ver}"
|
|
fi
|
|
|
|
local host="x86_64-w64-mingw32"
|
|
local toolchain_name
|
|
cacl_toolchain_name_canadian toolchain_name "${host}" "${ver}"
|
|
local toolchain_root="${gev_canadian_dir}/${toolchain_name}"
|
|
|
|
load_toolchain "${local_gcc_toolchain_dir}" "${target}"
|
|
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"
|
|
)"
|
|
install_win_mingw_run_time "${toolchain_root}/bin"
|
|
local libexec_runtime_dir="${toolchain_root}/libexec/gcc/${target}/${ver2}"
|
|
check_directory_var libexec_runtime_dir
|
|
cp "${toolchain_root}/bin/"*.dll "${libexec_runtime_dir}"
|
|
local target_bin="${toolchain_root}/${target}/bin"
|
|
check_directory_var target_bin
|
|
cp "${toolchain_root}/bin/"*.dll "${target_bin}"
|
|
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_ubuntu_2004 "win_ubuntu2004_528_1457" "15.1.0" "/ae/env/local_ubuntu2004_15_10_527_1412/releases_gcc-15.1.0_x86_64-linux-gnu"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo "执行完毕 !!!"
|
|
|
|
# linux 内核模块构建
|
|
# https://docs.kernel.org/kbuild/modules.html |