build.rs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. .include("extern/tvision/include")
  39. .compile("libui.a");
  40. println!("cargo:rustc-link-lib=tvision");
  41. println!("cargo:rustc-link-lib=gpm");
  42. Config::new()
  43. .atleast_version("5.9")
  44. .statik(true)
  45. .probe("ncurses")
  46. .unwrap();
  47. }
  48. }