build.rs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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/app.cpp");
  15. println!("cargo:rerun-if-changed=extern/itemview.cpp");
  16. println!("cargo:rerun-if-changed=extern/itemwindow.cpp");
  17. println!("cargo:rerun-if-changed=extern/tvision");
  18. Command::new("cmake")
  19. .args([
  20. "extern/tvision",
  21. "-B",
  22. "extern/tvision/build",
  23. "-DCMAKE_C_FLAGS=-fPIC",
  24. "-DCMAKE_CXX_FLAGS=-fPIC",
  25. "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
  26. "-DTV_BUILD_EXAMPLES=off",
  27. ])
  28. .status()
  29. .unwrap();
  30. let jobs = env::var("NUM_JOBS").unwrap();
  31. Command::new("cmake")
  32. .args(["--build", "extern/tvision/build", "--parallel", &jobs])
  33. .status()
  34. .unwrap();
  35. println!("cargo:rustc-link-search=extern/tvision/build");
  36. Build::new()
  37. .cpp(true)
  38. .file("extern/ui.cpp")
  39. .file("extern/itemview.cpp")
  40. .file("extern/itemwindow.cpp")
  41. .file("extern/app.cpp")
  42. .flag("-Wno-unknown-pragmas")
  43. .flag("-Wno-reorder")
  44. .flag("-Wno-extra")
  45. .include("extern/tvision/include")
  46. .compile("libui.a");
  47. println!("cargo:rustc-link-lib=tvision");
  48. println!("cargo:rustc-link-lib=gpm");
  49. Config::new()
  50. .atleast_version("5.9")
  51. .statik(true)
  52. .probe("ncurses")
  53. .unwrap();
  54. }
  55. }