xref: /dragonos-dsc/toolchain.sh (revision 0f61350272d93e1cbda1f5f565bdaf81cc942a9f)
1*f179f81bSsu# 当前脚本用于初始化自定义的Rust工具链
2*f179f81bSsuif [ -z "$(which cargo)" ]; then
3*f179f81bSsu    echo "尚未安装Rust,请先安装Rust"
4*f179f81bSsu    exit 1
5*f179f81bSsufi
6*f179f81bSsu
7*f179f81bSsuDRAGONOS_UNKNOWN_ELF_PATH=$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-dragonos
8*f179f81bSsumkdir -p ${DRAGONOS_UNKNOWN_ELF_PATH}/lib
9*f179f81bSsu# 设置工具链配置文件
10*f179f81bSsuecho   \
11*f179f81bSsu"{\
12*f179f81bSsu    \"arch\": \"x86_64\",
13*f179f81bSsu    \"code-model\": \"kernel\",
14*f179f81bSsu    \"cpu\": \"x86-64\",
15*f179f81bSsu    \"os\": \"dragonos\",
16*f179f81bSsu    \"target-endian\": \"little\",
17*f179f81bSsu    \"target-pointer-width\": \"64\",
18*f179f81bSsu    \"target-c-int-width\": \"32\",
19*f179f81bSsu    \"data-layout\": \"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128\",
20*f179f81bSsu    \"disable-redzone\": true,
21*f179f81bSsu    \"features\": \"-3dnow,-3dnowa,-avx,-avx2\",
22*f179f81bSsu    \"linker\": \"rust-lld\",
23*f179f81bSsu    \"linker-flavor\": \"ld.lld\",
24*f179f81bSsu    \"llvm-target\": \"x86_64-unknown-none\",
25*f179f81bSsu    \"max-atomic-width\": 64,
26*f179f81bSsu    \"panic-strategy\": \"abort\",
27*f179f81bSsu    \"position-independent-executables\": true,
28*f179f81bSsu    \"relro-level\": \"full\",
29*f179f81bSsu    \"stack-probes\": {
30*f179f81bSsu      \"kind\": \"inline-or-call\",
31*f179f81bSsu      \"min-llvm-version-for-inline\": [
32*f179f81bSsu        16,
33*f179f81bSsu        0,
34*f179f81bSsu        0
35*f179f81bSsu      ]
36*f179f81bSsu    },
37*f179f81bSsu    \"static-position-independent-executables\": true,
38*f179f81bSsu    \"supported-sanitizers\": [
39*f179f81bSsu      \"kcfi\"
40*f179f81bSsu    ],
41*f179f81bSsu    \"target-pointer-width\": \"64\"
42*f179f81bSsu}" > ${DRAGONOS_UNKNOWN_ELF_PATH}/target.json || exit 1