summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2016-12-11 09:46:49 +0100
committerEmilio Cobos Álvarez <emilio@crisal.io>2016-12-11 09:59:47 +0100
commitaa05fdf30b0623d7d3622c7afccccbb3209629f5 (patch)
treec73876244d372435ce1707b63a7a868c23ca7f84
parent09c66d1ddf206e0c32732d89774159bec0888a8b (diff)
options: Ensure to pass the clang header last to clang.
-rw-r--r--libbindgen/src/lib.rs10
-rw-r--r--libbindgen/tests/expectations/tests/dash_language.rs12
-rw-r--r--libbindgen/tests/headers/dash_language.h6
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;
+};