build.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const ARCH_CONFIGS: &[&str] = &["has_stacktrace", "has_shutdown"];
  2. // Define configs
  3. fn define_config(config: &str) {
  4. println!("cargo::rustc-check-cfg=cfg({config})");
  5. }
  6. fn define_arch_config(config: &str) {
  7. define_config(&format!("arch_{config}"));
  8. }
  9. fn define_arch_configs() {
  10. for config in ARCH_CONFIGS {
  11. define_arch_config(config);
  12. }
  13. }
  14. fn define_configs() {
  15. define_arch_configs();
  16. }
  17. // Set configs
  18. fn set_config(config: &str) {
  19. println!("cargo::rustc-cfg={config}");
  20. }
  21. fn set_arch_config(config: &str) {
  22. set_config(&format!("arch_{config}"));
  23. }
  24. fn set_arch_configs_x86() {
  25. set_arch_config("has_stacktrace");
  26. set_arch_config("has_shutdown");
  27. }
  28. fn set_arch_configs_riscv64() {
  29. set_arch_config("has_stacktrace");
  30. set_arch_config("has_shutdown");
  31. }
  32. fn set_arch_configs_loongarch64() {
  33. set_arch_config("has_shutdown");
  34. }
  35. fn set_arch_configs() {
  36. match std::env::var("CARGO_CFG_TARGET_ARCH").as_deref().unwrap() {
  37. "x86_64" => set_arch_configs_x86(),
  38. "riscv64" => set_arch_configs_riscv64(),
  39. "loongarch64" => set_arch_configs_loongarch64(),
  40. arch => panic!("Unsupported architecture: {}", arch),
  41. }
  42. }
  43. fn set_configs() {
  44. set_arch_configs();
  45. }
  46. fn main() -> Result<(), Box<dyn std::error::Error>> {
  47. define_configs();
  48. set_configs();
  49. println!("cargo:rustc-link-arg=-T{}", "link.x");
  50. if let Ok(extra_link_args) = std::env::var("DEP_EONIX_HAL_EXTRA_LINK_ARGS")
  51. {
  52. for arg in extra_link_args.split_whitespace() {
  53. println!("cargo:rustc-link-arg={}", arg);
  54. }
  55. }
  56. Ok(())
  57. }