Skip to content

Commit f981a5e

Browse files
authored
feat: basic support for linux riscv64 (#12602)
1 parent 2b960df commit f981a5e

File tree

12 files changed

+72
-2
lines changed

12 files changed

+72
-2
lines changed

.changes/riscv-support.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'tauri-cli': 'minor:enhance'
3+
'tauri-utils': 'minor:enhance'
4+
'tauri-bundler': 'minor:enhance'
5+
'@tauri-apps/cli': 'minor:enhance'
6+
---
7+
8+
Add basic support for linux riscv64 platform.

.github/workflows/publish-cli-js.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,15 @@ jobs:
9292
rustup target add aarch64-unknown-linux-musl
9393
pnpm build --target aarch64-unknown-linux-musl
9494
/aarch64-linux-musl-cross/bin/aarch64-linux-musl-strip *.node
95+
- host: ubuntu-22.04
96+
architecture: x64
97+
target: riscv64gc-unknown-linux-gnu
98+
setup: |
99+
sudo apt-get update
100+
sudo apt-get install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu -y
101+
build: |
102+
pnpm build --target=riscv64gc-unknown-linux-gnu
103+
riscv64-linux-gnu-strip *.node
95104
name: stable - ${{ matrix.settings.target }} - node@20
96105
runs-on: ${{ matrix.settings.host }}
97106
steps:

crates/tauri-bundler/src/bundle/linux/debian.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
4646
Arch::AArch64 => "arm64",
4747
Arch::Armhf => "armhf",
4848
Arch::Armel => "armel",
49+
Arch::Riscv64 => "riscv64",
4950
target => {
5051
return Err(crate::Error::ArchError(format!(
5152
"Unsupported architecture: {:?}",

crates/tauri-bundler/src/bundle/linux/rpm.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
2929
Arch::AArch64 => "aarch64",
3030
Arch::Armhf => "armhfp",
3131
Arch::Armel => "armel",
32+
Arch::Riscv64 => "riscv64",
3233
target => {
3334
return Err(crate::Error::ArchError(format!(
3435
"Unsupported architecture: {:?}",

crates/tauri-bundler/src/bundle/platform.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ pub fn target_triple() -> Result<String, crate::Error> {
5757
"armv7".into()
5858
} else if cfg!(target_arch = "aarch64") {
5959
"aarch64".into()
60+
} else if cfg!(target_arch = "riscv64") {
61+
"riscv64".into()
6062
} else {
6163
return Err(crate::Error::ArchError(String::from(
6264
"Unable to determine target-architecture",

crates/tauri-bundler/src/bundle/settings.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,8 @@ pub enum Arch {
723723
Armhf,
724724
/// For the AArch32 / ARM32 instruction sets with soft-float (32 bits).
725725
Armel,
726+
/// For the RISC-V instruction sets (64 bits).
727+
Riscv64,
726728
/// For universal macOS applications.
727729
Universal,
728730
}
@@ -900,6 +902,8 @@ impl Settings {
900902
Arch::Armel
901903
} else if self.target.starts_with("aarch64") {
902904
Arch::AArch64
905+
} else if self.target.starts_with("riscv64") {
906+
Arch::Riscv64
903907
} else if self.target.starts_with("universal") {
904908
Arch::Universal
905909
} else {

crates/tauri-cli/src/interface/rust.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -794,8 +794,9 @@ impl AppSettings for RustAppSettings {
794794
config: &Config,
795795
features: &[String],
796796
) -> crate::Result<BundleSettings> {
797-
let arch64bits =
798-
self.target_triple.starts_with("x86_64") || self.target_triple.starts_with("aarch64");
797+
let arch64bits = self.target_triple.starts_with("x86_64")
798+
|| self.target_triple.starts_with("aarch64")
799+
|| self.target_triple.starts_with("riscv64");
799800

800801
let updater_enabled = config.bundle.create_updater_artifacts != Updater::Bool(false);
801802
let v1_compatible = matches!(config.bundle.create_updater_artifacts, Updater::String(_));

crates/tauri-utils/src/platform.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,8 @@ pub fn target_triple() -> crate::Result<String> {
191191
"armv7"
192192
} else if cfg!(target_arch = "aarch64") {
193193
"aarch64"
194+
} else if cfg!(target_arch = "riscv64") {
195+
"riscv64"
194196
} else {
195197
return Err(crate::Error::Architecture);
196198
};

packages/cli/.cargo/config.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ rustflags = ["-C", "target-feature=-crt-static"]
1212
[target.armv7-unknown-linux-gnueabihf]
1313
linker = "arm-linux-gnueabihf-gcc"
1414

15+
[target.riscv64gc-unknown-linux-gnu]
16+
linker = "riscv64-linux-gnu-gcc"
17+
1518
[target.x86_64-pc-windows-msvc]
1619
rustflags = ["-C", "target-feature=+crt-static"]
1720
[target.i686-pc-windows-msvc]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# `@tauri-apps/cli-linux-riscv64-gnu`
2+
3+
This is the **riscv64gc-unknown-linux-gnu** binary for `@tauri-apps/cli`

0 commit comments

Comments
 (0)