Skip to content

Instantly share code, notes, and snippets.

@kevinw
Created June 12, 2018 17:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kevinw/dcbd388fc99c2cd790cfa511541f9dc4 to your computer and use it in GitHub Desktop.
Save kevinw/dcbd388fc99c2cd790cfa511541f9dc4 to your computer and use it in GitHub Desktop.
fn compile_exe() -> Result<(), failure::Error> {
use cretonne::prelude::Configurable;
use cretonne_native;
use cretonne_faerie::{FaerieTrapCollection, FaerieBuilder, FaerieBackend};
use cretonne_codegen::settings;
use cretonne_module::Module;
use target_lexicon::BinaryFormat;
let (mut flag_builder, isa_builder) = cretonne_native::builders().unwrap_or_else(|_| {
panic!("host machine is not a supported target");
});
flag_builder.set("is_pic", "true").unwrap();
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
let builder = FaerieBuilder::new(
isa, String::from("test_faerie_name"), BinaryFormat::host(),
FaerieTrapCollection::Disabled, FaerieBuilder::default_libcall_names()).unwrap();
let module:Module<FaerieBackend> = Module::new(builder);
// DO STUFF
let product = module.finish();
let filename = "test-exe";
let file = std::fs::File::create(filename)?;
product.write(file)?;
println!("wrote {} to {}", product.name(), filename);
Ok(())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment