build.rs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #[cfg(feature = "tv")]
  2. use cc::Build;
  3. #[cfg(feature = "tv")]
  4. use pkg_config::Config;
  5. #[cfg(feature = "tv")]
  6. use std::env;
  7. #[cfg(feature = "tv")]
  8. use std::process::Command;
  9. fn main() {
  10. println!("cargo:rerun-if-changed=build.rs");
  11. #[cfg(feature = "tv")]
  12. {
  13. println!("cargo:rerun-if-changed=extern/ui.cpp");
  14. println!("cargo:rerun-if-changed=extern/tvision");
  15. Command::new("cmake")
  16. .args([
  17. "extern/tvision",
  18. "-B",
  19. "extern/tvision/build",
  20. "-DCMAKE_C_FLAGS=-fPIC",
  21. "-DCMAKE_CXX_FLAGS=-fPIC",
  22. "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
  23. "-DTV_BUILD_EXAMPLES=off",
  24. ])
  25. .status()
  26. .unwrap();
  27. let jobs = env::var("NUM_JOBS").unwrap();
  28. Command::new("cmake")
  29. .args(["--build", "extern/tvision/build", "--parallel", &jobs])
  30. .status()
  31. .unwrap();
  32. println!("cargo:rustc-link-search=extern/tvision/build");
  33. Build::new()
  34. .cpp(true)
  35. .file("extern/ui.cpp")
  36. .flag("-Wno-unknown-pragmas")
  37. .flag("-Wno-reorder")
  38. .flag("-Wno-extra")
  39. .include("extern/tvision/include")
  40. .compile("libui.a");
  41. println!("cargo:rustc-link-lib=tvision");
  42. println!("cargo:rustc-link-lib=gpm");
  43. Config::new()
  44. .atleast_version("5.9")
  45. .statik(true)
  46. .probe("ncurses")
  47. .unwrap();
  48. }
  49. }