use crate::{
backends::{Backend, GeneratedFiles},
config::GaiaConfig,
program::GaiaModule,
};
use gaia_types::{
helpers::{AbiCompatible, ApiCompatible, Architecture, ArtifactType, CompilationTarget},
GaiaError, Result,
};
use std::collections::HashMap;
#[derive(Default)]
pub struct X86Backend {}
impl Backend for X86Backend {
fn name(&self) -> &'static str {
"Windows (Native x86)"
}
fn primary_target(&self) -> CompilationTarget {
CompilationTarget { build: Architecture::X86, host: AbiCompatible::PE, target: ApiCompatible::MicrosoftVisualC }
}
fn artifact_type(&self) -> ArtifactType {
ArtifactType::Executable
}
fn match_score(&self, target: &CompilationTarget) -> f32 {
if target.build == Architecture::X86 && target.host == AbiCompatible::PE {
if target.target == ApiCompatible::MicrosoftVisualC {
return 100.0;
}
return 80.0;
}
0.0
}
fn generate(&self, _program: &GaiaModule, config: &GaiaConfig) -> Result<GeneratedFiles> {
Err(GaiaError::custom_error("x86 (32-bit) backend not yet fully implemented"))
}
}