summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-09-08 00:40:00 -0500
committerGitHub <noreply@github.com>2016-09-08 00:40:00 -0500
commitbbd6b2c9919e02642a8874e5ceb2ba3b5c76adec (patch)
tree2b37b60bce998847536199a8e23aafdee3de04f7
parent89e272581dae736c0751aecef29593ab21340ae6 (diff)
parent120dacb84e7db568560e381aeec931aa13c680f8 (diff)
Auto merge of #54 - vvuk:master, r=emilio
Skip -isystem stuff if --target is specified, and don't strip leading _ on Windows The -isystem stuff fixes issue #53. Stripping leading _ on Windows is weird; it needs to not be stripped on MSVC (leading @), but on gcc at one point it needed to be. But now it no longer does. I don't know. 'cargo test' succeeds with mozjs bindings generated with these fixes.
-rwxr-xr-xsrc/bin/bindgen.rs15
-rw-r--r--src/parser.rs9
2 files changed, 13 insertions, 11 deletions
diff --git a/src/bin/bindgen.rs b/src/bin/bindgen.rs
index 4ea2cd91..8c515131 100755
--- a/src/bin/bindgen.rs
+++ b/src/bin/bindgen.rs
@@ -199,11 +199,16 @@ pub fn main() {
bind_args.push("--".to_owned());
}
- // TODO: distinguish C and C++ paths? C++'s should be enough, I guess.
- for path in clang.cpp_search_paths.into_iter() {
- if let Ok(path) = path.into_os_string().into_string() {
- bind_args.push("-isystem".to_owned());
- bind_args.push(path);
+ // If --target is specified, assume caller knows what they're doing and don't mess with
+ // include paths for them
+ let has_target_arg = bind_args.iter().rposition(|arg| arg.starts_with("--target")).is_some();
+ if !has_target_arg {
+ // TODO: distinguish C and C++ paths? C++'s should be enough, I guess.
+ for path in clang.cpp_search_paths.into_iter() {
+ if let Ok(path) = path.into_os_string().into_string() {
+ bind_args.push("-isystem".to_owned());
+ bind_args.push(path);
+ }
}
}
}
diff --git a/src/parser.rs b/src/parser.rs
index d8227f3a..0e531420 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -68,13 +68,10 @@ impl<'a> ClangParserCtx<'a> {
}
}
-fn cursor_link_name(ctx: &mut ClangParserCtx, cursor: &Cursor) -> String {
- let mut mangling = cursor.mangling();
-
+fn cursor_link_name(_: &mut ClangParserCtx, cursor: &Cursor) -> String {
// Try to undo backend linkage munging (prepended _, generally)
- if cfg!(target_os = "macos") ||
- (cfg!(target_os = "windows") && !ctx.options.msvc_mangling)
- {
+ let mut mangling = cursor.mangling();
+ if cfg!(target_os = "macos") {
mangling.remove(0);
}
mangling