DragonOS/tools/init_rust_toolchain.sh
LoGin e80796eb82
feat: la64 boot (#1132)
* la64能够进入到kernel_main
* ci: 添加为ubuntu编译qemu-loongarch64的脚本
* feat: la64能输出hello world
* la64 安装gcc && 配置github ci
* chore: 更新CI工作流和构建脚本中的Docker镜像版本至v1.10

Signed-off-by: longjin <longjin@DragonOS.org>
2025-04-20 18:51:45 +08:00

85 lines
2.6 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 当前脚本用于初始化自定义的Rust工具链
if [ -z "$(which cargo)" ]; then
echo "尚未安装Rust请先安装Rust"
exit 1
fi
WORK_DIR=$(pwd)
RUST_SRC_VERSION=1.66.0
# 初始化bare bone工具链
DRAGONOS_UNKNOWN_ELF_PATH=$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-dragonos
mkdir -p ${DRAGONOS_UNKNOWN_ELF_PATH}/lib
# 设置工具链配置文件
echo \
"{\
\"arch\": \"x86_64\",
\"code-model\": \"kernel\",
\"cpu\": \"x86-64\",
\"os\": \"dragonos\",
\"target-endian\": \"little\",
\"target-pointer-width\": \"64\",
\"target-c-int-width\": \"32\",
\"data-layout\": \"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128\",
\"disable-redzone\": true,
\"features\": \"-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-3dnow,-3dnowa,-avx,-avx2,+soft-float\",
\"linker\": \"rust-lld\",
\"linker-flavor\": \"ld.lld\",
\"llvm-target\": \"x86_64-unknown-none\",
\"max-atomic-width\": 64,
\"panic-strategy\": \"abort\",
\"position-independent-executables\": true,
\"relro-level\": \"full\",
\"stack-probes\": {
\"kind\": \"inline-or-call\",
\"min-llvm-version-for-inline\": [
16,
0,
0
]
},
\"static-position-independent-executables\": true,
\"supported-sanitizers\": [
\"kcfi\"
],
\"target-pointer-width\": \"64\"
}" > ${DRAGONOS_UNKNOWN_ELF_PATH}/target.json || exit 1
# echo \
# "{
# \"llvm-target\": \"x86_64-unknown-none\",
# \"data-layout\": \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\",
# \"arch\": \"x86_64\",
# \"target-endian\": \"little\",
# \"target-pointer-width\": \"64\",
# \"target-c-int-width\": \"32\",
# \"os\": \"dragonos\",
# \"linker\": \"rust-lld\",
# \"linker-flavor\": \"ld.lld\",
# \"executables\": true,
# \"features\": \"-mmx,-sse,+soft-float\",
# \"disable-redzone\": true,
# \"panic-strategy\": \"abort\"
# }" > ${DRAGONOS_UNKNOWN_ELF_PATH}/target.json || exit 1
# 编译标准库 (仍存在问题,不能编译)
# mkdir -p build || exit 1
# cd build
# if [ ! -d "rust" ]; then
# git clone -b $RUST_SRC_VERSION https://github.com/rust-lang/rust.git --depth=1 --recursive || exit 1
# fi
# cd rust
# git checkout $RUST_SRC_VERSION
# git submodule update --init --recursive
# cargo clean
# export RUST_COMPILER_RT_ROOT=$(pwd)/src/llvm-project/compiler-rt
# CARGO_PROFILE_RELEASE_DEBUG=0 \
# CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS=true \
# RUSTC_BOOTSTRAP=1 \
# RUSTFLAGS="-Cforce-unwind-tables=yes -Cembed-bitcode=yes" \
# __CARGO_DEFAULT_LIB_METADATA="stablestd" \
# ./x.py build --target x86_64-unknown-dragonos || exit 1