| #[macro_use] |
| extern crate log; |
| |
| mod arm; |
| mod common; |
| |
| use arm::ArmArchitectureTest; |
| use common::SupportedArchitectureTest; |
| use common::cli::{Cli, ProcessedCli}; |
| |
| fn main() { |
| pretty_env_logger::init(); |
| let args: Cli = clap::Parser::parse(); |
| let processed_cli_options = ProcessedCli::new(args); |
| |
| let test_environment_result: Option<Box<dyn SupportedArchitectureTest>> = |
| match processed_cli_options.target.as_str() { |
| "aarch64-unknown-linux-gnu" |
| | "armv7-unknown-linux-gnueabihf" |
| | "aarch64_be-unknown-linux-gnu" => { |
| Some(ArmArchitectureTest::create(processed_cli_options)) |
| } |
| |
| _ => None, |
| }; |
| |
| if test_environment_result.is_none() { |
| std::process::exit(0); |
| } |
| |
| let test_environment = test_environment_result.unwrap(); |
| |
| info!("building C binaries"); |
| if !test_environment.build_c_file() { |
| std::process::exit(2); |
| } |
| info!("building Rust binaries"); |
| if !test_environment.build_rust_file() { |
| std::process::exit(3); |
| } |
| info!("comaparing outputs"); |
| if !test_environment.compare_outputs() { |
| std::process::exit(1); |
| } |
| } |