build.rs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. use std::{env, path::PathBuf};
  2. fn main() {
  3. let tauri_path = PathBuf::from("../../../ui");
  4. let mut build = cc::Build::new();
  5. build
  6. .include(&tauri_path)
  7. .file("tauri.c")
  8. .flag_if_supported("-std=c11")
  9. .flag_if_supported("-w");
  10. if env::var("DEBUG").is_err() {
  11. build.define("NDEBUG", None);
  12. } else {
  13. build.define("DEBUG", None);
  14. }
  15. let target = env::var("TARGET").unwrap();
  16. if target.contains("windows") {
  17. build.define("WEBVIEW_WINAPI", None);
  18. for &lib in &["ole32", "comctl32", "oleaut32", "uuid", "gdi32"] {
  19. println!("cargo:rustc-link-lib={}", lib);
  20. }
  21. } else if target.contains("linux") || target.contains("bsd") {
  22. let webkit = pkg_config::Config::new()
  23. .atleast_version("2.8")
  24. .probe("webkit2gtk-4.0")
  25. .unwrap();
  26. for path in webkit.include_paths {
  27. build.include(path);
  28. }
  29. build.define("WEBVIEW_GTK", None);
  30. } else if target.contains("apple") {
  31. build
  32. .define("WEBVIEW_COCOA", None)
  33. .flag("-x")
  34. .flag("objective-c");
  35. println!("cargo:rustc-link-lib=framework=Cocoa");
  36. println!("cargo:rustc-link-lib=framework=WebKit");
  37. } else {
  38. panic!("unsupported target");
  39. }
  40. build.compile("tauri");
  41. }