From c39c47c2e5a3839ab57dec0d585b7e6af60416f6 Mon Sep 17 00:00:00 2001 From: Thomas Vermeilh Date: Wed, 14 Apr 2021 15:17:02 +0200 Subject: Add env var EXTRA_CLANG_ARGS_ Closes #2009 --- src/lib.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 85d55599..418811e3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1405,7 +1405,7 @@ impl Builder { pub fn generate(mut self) -> Result { // Add any extra arguments from the environment to the clang command line. if let Some(extra_clang_args) = - env::var("BINDGEN_EXTRA_CLANG_ARGS").ok() + 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) { @@ -2557,6 +2557,21 @@ pub fn clang_version() -> ClangVersion { } } +/// Looks for the env var `var_${TARGET}`, and falls back to just `var` when it is not found. +fn get_target_dependent_env_var(var: &str) -> Option { + if let Ok(target) = env::var("TARGET") { + if let Ok(v) = env::var(&format!("{}_{}", var, target)) { + return Some(v); + } + if let Ok(v) = + env::var(&format!("{}_{}", var, target.replace("-", "_"))) + { + return Some(v); + } + } + env::var(var).ok() +} + /// A ParseCallbacks implementation that will act on file includes by echoing a rerun-if-changed /// line /// -- cgit v1.2.3