multiversx_sc_meta_lib/tools/
build_target.rs1use std::process::Command;
2
3use rustc_version::{version_meta, Version};
4
5pub const WASM32_TARGET: &str = "wasm32-unknown-unknown";
6pub const WASM32V1_TARGET: &str = "wasm32v1-none";
7const FIRST_RUSTC_VERSION_WITH_WASM32V1_TARGET: Version = Version::new(1, 85, 0);
8
9pub fn default_target() -> &'static str {
13 if is_wasm32v1_available() {
14 WASM32V1_TARGET
15 } else {
16 WASM32_TARGET
17 }
18}
19
20pub fn is_wasm32v1_available() -> bool {
21 let Ok(version) = version_meta() else {
22 return false;
23 };
24
25 version.semver >= FIRST_RUSTC_VERSION_WITH_WASM32V1_TARGET
26}
27
28pub fn install_target(target_name: &str) {
29 let cmd = Command::new("rustup")
30 .args(["target", "add", target_name])
31 .status()
32 .expect("failed to execute `rustup`");
33
34 assert!(cmd.success(), "failed to install {target_name} target");
35
36 println!("{target_name} target installed successfully");
37}