mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-18 12:16:31 +00:00
添加rust的bare bone工具链 (#197)
This commit is contained in:
3
tools/.gitignore
vendored
3
tools/.gitignore
vendored
@ -3,3 +3,6 @@ grub-2.06/
|
||||
arch/i386/legacy/grub/*
|
||||
arch/i386/efi/grub/*
|
||||
arch/x86_64/efi/grub/*
|
||||
|
||||
*.tar.gz
|
||||
build/*
|
84
tools/init_rust_toolchain.sh
Normal file
84
tools/init_rust_toolchain.sh
Normal file
@ -0,0 +1,84 @@
|
||||
# 当前脚本用于初始化自定义的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
|
Reference in New Issue
Block a user