diff options
author | Nicklas Boman <smurfd@gmail.com> | 2021-08-04 23:32:20 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2022-02-18 20:29:24 +0100 |
commit | f34e4103f304500c96d332f5cecc9067c980d0f9 (patch) | |
tree | 96045076506578016269b8c00ff4c6cf3bf6b152 | |
parent | cd78b6540789b22b79c1058fec4fdfe3449ea50e (diff) |
BINDGEN_EXTRA_CLANG_ARGS for dump_preprocessed_input.
Fixes #1723
-rw-r--r-- | src/lib.rs | 29 |
1 files changed, 19 insertions, 10 deletions
@@ -232,6 +232,20 @@ pub fn builder() -> Builder { Default::default() } +fn get_extra_clang_args() -> Vec<String> { + // Add any extra arguments from the environment to the clang command line. + let extra_clang_args = + match get_target_dependent_env_var("BINDGEN_EXTRA_CLANG_ARGS") { + None => return vec![], + Some(s) => s, + }; + // Try to parse it with shell quoting. If we fail, make it one single big argument. + if let Some(strings) = shlex::split(&extra_clang_args) { + return strings; + } + vec![extra_clang_args] +} + impl Builder { /// Generates the command line flags use for creating `Builder`. pub fn command_line_flags(&self) -> Vec<String> { @@ -1465,16 +1479,7 @@ impl Builder { /// Generate the Rust bindings using the options built up thus far. pub fn generate(mut self) -> Result<Bindings, BindgenError> { // Add any extra arguments from the environment to the clang command line. - if let Some(extra_clang_args) = - get_target_dependent_env_var("BINDGEN_EXTRA_CLANG_ARGS") - { - // Try to parse it with shell quoting. If we fail, make it one single big argument. - if let Some(strings) = shlex::split(&extra_clang_args) { - self.options.clang_args.extend(strings); - } else { - self.options.clang_args.push(extra_clang_args); - }; - } + self.options.clang_args.extend(get_extra_clang_args()); // Transform input headers to arguments on the clang command line. self.options.input_header = self.input_headers.pop(); @@ -1561,6 +1566,10 @@ impl Builder { cmd.arg(a); } + for a in get_extra_clang_args() { + cmd.arg(a); + } + let mut child = cmd.spawn()?; let mut preprocessed = child.stdout.take().unwrap(); |