diff --git a/src/env.rs b/src/env.rs index 7c71b7b6310c29d5d088c1f26ccd174373140e3f..6bdbe343be5c913c7e8dda2c71fd0441eb6f487c 100644 --- a/src/env.rs +++ b/src/env.rs @@ -1,6 +1,6 @@ use std::{env, ffi, io, process}; -use crate::{status_error, target, toolchain}; +use crate::{gnu_target, status_error, target, toolchain}; pub fn command<S: AsRef<ffi::OsStr>>(program: S) -> io::Result<process::Command> { let toolchain_dir = toolchain()?; @@ -15,9 +15,9 @@ pub fn command<S: AsRef<ffi::OsStr>>(program: S) -> io::Result<process::Command> env::set_var("PATH", new_path); } - let ar = format!("{}-ar", target()); - let cc = format!("{}-gcc", target()); - let cxx = format!("{}-g++", target()); + let ar = format!("{}-ar", gnu_target()); + let cc = format!("{}-gcc", gnu_target()); + let cxx = format!("{}-g++", gnu_target()); let cc_target_var = target().replace("-", "_"); let cargo_target_var = cc_target_var.to_uppercase(); @@ -28,6 +28,7 @@ pub fn command<S: AsRef<ffi::OsStr>>(program: S) -> io::Result<process::Command> command.env(format!("CXX_{}", cc_target_var), &cxx); command.env("RUSTUP_TOOLCHAIN", &toolchain_dir); command.env("TARGET", target()); + command.env("GNU_TARGET", gnu_target()); Ok(command) } diff --git a/src/lib.rs b/src/lib.rs index 27beafbd79b6540fdb9bc180fe89a8cc409d5547..90dafff92f1ed97bb8866ef66b34ea03ecc6b8cd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -12,6 +12,7 @@ const SUPPORTED_TARGETS: &'static [&'static str] = &[ "x86_64-unknown-redox", "aarch64-unknown-redox", "i686-unknown-redox", + "riscv64gc-unknown-redox", ]; fn installed(program: &str) -> io::Result<bool> { @@ -71,6 +72,15 @@ pub fn target() -> &'static str { SUPPORTED_TARGETS[index] } +pub fn gnu_target() -> &'static str { + let rust_target = target(); + if rust_target == "riscv64gc-unknown-redox" { + "riscv64-unknown-redox" + } else { + rust_target + } +} + pub fn main(args: &[String]) { match args.get(1) { Some(arg) => match arg.as_str() {