| 1 | /* This Source Code Form is subject to the terms of the Mozilla Public |
| 2 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 | |
| 5 | #[macro_use ] |
| 6 | extern crate log; |
| 7 | extern crate proc_macro2; |
| 8 | #[macro_use ] |
| 9 | extern crate serde; |
| 10 | extern crate serde_json; |
| 11 | #[macro_use ] |
| 12 | extern crate quote; |
| 13 | #[macro_use ] |
| 14 | extern crate syn; |
| 15 | extern crate toml; |
| 16 | |
| 17 | mod bindgen; |
| 18 | |
| 19 | pub use crate::bindgen::*; |
| 20 | |
| 21 | use std::path::Path; |
| 22 | |
| 23 | /// A utility function for build scripts to generate bindings for a crate, using |
| 24 | /// a `cbindgen.toml` if it exists. |
| 25 | pub fn generate<P: AsRef<Path>>(crate_dir: P) -> Result<Bindings, Error> { |
| 26 | let config: Config = Config::from_root_or_default(root:crate_dir.as_ref()); |
| 27 | |
| 28 | generate_with_config(crate_dir, config) |
| 29 | } |
| 30 | |
| 31 | /// A utility function for build scripts to generate bindings for a crate with a |
| 32 | /// custom config. |
| 33 | pub fn generate_with_config<P: AsRef<Path>>( |
| 34 | crate_dir: P, |
| 35 | config: Config, |
| 36 | ) -> Result<Bindings, Error> { |
| 37 | BuilderBuilder::new() |
| 38 | .with_config(config) |
| 39 | .with_crate(lib_dir:crate_dir) |
| 40 | .generate() |
| 41 | } |
| 42 | |