build.rs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. fn main() {
  2. // Warn the user if they enabled the launch feature without any renderers
  3. if feature_enabled("launch") {
  4. let liveview_renderers = [
  5. "liveview",
  6. "axum",
  7. "salvo",
  8. "warp",
  9. "rocket",
  10. ];
  11. let fullstack_renderers = [
  12. "axum",
  13. "salvo",
  14. "warp",
  15. ];
  16. let client_renderers = [
  17. "desktop",
  18. "mobile",
  19. "web",
  20. "tui",
  21. ];
  22. let client_renderer_selected = client_renderers.iter().any(|renderer| feature_enabled(renderer));
  23. if feature_enabled("fullstack") {
  24. let server_fullstack_enabled = fullstack_renderers.iter().any(|renderer| feature_enabled(renderer));
  25. if !server_fullstack_enabled && !client_renderer_selected {
  26. 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(", "));
  27. }
  28. }
  29. if feature_enabled("liveview") {
  30. let server_selected = liveview_renderers.iter().any(|renderer| feature_enabled(renderer));
  31. if !server_selected {
  32. 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(", "));
  33. }
  34. }
  35. if !client_renderer_selected {
  36. 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(", "));
  37. }
  38. }
  39. }
  40. fn feature_enabled(feature: &str) -> bool {
  41. let feature = "CARGO_FEATURE_".to_owned() + &feature.to_uppercase().replace("-", "_");
  42. println!("cargo:rerun-if-env-changed={}", feature);
  43. std::env::var(feature).is_ok()
  44. }