123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- # 当前脚本用于初始化自定义的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
|