aboutsummaryrefslogtreecommitdiff
path: root/build2/cc/module.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-10-26 19:07:42 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-10-26 19:07:42 +0200
commit296575ba025ded840304c1e3b6365a6b6ee7ea48 (patch)
treeda8ecb3dfc8178b7ddf00c51a21fbe8d375cd435 /build2/cc/module.cxx
parent1dba8a7b279c857e9c13cbd6496849f5501e9944 (diff)
Add config.{c,cxx}.{id,version,target} configuration variables
These variables allow overriding guessed compiler id/version/target, for example, in case of mis-guesses or when working with compilers that don't report their base (e.g., GCC, Clang) with -v/--version (common in the embedded space).
Diffstat (limited to 'build2/cc/module.cxx')
-rw-r--r--build2/cc/module.cxx26
1 files changed, 15 insertions, 11 deletions
diff --git a/build2/cc/module.cxx b/build2/cc/module.cxx
index 363f1d0..5ef1f2a 100644
--- a/build2/cc/module.cxx
+++ b/build2/cc/module.cxx
@@ -115,16 +115,20 @@ namespace build2
// Figure out which compiler we are dealing with, its target, etc.
//
- const path& xc (cast<path> (*p.first));
- ci_ = &build2::cc::guess (x_lang,
- config_x.name,
- xc,
- cast_null<strings> (rs[config_c_poptions]),
- cast_null<strings> (rs[config_x_poptions]),
- cast_null<strings> (rs[config_c_coptions]),
- cast_null<strings> (rs[config_x_coptions]),
- cast_null<strings> (rs[config_c_loptions]),
- cast_null<strings> (rs[config_x_loptions]));
+ ci_ = &build2::cc::guess (
+ x,
+ x_lang,
+ cast<path> (*p.first),
+ cast_null<string> (config::omitted (rs, config_x_id).first),
+ cast_null<string> (config::omitted (rs, config_x_version).first),
+ cast_null<string> (config::omitted (rs, config_x_target).first),
+ cast_null<strings> (rs[config_c_poptions]),
+ cast_null<strings> (rs[config_x_poptions]),
+ cast_null<strings> (rs[config_c_coptions]),
+ cast_null<strings> (rs[config_x_coptions]),
+ cast_null<strings> (rs[config_c_loptions]),
+ cast_null<strings> (rs[config_x_loptions]));
+
const compiler_info& ci (*ci_);
// Split/canonicalize the target. First see if the user asked us to
@@ -139,7 +143,7 @@ namespace build2
ct = run<string> (3,
ops.config_sub (),
ci.target.c_str (),
- [] (string& l) {return move (l);});
+ [] (string& l, bool) {return move (l);});
l5 ([&]{trace << "config.sub target: '" << ct << "'";});
}