xous-core/docs/build-rust-sysroot.ps1
Sean Cross f50ec67553 initial commit
This pulls together many disparate repositories into one xous-core
repository.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-03-10 12:13:05 +08:00

46 lines
2.2 KiB
PowerShell

$rust_root=(Get-Location).ToString() + "\rust"
$env:RUSTC_BOOTSTRAP=1
$env:RUST_TARGET_PATH="$rust_root\xous-sysroot"
$env:RUSTFLAGS="--sysroot $rust_root\xous-sysroot"
$env:CC="riscv64-unknown-elf-gcc"
$env:AR="riscv64-unknown-elf-ar"
# Get the current rust tag (currently 1.41.0)
$rust_tag=(rustc -Vv | Select-String "release: ").ToString().Replace("release: ", "")
# Clone the latest Rust source
# git stash
Write-Output "Checking out Rust $rust_tag-xous..."
git clone 'git@github.com:xous-os/rust.git' rust
git checkout $rust_tag-xous
git submodule init
git submodule sync
git submodule update
Set-Location $rust_root/src
git clone --recursive https://github.com/rust-lang/compiler-builtins.git
mkdir -Force $rust_root\xous-sysroot
mkdir -Force $rust_root\xous-sysroot\lib\rustlib\riscv32imac-unknown-xous-elf\lib
Write-Output "Creating riscv32imac-unknown-xous-elf.json..."
$orig_json=(rustc --target riscv32imac-unknown-none-elf --print target-spec-json -Z unstable-options | Where-Object { $_ -notmatch "is-builtin" })
$orig_json.replace('"os": "none",', '"os": "xous",') | Out-File -FilePath $rust_root\xous-sysroot\riscv32imac-unknown-xous-elf.json -Encoding ascii
Set-Location $rust_root/src/libcore
cargo build --release --target riscv32imac-unknown-xous-elf
Copy-Item $rust_root/target/riscv32imac-unknown-xous-elf/release/libcore.rlib $rust_root\xous-sysroot\lib\rustlib\riscv32imac-unknown-xous-elf\lib
Set-Location $rust_root/src/liballoc
cargo build --release --target riscv32imac-unknown-xous-elf
Copy-Item $rust_root/target/riscv32imac-unknown-xous-elf/release/liballoc.rlib $rust_root\xous-sysroot\lib\rustlib\riscv32imac-unknown-xous-elf\lib
Set-Location $rust_root/src/compiler-builtins
cargo build --release --target riscv32imac-unknown-xous-elf --features mem
Copy-Item target/riscv32imac-unknown-xous-elf/release/libcompiler_builtins.rlib $rust_root\xous-sysroot\lib\rustlib\riscv32imac-unknown-xous-elf\lib
Set-Location $rust_root/src/libstd
cargo build --release --target riscv32imac-unknown-xous-elf
Copy-Item $rust_root/target/riscv32imac-unknown-xous-elf/release/libstd.rlib $rust_root\xous-sysroot\lib\rustlib\riscv32imac-unknown-xous-elf\lib
Set-Location $rust_root