#![cfg(any(target_family = "unix", target_family = "windows"))]
#![cfg(not(target_os = "android"))]
#![cfg(not(target_os = "ios"))]
use core::ffi::{c_char, c_int};
#[unsafe(no_mangle)]
pub extern "C" fn start_engine(argc: c_int, argv: *const *const c_char) -> c_int {
use crate::{build, setup};
#[cfg(feature = "logging-subscriber")]
setup::setup_logger();
utils::resources::store_embedded_resources(crate::resources::get_embedded_resources());
build::license_compliance_helper();
let args: Option<Vec<String>>;
unsafe {
args = utils::args::c_abi::parse_args_from_c(argc, argv.cast::<*const *const c_char>());
}
if let Some(args) = args {
utils::args::set_parsed_args(args);
}
if setup::get_args().version {
build::print_version();
build::print_build_info();
build::print_dependencies();
println!();
build::print_license();
return 0;
}
setup::process_args();
debug!("Launched as library...");
build::log_build_info();
match setup::start() {
Err(error) => {
error!("{:?}", error);
1
}
_ => 0,
}
}