diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2016-12-11 09:46:49 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2016-12-11 09:59:47 +0100 |
commit | aa05fdf30b0623d7d3622c7afccccbb3209629f5 (patch) | |
tree | c73876244d372435ce1707b63a7a868c23ca7f84 | |
parent | 09c66d1ddf206e0c32732d89774159bec0888a8b (diff) |
options: Ensure to pass the clang header last to clang.
-rw-r--r-- | libbindgen/src/lib.rs | 10 | ||||
-rw-r--r-- | libbindgen/tests/expectations/tests/dash_language.rs | 12 | ||||
-rw-r--r-- | libbindgen/tests/headers/dash_language.h | 6 |
3 files changed, 25 insertions, 3 deletions
diff --git a/libbindgen/src/lib.rs b/libbindgen/src/lib.rs index 3ced6dab..1acfd143 100644 --- a/libbindgen/src/lib.rs +++ b/libbindgen/src/lib.rs @@ -168,8 +168,8 @@ impl Builder { /// Set the input C/C++ header. pub fn header<T: Into<String>>(mut self, header: T) -> Builder { let header = header.into(); - self.options.input_header = Some(header.clone()); - self.clang_arg(header) + self.options.input_header = Some(header); + self } /// Generate a C/C++ file that includes the header and has dummy uses of @@ -504,11 +504,15 @@ impl<'ctx> Bindings<'ctx> { /// /// Deprecated - use a `Builder` instead #[deprecated] - pub fn generate(options: BindgenOptions, + pub fn generate(mut options: BindgenOptions, span: Option<Span>) -> Result<Bindings<'ctx>, ()> { let span = span.unwrap_or(DUMMY_SP); + if let Some(h) = options.input_header.as_ref() { + options.clang_args.push(h.clone()) + } + let mut context = BindgenContext::new(options); try!(parse(&mut context)); diff --git a/libbindgen/tests/expectations/tests/dash_language.rs b/libbindgen/tests/expectations/tests/dash_language.rs new file mode 100644 index 00000000..148f9c32 --- /dev/null +++ b/libbindgen/tests/expectations/tests/dash_language.rs @@ -0,0 +1,12 @@ +/* automatically generated by rust-bindgen */ + + +#![allow(non_snake_case)] + + +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Foo<T> { + pub bar: ::std::os::raw::c_int, + pub _phantom_0: ::std::marker::PhantomData<T>, +} diff --git a/libbindgen/tests/headers/dash_language.h b/libbindgen/tests/headers/dash_language.h new file mode 100644 index 00000000..4c8bb58d --- /dev/null +++ b/libbindgen/tests/headers/dash_language.h @@ -0,0 +1,6 @@ +// bindgen-flags: -- -x c++ --std=c++11 + +template<typename T> +struct Foo { + int bar; +}; |