build.rs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. fn main() {
  2. // Warn the user if they enabled the launch feature without any renderers
  3. if feature_enabled("launch") {
  4. if feature_enabled("third-party-renderer") {
  5. return;
  6. }
  7. let liveview_renderers = ["liveview", "axum"];
  8. let fullstack_renderers = ["axum"];
  9. let client_renderers = ["desktop", "mobile", "web", "tui"];
  10. let client_renderer_selected = client_renderers
  11. .iter()
  12. .any(|renderer| feature_enabled(renderer));
  13. if feature_enabled("fullstack") {
  14. let server_fullstack_enabled = fullstack_renderers
  15. .iter()
  16. .any(|renderer| feature_enabled(renderer));
  17. if !server_fullstack_enabled && !client_renderer_selected {
  18. println!("cargo:warning=You have enabled the launch and fullstack features, but have not enabled any renderers. The application will not be able to launch. Try enabling one of the following renderers: {} for the server or one of the following renderers: {} for the client.", fullstack_renderers.join(", "), client_renderers.join(", "));
  19. }
  20. }
  21. if feature_enabled("liveview") {
  22. let server_selected = liveview_renderers
  23. .iter()
  24. .any(|renderer| feature_enabled(renderer));
  25. if !server_selected {
  26. println!("cargo:warning=You have enabled the launch and liveview features, but have not enabled any liveview renderers. The application will not be able to launch. Try enabling one of the following renderers: {}", liveview_renderers.join(", "));
  27. }
  28. }
  29. if !client_renderer_selected {
  30. println!("cargo:warning=You have enabled the launch feature, but have not enabled any client renderers. The application will not be able to launch. Try enabling one of the following renderers: {}, fullstack or liveview", client_renderers.join(", "));
  31. }
  32. }
  33. }
  34. fn feature_enabled(feature: &str) -> bool {
  35. let feature = "CARGO_FEATURE_".to_owned() + &feature.to_uppercase().replace('-', "_");
  36. println!("cargo:rerun-if-env-changed={}", feature);
  37. std::env::var(feature).is_ok()
  38. }