diff --git a/README.md b/README.md index bb852f51280abc407722b93196946cd38c401b1a..3d0c8050a5a38bd9309dc6ba9f563a847904c60d 100644 --- a/README.md +++ b/README.md @@ -32,17 +32,13 @@ Here's an example build.rs script: extern crate cbindgen; use std::env; -use cbindgen::{Config, Library}; fn main() { - let root = env::var("CARGO_MANIFEST_DIR").unwrap(); - let config = Config::from_root_or_default(&root); - - Library::load_crate(Path::new(root), - "CRATE_NAME", - &config) - .generate().unwrap() - .write_to_file("bindings.h"); + let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); + + cbindgen::generate(crate_dir) + .unwrap() + .write_to_file("bindings.h"); } ``` diff --git a/src/bindgen/mod.rs b/src/bindgen/mod.rs index decb4e30e87774dd3d95e21197e8122c758ad4f2..a7b05d66f564edf4812fc7a9ebec68c2f2e04730 100644 --- a/src/bindgen/mod.rs +++ b/src/bindgen/mod.rs @@ -51,5 +51,5 @@ mod writer; pub use self::cargo::*; pub use self::config::*; -pub use self::library::Library; +pub use self::library::{GeneratedBindings, Library}; pub use self::cargo_toml::manifest; diff --git a/src/lib.rs b/src/lib.rs index 4b557405b384799ab3896cb2bedff4bfefffcc3c..6881b97206db562defd3aa2b499f2c3933be9f32 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,3 +14,19 @@ extern crate toml; mod bindgen; pub use bindgen::*; + +use std::path::Path; + +/// A utility function for build scripts to generate bindings for a crate, using +/// a `cbindgen.toml` if it exists. +pub fn generate(crate_dir: &str) -> Result<GeneratedBindings, String> { + let crate_dir = Path::new(crate_dir); + Library::load_crate(Cargo::load(crate_dir, None)?, + &Config::from_root_or_default(crate_dir))?.generate() +} + +/// A utility function for build scripts to generate bindings for a crate with a +/// custom config. +pub fn generate_config(crate_dir: &str, config: &Config) -> Result<GeneratedBindings, String> { + Library::load_crate(Cargo::load(Path::new(crate_dir), None)?, config)?.generate() +}