build.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. use std::{env, path::PathBuf};
  2. fn main() -> Result<(), Box<dyn std::error::Error>> {
  3. println!("cargo:rerun-if-changed=build.rs");
  4. let triple = &env::var("TARGET")?;
  5. let mut target = triple.split("-");
  6. let arch = target.next().unwrap_or("x86_64");
  7. target.next();
  8. let os = target.next().unwrap_or("linux");
  9. let search_paths = match arch {
  10. "i686" => &[".", "bin/", "bin/linux32/", "garrysmod/bin/"][..],
  11. "x86_64" => &[".", "bin/linux64/", "linux64"][..],
  12. _ => &[][..],
  13. };
  14. for search_path in search_paths {
  15. println!("cargo:rustc-link-arg=-Wl,-rpath,{}", search_path);
  16. println!("cargo:warning={:?}", search_path);
  17. }
  18. let mut link_search_path = PathBuf::from(&env::var("CARGO_MANIFEST_DIR")?);
  19. link_search_path.push("lib");
  20. link_search_path.push(arch);
  21. link_search_path.push(os);
  22. println!("cargo:warning={:?}", &link_search_path);
  23. if !link_search_path.exists() {
  24. panic!("Unsupported platform");
  25. }
  26. println!(
  27. "cargo:rustc-link-search=native={}",
  28. link_search_path.to_str().expect("wtf?")
  29. );
  30. Ok(())
  31. }