summaryrefslogtreecommitdiff
path: root/src/options.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/options.rs')
-rw-r--r--src/options.rs20
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();
}