gaia_assembler/backends/
mod.rs1pub mod jvm;
6pub mod msil;
7pub mod pe;
8pub mod wasi;
9
10pub use self::{jvm::JvmBackend, msil::ClrBackend, pe::PeBackend, wasi::WasiBackend};
12
13use crate::config::{GaiaConfig, GaiaSettings};
14use gaia_types::{
15 helpers::{AbiCompatible, ApiCompatible, Architecture, CompilationTarget},
16 GaiaError, Result,
17};
18use std::collections::HashMap;
19use crate::program::GaiaProgram;
20
21
22pub trait Backend {
24 fn name(&self) -> &'static str;
26
27 fn primary_target(&self) -> CompilationTarget;
29
30 fn match_score(&self, target: &CompilationTarget) -> f32;
33
34 fn generate(&self, program: &GaiaProgram, config: &GaiaConfig) -> Result<GeneratedFiles>;
36}
37
38pub struct GeneratedFiles {
39 pub files: HashMap<String, Vec<u8>>,
40 pub diagnostics: Vec<GaiaError>,
41}