From 0464da84c0158debc27b89a52b45c6eb91bb7d76 Mon Sep 17 00:00:00 2001 From: Brian Carroll Date: Sat, 5 Mar 2022 14:21:33 +0000 Subject: [PATCH] Rename CLI --backend to --target since that's what it has always meant --- Earthfile | 2 +- cli/src/lib.rs | 87 +++++++++++++++++------------------- cli/tests/cli_run.rs | 6 +-- examples/hello-web/README.md | 2 +- 4 files changed, 47 insertions(+), 50 deletions(-) diff --git a/Earthfile b/Earthfile index 9062be8ea8..d11c9d1b6d 100644 --- a/Earthfile +++ b/Earthfile @@ -93,7 +93,7 @@ test-rust: RUN --mount=type=cache,target=$SCCACHE_DIR \ repl_test/test_wasm.sh && sccache --show-stats # run i386 (32-bit linux) cli tests - RUN echo "4" | cargo run --locked --release --features="target-x86" -- --backend=x86_32 examples/benchmarks/NQueens.roc + RUN echo "4" | cargo run --locked --release --features="target-x86" -- --target=x86_32 examples/benchmarks/NQueens.roc RUN --mount=type=cache,target=$SCCACHE_DIR \ cargo test --locked --release --features with_sound --test cli_run i386 --features="i386-cli-run" && sccache --show-stats diff --git a/cli/src/lib.rs b/cli/src/lib.rs index b790552538..e154eeb83e 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -34,7 +34,7 @@ pub const FLAG_DEV: &str = "dev"; pub const FLAG_OPTIMIZE: &str = "optimize"; pub const FLAG_OPT_SIZE: &str = "opt-size"; pub const FLAG_LIB: &str = "lib"; -pub const FLAG_BACKEND: &str = "backend"; +pub const FLAG_TARGET: &str = "target"; pub const FLAG_TIME: &str = "time"; pub const FLAG_LINK: &str = "roc-linker"; pub const FLAG_PRECOMPILED: &str = "precompiled-host"; @@ -42,7 +42,6 @@ pub const FLAG_VALGRIND: &str = "valgrind"; pub const FLAG_CHECK: &str = "check"; pub const ROC_FILE: &str = "ROC_FILE"; pub const ROC_DIR: &str = "ROC_DIR"; -pub const BACKEND: &str = "BACKEND"; pub const DIRECTORY_OR_FILES: &str = "DIRECTORY_OR_FILES"; pub const ARGS_FOR_APP: &str = "ARGS_FOR_APP"; @@ -76,12 +75,11 @@ pub fn build_app<'a>() -> App<'a> { .required(false), ) .arg( - Arg::new(FLAG_BACKEND) - .long(FLAG_BACKEND) - .about("Choose a different backend") - // .requires(BACKEND) - .default_value(Backend::default().as_str()) - .possible_values(Backend::OPTIONS) + Arg::new(FLAG_TARGET) + .long(FLAG_TARGET) + .about("Choose a different target") + .default_value(Target::default().as_str()) + .possible_values(Target::OPTIONS) .required(false), ) .arg( @@ -212,12 +210,11 @@ pub fn build_app<'a>() -> App<'a> { .required(false), ) .arg( - Arg::new(FLAG_BACKEND) - .long(FLAG_BACKEND) - .about("Choose a different backend") - // .requires(BACKEND) - .default_value(Backend::default().as_str()) - .possible_values(Backend::OPTIONS) + Arg::new(FLAG_TARGET) + .long(FLAG_TARGET) + .about("Choose a different target") + .default_value(Target::default().as_str()) + .possible_values(Target::OPTIONS) .required(false), ) .arg( @@ -273,12 +270,12 @@ pub fn build(matches: &ArgMatches, config: BuildConfig) -> io::Result { use std::str::FromStr; use BuildConfig::*; - let backend = match matches.value_of(FLAG_BACKEND) { - Some(name) => Backend::from_str(name).unwrap(), - None => Backend::default(), + let target = match matches.value_of(FLAG_TARGET) { + Some(name) => Target::from_str(name).unwrap(), + None => Target::default(), }; - let target = backend.to_triple(); + let triple = target.to_triple(); let arena = Bump::new(); let filename = matches.value_of(ROC_FILE).unwrap(); @@ -306,10 +303,10 @@ pub fn build(matches: &ArgMatches, config: BuildConfig) -> io::Result { let surgically_link = matches.is_present(FLAG_LINK); let precompiled = matches.is_present(FLAG_PRECOMPILED); - if surgically_link && !roc_linker::supported(&link_type, &target) { + if surgically_link && !roc_linker::supported(&link_type, &triple) { panic!( "Link type, {:?}, with target, {}, not supported by roc linker", - link_type, target + link_type, triple ); } @@ -338,7 +335,7 @@ pub fn build(matches: &ArgMatches, config: BuildConfig) -> io::Result { let target_valgrind = matches.is_present(FLAG_VALGRIND); let res_binary_path = build_file( &arena, - &target, + &triple, src_dir, path, opt_level, @@ -377,7 +374,7 @@ pub fn build(matches: &ArgMatches, config: BuildConfig) -> io::Result { Ok(outcome.status_code()) } BuildAndRun { roc_file_arg_index } => { - let mut cmd = match target.architecture { + let mut cmd = match triple.architecture { Architecture::Wasm32 => { // If possible, report the generated executable name relative to the current dir. let generated_filename = binary_path @@ -398,7 +395,7 @@ pub fn build(matches: &ArgMatches, config: BuildConfig) -> io::Result { _ => Command::new(&binary_path), }; - if let Architecture::Wasm32 = target.architecture { + if let Architecture::Wasm32 = triple.architecture { cmd.arg(binary_path); } @@ -503,43 +500,43 @@ fn run_with_wasmer(_wasm_path: &std::path::Path, _args: &[String]) { println!("Running wasm files not support"); } -enum Backend { +enum Target { Host, X86_32, X86_64, Wasm32, } -impl Default for Backend { +impl Default for Target { fn default() -> Self { - Backend::Host + Target::Host } } -impl Backend { +impl Target { const fn as_str(&self) -> &'static str { match self { - Backend::Host => "host", - Backend::X86_32 => "x86_32", - Backend::X86_64 => "x86_64", - Backend::Wasm32 => "wasm32", + Target::Host => "host", + Target::X86_32 => "x86_32", + Target::X86_64 => "x86_64", + Target::Wasm32 => "wasm32", } } /// NOTE keep up to date! const OPTIONS: &'static [&'static str] = &[ - Backend::Host.as_str(), - Backend::X86_32.as_str(), - Backend::X86_64.as_str(), - Backend::Wasm32.as_str(), + Target::Host.as_str(), + Target::X86_32.as_str(), + Target::X86_64.as_str(), + Target::Wasm32.as_str(), ]; fn to_triple(&self) -> Triple { let mut triple = Triple::unknown(); match self { - Backend::Host => Triple::host(), - Backend::X86_32 => { + Target::Host => Triple::host(), + Target::X86_32 => { triple.architecture = Architecture::X86_32(X86_32Architecture::I386); triple.binary_format = BinaryFormat::Elf; @@ -548,13 +545,13 @@ impl Backend { triple } - Backend::X86_64 => { + Target::X86_64 => { triple.architecture = Architecture::X86_64; triple.binary_format = BinaryFormat::Elf; triple } - Backend::Wasm32 => { + Target::Wasm32 => { triple.architecture = Architecture::Wasm32; triple.binary_format = BinaryFormat::Wasm; @@ -564,21 +561,21 @@ impl Backend { } } -impl std::fmt::Display for Backend { +impl std::fmt::Display for Target { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { write!(f, "{}", self.as_str()) } } -impl std::str::FromStr for Backend { +impl std::str::FromStr for Target { type Err = (); fn from_str(s: &str) -> Result { match s { - "host" => Ok(Backend::Host), - "x86_32" => Ok(Backend::X86_32), - "x86_64" => Ok(Backend::X86_64), - "wasm32" => Ok(Backend::Wasm32), + "host" => Ok(Target::Host), + "x86_32" => Ok(Target::X86_32), + "x86_64" => Ok(Target::X86_64), + "wasm32" => Ok(Target::Wasm32), _ => Err(()), } } diff --git a/cli/tests/cli_run.rs b/cli/tests/cli_run.rs index 9e7aee0d8b..164bdd86ce 100644 --- a/cli/tests/cli_run.rs +++ b/cli/tests/cli_run.rs @@ -194,7 +194,7 @@ mod cli_run { ) { assert_eq!(input_file, None, "Wasm does not support input files"); let mut flags = flags.to_vec(); - flags.push("--backend=wasm32"); + flags.push("--target=wasm32"); let compile_out = run_roc(&[&["build", file.to_str().unwrap()], flags.as_slice()].concat()); if !compile_out.stderr.is_empty() { @@ -565,7 +565,7 @@ mod cli_run { &file_name, benchmark.stdin, benchmark.executable_filename, - &["--backend=x86_32"], + &["--target=x86_32"], benchmark.input_file.and_then(|file| Some(examples_dir("benchmarks").join(file))), benchmark.expected_ending, benchmark.use_valgrind, @@ -575,7 +575,7 @@ mod cli_run { &file_name, benchmark.stdin, benchmark.executable_filename, - &["--backend=x86_32", "--optimize"], + &["--target=x86_32", "--optimize"], benchmark.input_file.and_then(|file| Some(examples_dir("benchmarks").join(file))), benchmark.expected_ending, benchmark.use_valgrind, diff --git a/examples/hello-web/README.md b/examples/hello-web/README.md index f0beccdb6b..4401c8d367 100644 --- a/examples/hello-web/README.md +++ b/examples/hello-web/README.md @@ -3,7 +3,7 @@ To run, go to the project home directory and run: ```bash -$ cargo run -- build --backend=wasm32 examples/hello-web/Hello.roc +$ cargo run -- build --target=wasm32 examples/hello-web/Hello.roc ``` Then `cd` into the example directory and run any web server that can handle WebAssembly.