Skip to content

Commit af351ef

Browse files
zvolincitizen-stig
authored andcommitted
Allow custom riscv toolchain paths
1 parent 22feb96 commit af351ef

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

secp256k1-sys/build.rs

+29-15
Original file line numberDiff line numberDiff line change
@@ -38,21 +38,35 @@ fn main() {
3838
.define("ENABLE_MODULE_EXTRAKEYS", Some("1"));
3939

4040
if env::var("CARGO_CFG_TARGET_ARCH").unwrap() == "riscv32" {
41-
base_config.compiler("/usr/bin/clang")
42-
.flag("--sysroot=/tmp/riscv32im-osx-arm64/riscv32-unknown-elf") // https://github.com/riscv-collab/riscv-gnu-toolchain has been built and stored in /opt/riscv
43-
.flag("--gcc-toolchain=/tmp/riscv32im-osx-arm64") // https://github.com/riscv-collab/riscv-gnu-toolchain has been built and stored in /opt/riscv
44-
.no_default_flags(true)
45-
.flag("-O3")
46-
.flag("--target=riscv32-unknown-none-elf")
47-
.flag("-mabi=ilp32")
48-
.flag("-mcmodel=medany")
49-
.flag("-Os")
50-
.flag("-fdata-sections")
51-
.flag("-ffunction-sections")
52-
.flag("-dead_strip")
53-
.flag("-flto")
54-
.flag("-march=rv32im")
55-
.target("riscv32-unknown-none-elf");
41+
const DEFAULT_RISCV_GNU_TOOLCHAIN: &str = "/opt/riscv";
42+
println!("cargo:rerun-if-env-changed=RISCV_GNU_TOOLCHAIN");
43+
44+
let riscv_gnu_toolchain_path = env::var("RISCV_GNU_TOOLCHAIN").unwrap_or_else(|_| {
45+
println!("cargo:warning=Variable RISCV_GNU_TOOLCHAIN unset. Assuming '{DEFAULT_RISCV_GNU_TOOLCHAIN}'");
46+
println!("cargo:warning=Please make sure to build riscv toolchain:");
47+
println!("cargo:warning= git clone https://github.com/riscv-collab/riscv-gnu-toolchain && cd riscv-gnu-toolchain");
48+
println!("cargo:warning= export RISCV_GNU_TOOLCHAIN={DEFAULT_RISCV_GNU_TOOLCHAIN}");
49+
println!("cargo:warning= configure --prefix=\"$RISCV_GNU_TOOLCHAIN\" --with-arch=rv32im --with-abi=ilp32");
50+
println!("cargo:warning= make -j$(nproc)");
51+
52+
// if unset, try the default and fail eventually
53+
DEFAULT_RISCV_GNU_TOOLCHAIN.into()
54+
});
55+
56+
base_config
57+
.compiler("clang")
58+
.no_default_flags(true)
59+
.flag(&format!("--sysroot={riscv_gnu_toolchain_path}/riscv32-unknown-elf"))
60+
.flag(&format!("--gcc-toolchain={riscv_gnu_toolchain_path}"))
61+
.flag("--target=riscv32-unknown-none-elf")
62+
.flag("-march=rv32im")
63+
.flag("-mabi=ilp32")
64+
.flag("-mcmodel=medany")
65+
.flag("-Os")
66+
.flag("-fdata-sections")
67+
.flag("-ffunction-sections")
68+
.flag("-flto")
69+
.target("riscv32-unknown-none-elf");
5670
}
5771

5872
if cfg!(feature = "lowmemory") {

0 commit comments

Comments
 (0)