use kusabira::KusabiraError;
use kusabira::builder::{Config as MldBuilderConfig};
use kusabira::hooks::cc::warnings_into_errors;
use std::convert::From;
use std::fmt::{Display, Error as FmtError, Formatter};
use system_deps::{Config as SystemDepsConfig, Error as SystemDepsError};
fn main() -> Result<(), MainError>
{
MldBuilderConfig::default()
.lib_name("hello_world_c")
.input_file("src/hello_world_export_to_rust.h")
.add_input_files([
"src/hello_world_c_*.c",
"src/unixcw_libcw_demo.c"]
.into_iter())
.cc_build_hook(warnings_into_errors)
.add_cc_build_hook(|build| {build.std("c11")})
.bindgen_builder_hook(|builder| {builder.generate_block(true)})
.add_bindgen_builder_hook(|builder| {builder.generate_comments(true)})
.add_bindgen_builder_hook(|builder| {builder.newtype_enum("cw_return_values")})
.build()?;
SystemDepsConfig::new().probe()?;
Ok(())
}
#[derive(Debug)]
enum MainError
{
KusabiraError(KusabiraError),
SystemDepsError(SystemDepsError),
}
impl From<KusabiraError> for MainError
{
fn from(value: KusabiraError) -> Self
{
MainError::KusabiraError(value)
}
}
impl From<SystemDepsError> for MainError
{
fn from(value: SystemDepsError) -> Self
{
MainError::SystemDepsError(value)
}
}
impl Display for MainError
{
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), FmtError>
{
match self {
MainError::KusabiraError(err) => write!(f, "MainError: {}", err),
MainError::SystemDepsError(err) => write!(f, "MainError: {}", err),
}
}
}