build.rs 1.2 KB

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