diff options
Diffstat (limited to 'src/options.rs')
-rw-r--r-- | src/options.rs | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/options.rs b/src/options.rs index f2ed5494..e2e1b277 100644 --- a/src/options.rs +++ b/src/options.rs @@ -1,7 +1,9 @@ -use bindgen::{Builder, CodegenConfig, builder}; +use bindgen::{Builder, CodegenConfig, RUST_TARGET_STRINGS, RustTarget, builder}; use clap::{App, Arg}; +// use super::features::RUST_TARGET_STRINGS; use std::fs::File; use std::io::{self, Error, ErrorKind}; +use std::str::FromStr; /// Construct a new [`Builder`](./struct.Builder.html) from command line flags. pub fn builder_from_flags<I> @@ -9,6 +11,10 @@ pub fn builder_from_flags<I> -> Result<(Builder, Box<io::Write>, bool), io::Error> where I: Iterator<Item = String>, { + let rust_target_help = format!( + "Version of the Rust compiler to target. Valid options are: {:?}.", + RUST_TARGET_STRINGS); + let matches = App::new("bindgen") .version(env!("CARGO_PKG_VERSION")) .about("Generates Rust bindings from C/C++ headers.") @@ -161,6 +167,10 @@ pub fn builder_from_flags<I> .takes_value(true) .multiple(true) .number_of_values(1), + Arg::with_name("rust-target") + .long("rust-target") + .help(&rust_target_help) + .takes_value(true), Arg::with_name("static") .long("static-link") .help("Link to static library.") @@ -226,6 +236,10 @@ pub fn builder_from_flags<I> return Err(Error::new(ErrorKind::Other, "Header not found")); } + if let Some(rust_target) = matches.value_of("rust-target") { + builder = builder.rust_target(RustTarget::from_str(rust_target)?); + } + if let Some(bitfields) = matches.values_of("bitfield-enum") { for regex in bitfields { builder = builder.bitfield_enum(regex); @@ -337,10 +351,6 @@ pub fn builder_from_flags<I> builder = builder.ignore_methods(); } - if matches.is_present("unstable-rust") { - builder = builder.unstable_rust(true); - } - if matches.is_present("no-convert-floats") { builder = builder.no_convert_floats(); } |