169120002SGou Ngai# 当前脚本用于初始化自定义的Rust工具链 269120002SGou Ngaiif [ -z "$(which cargo)" ]; then 369120002SGou Ngai echo "尚未安装Rust,请先安装Rust" 469120002SGou Ngai exit 1 569120002SGou Ngaifi 669120002SGou Ngai 7*70e3f729Slogin# 是否强制覆盖已有的工具链配置文件 8*70e3f729SloginFORCE=0 9*70e3f729Slogin 10*70e3f729Sloginwhile getopts "f" arg 11*70e3f729Slogindo 12*70e3f729Slogin case $arg in 13*70e3f729Slogin f) 14*70e3f729Slogin FORCE=1 15*70e3f729Slogin ;; 16*70e3f729Slogin ?) 17*70e3f729Slogin echo "unkonw argument" 18*70e3f729Slogin exit 1 19*70e3f729Slogin ;; 20*70e3f729Slogin esac 21*70e3f729Slogindone 22*70e3f729Slogin 2369120002SGou NgaiDRAGONOS_UNKNOWN_ELF_PATH=$(rustc --print sysroot)/lib/rustlib/x86_64-unknown-dragonos 2469120002SGou Ngaimkdir -p ${DRAGONOS_UNKNOWN_ELF_PATH}/lib 25be35961dSloginecho $DRAGONOS_UNKNOWN_ELF_PATH 26*70e3f729Slogin 27*70e3f729Slogin# 判断是否已经存在工具链配置文件 28*70e3f729Sloginif [ -f "${DRAGONOS_UNKNOWN_ELF_PATH}/target.json" ]; then 29*70e3f729Slogin if [ $FORCE -eq 0 ]; then 30*70e3f729Slogin echo "已存在工具链配置文件,如需重新初始化,请使用-f参数" 31*70e3f729Slogin exit 0 32*70e3f729Slogin fi 33*70e3f729Sloginfi 34*70e3f729Slogin 3569120002SGou Ngai# 设置工具链配置文件 3669120002SGou Ngaiecho \ 3769120002SGou Ngai"{\ 3869120002SGou Ngai \"arch\": \"x86_64\", 3969120002SGou Ngai \"code-model\": \"kernel\", 4069120002SGou Ngai \"cpu\": \"x86-64\", 4169120002SGou Ngai \"os\": \"dragonos\", 4269120002SGou Ngai \"target-endian\": \"little\", 4369120002SGou Ngai \"target-pointer-width\": \"64\", 4469120002SGou Ngai \"target-c-int-width\": \"32\", 4569120002SGou Ngai \"data-layout\": \"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128\", 4669120002SGou Ngai \"disable-redzone\": true, 4769120002SGou Ngai \"features\": \"-3dnow,-3dnowa,-avx,-avx2\", 4869120002SGou Ngai \"linker\": \"rust-lld\", 4969120002SGou Ngai \"linker-flavor\": \"ld.lld\", 5069120002SGou Ngai \"llvm-target\": \"x86_64-unknown-none\", 5169120002SGou Ngai \"max-atomic-width\": 64, 5269120002SGou Ngai \"panic-strategy\": \"abort\", 5369120002SGou Ngai \"position-independent-executables\": true, 5469120002SGou Ngai \"relro-level\": \"full\", 5569120002SGou Ngai \"stack-probes\": { 5669120002SGou Ngai \"kind\": \"inline-or-call\", 5769120002SGou Ngai \"min-llvm-version-for-inline\": [ 5869120002SGou Ngai 16, 5969120002SGou Ngai 0, 6069120002SGou Ngai 0 6169120002SGou Ngai ] 6269120002SGou Ngai }, 6369120002SGou Ngai \"static-position-independent-executables\": true, 6469120002SGou Ngai \"supported-sanitizers\": [ 6569120002SGou Ngai \"kcfi\" 6669120002SGou Ngai ], 6769120002SGou Ngai \"target-pointer-width\": \"64\" 6869120002SGou Ngai}" > ${DRAGONOS_UNKNOWN_ELF_PATH}/target.json || exit 1