diff --git a/ci/actions-templates/linux-builds-template.yaml b/ci/actions-templates/linux-builds-template.yaml index bbb71efc91..084ba2d4cd 100644 --- a/ci/actions-templates/linux-builds-template.yaml +++ b/ci/actions-templates/linux-builds-template.yaml @@ -43,6 +43,7 @@ jobs: # skip-main skip-pr skip-stable - armv7-linux-androideabi # skip-pr skip-main - x86_64-linux-android # skip-pr skip-main - riscv64gc-unknown-linux-gnu # skip-pr skip-main + - riscv64gc-unknown-linux-musl # skip-pr skip-main - loongarch64-unknown-linux-gnu # skip-pr skip-main - loongarch64-unknown-linux-musl # skip-pr skip-main include: diff --git a/ci/cloudfront-invalidation.txt b/ci/cloudfront-invalidation.txt index cd484f79dd..488f14fcb8 100644 --- a/ci/cloudfront-invalidation.txt +++ b/ci/cloudfront-invalidation.txt @@ -53,6 +53,10 @@ rustup/dist/powerpc64le-unknown-linux-gnu/rustup-init rustup/dist/powerpc64le-unknown-linux-gnu/rustup-init.sha256 rustup/dist/powerpc64le-unknown-linux-musl/rustup-init rustup/dist/powerpc64le-unknown-linux-musl/rustup-init.sha256 +rustup/dist/riscv64gc-unknown-linux-gnu/rustup-init +rustup/dist/riscv64gc-unknown-linux-gnu/rustup-init.sha256 +rustup/dist/riscv64gc-unknown-linux-musl/rustup-init +rustup/dist/riscv64gc-unknown-linux-musl/rustup-init.sha256 rustup/dist/s390x-unknown-linux-gnu/rustup-init rustup/dist/s390x-unknown-linux-gnu/rustup-init.sha256 rustup/dist/sparcv9-sun-solaris/rustup-init.exe diff --git a/ci/docker/riscv64gc-unknown-linux-musl/Dockerfile b/ci/docker/riscv64gc-unknown-linux-musl/Dockerfile new file mode 100644 index 0000000000..3219088f87 --- /dev/null +++ b/ci/docker/riscv64gc-unknown-linux-musl/Dockerfile @@ -0,0 +1,8 @@ +FROM rust-riscv64gc-unknown-linux-musl + +# Building `aws-lc-rs` for Linux depends on `gcc-multilib`, `libclang` and `bindgen`. +# See: https://aws.github.io/aws-lc-rs/requirements/linux +RUN apt-get update && apt-get install -qy gcc-multilib libclang-dev + +ENV CC_riscv64gc_unknown_linux_musl=riscv64-unknown-linux-musl-gcc \ + CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_MUSL_LINKER=riscv64-unknown-linux-musl-gcc diff --git a/ci/fetch-rust-docker.bash b/ci/fetch-rust-docker.bash index 6f7714873e..f8ee6b5ce0 100644 --- a/ci/fetch-rust-docker.bash +++ b/ci/fetch-rust-docker.bash @@ -44,7 +44,8 @@ case "$TARGET" in x86_64-unknown-illumos) image=dist-x86_64-illumos ;; x86_64-unknown-linux-gnu) image=dist-x86_64-linux ;; x86_64-unknown-netbsd) image=dist-x86_64-netbsd ;; - riscv64gc-unknown-linux-gnu) image=dist-riscv64-linux ;; + riscv64gc-unknown-linux-gnu) image=dist-riscv64-linux-gnu ;; + riscv64gc-unknown-linux-musl) image=dist-riscv64-linux-musl ;; loongarch64-unknown-linux-gnu) image=dist-loongarch64-linux ;; loongarch64-unknown-linux-musl) image=dist-loongarch64-musl ;; *) exit ;; diff --git a/doc/user-guide/src/installation/other.md b/doc/user-guide/src/installation/other.md index 73fac6e6d4..f0f1912168 100644 --- a/doc/user-guide/src/installation/other.md +++ b/doc/user-guide/src/installation/other.md @@ -159,6 +159,8 @@ You can manually download `rustup-init` for a given target from - [sha256 file](https://static.rust-lang.org/rustup/dist/powerpc64le-unknown-linux-gnu/rustup-init.sha256) - [powerpc64le-unknown-linux-musl](https://static.rust-lang.org/rustup/dist/powerpc64le-unknown-linux-musl/rustup-init) - [sha256 file](https://static.rust-lang.org/rustup/dist/powerpc64le-unknown-linux-musl/rustup-init.sha256) +- [riscv64gc-unknown-linux-musl](https://static.rust-lang.org/rustup/dist/riscv64gc-unknown-linux-musl/rustup-init) + - [sha256 file](https://static.rust-lang.org/rustup/dist/riscv64gc-unknown-linux-musl/rustup-init.sha256) - [s390x-unknown-linux-gnu](https://static.rust-lang.org/rustup/dist/s390x-unknown-linux-gnu/rustup-init) - [sha256 file](https://static.rust-lang.org/rustup/dist/s390x-unknown-linux-gnu/rustup-init.sha256) - [sparcv9-sun-solaris](https://static.rust-lang.org/rustup/dist/sparcv9-sun-solaris/rustup-init) diff --git a/src/dist/mod.rs b/src/dist/mod.rs index 185f903a9b..e20dd28615 100644 --- a/src/dist/mod.rs +++ b/src/dist/mod.rs @@ -271,6 +271,10 @@ const TRIPLE_POWERPC64_UNKNOWN_LINUX: &str = "powerpc64-unknown-linux-musl"; const TRIPLE_POWERPC64LE_UNKNOWN_LINUX: &str = "powerpc64le-unknown-linux-gnu"; #[cfg(all(not(windows), target_env = "musl"))] const TRIPLE_POWERPC64LE_UNKNOWN_LINUX: &str = "powerpc64le-unknown-linux-musl"; +#[cfg(all(not(windows), not(target_env = "musl")))] +const TRIPLE_RISCV64_UNKNOWN_LINUX: &str = "riscv64gc-unknown-linux-gnu"; +#[cfg(all(not(windows), target_env = "musl"))] +const TRIPLE_RISCV64_UNKNOWN_LINUX: &str = "riscv64gc-unknown-linux-musl"; // MIPS platforms don't indicate endianness in uname, however binaries only // run on boxes with the same endianness, as expected. @@ -520,6 +524,7 @@ impl TargetTriple { (b"Linux", b"loongarch64") => Some(TRIPLE_LOONGARCH64_UNKNOWN_LINUX), (b"Linux", b"ppc64") => Some(TRIPLE_POWERPC64_UNKNOWN_LINUX), (b"Linux", b"ppc64le") => Some(TRIPLE_POWERPC64LE_UNKNOWN_LINUX), + (b"Linux", b"riscv64") => Some(TRIPLE_RISCV64_UNKNOWN_LINUX), (b"Darwin", b"x86_64") => Some("x86_64-apple-darwin"), (b"Darwin", b"i686") => Some("i686-apple-darwin"), (b"FreeBSD", b"x86_64") => Some("x86_64-unknown-freebsd"),