build.rs 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. extern crate riscv_target;
  2. use riscv_target::Target;
  3. use std::path::PathBuf;
  4. use std::{env, fs};
  5. fn main() {
  6. let target = env::var("TARGET").unwrap();
  7. let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
  8. let name = env::var("CARGO_PKG_NAME").unwrap();
  9. if target.starts_with("riscv") && env::var_os("CARGO_FEATURE_INLINE_ASM").is_none() {
  10. let mut target = Target::from_target_str(&target);
  11. target.retain_extensions("ic");
  12. let target = target.to_string();
  13. fs::copy(
  14. format!("bin/{}.a", target),
  15. out_dir.join(format!("lib{}.a", name)),
  16. ).unwrap();
  17. println!("cargo:rustc-link-lib=static={}", name);
  18. println!("cargo:rustc-link-search={}", out_dir.display());
  19. }
  20. if target.starts_with("riscv32") {
  21. println!("cargo:rustc-cfg=riscv");
  22. println!("cargo:rustc-cfg=riscv32");
  23. } else if target.starts_with("riscv64") {
  24. println!("cargo:rustc-cfg=riscv");
  25. println!("cargo:rustc-cfg=riscv64");
  26. }
  27. }