build.rs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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", "server"];
  8. let fullstack_renderers = ["server"];
  9. let client_renderers = ["desktop", "mobile", "web"];
  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. if feature_enabled("axum") {
  34. println!("cargo:warning=The axum feature has been renamed to server and will be removed in a future release. Please update your code to use server feature instead.");
  35. }
  36. }
  37. fn feature_enabled(feature: &str) -> bool {
  38. let feature = "CARGO_FEATURE_".to_owned() + &feature.to_uppercase().replace('-', "_");
  39. println!("cargo:rerun-if-env-changed={}", feature);
  40. std::env::var(feature).is_ok()
  41. }