aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/cc/common.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-10-01 11:05:49 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-10-01 11:05:49 +0200
commit248b79eba58d88766c6fe3fb87f8dfda5f86a615 (patch)
tree2acde6176840cd00b5019203bc729794ed745e9f /libbuild2/cc/common.ixx
parentf63c0548281015ca1f7d71079c0880e3634063fb (diff)
Add notion of internal scope, translate external -I to -isystem or equivalent
Diffstat (limited to 'libbuild2/cc/common.ixx')
-rw-r--r--libbuild2/cc/common.ixx34
1 files changed, 34 insertions, 0 deletions
diff --git a/libbuild2/cc/common.ixx b/libbuild2/cc/common.ixx
new file mode 100644
index 0000000..ce28890
--- /dev/null
+++ b/libbuild2/cc/common.ixx
@@ -0,0 +1,34 @@
+// file : libbuild2/cc/common.ixx -*- C++ -*-
+// license : MIT; see accompanying LICENSE file
+
+namespace build2
+{
+ namespace cc
+ {
+ inline const scope* data::
+ effective_internal_scope (const scope& bs) const
+ {
+ if (internal_scope == nullptr)
+ return nullptr;
+ else
+ {
+ const string& s (*internal_scope);
+
+ if (s == "current")
+ return internal_scope_current;
+ else if (s == "base")
+ return &bs;
+ else if (s == "root")
+ return bs.root_scope ();
+ else if (s == "bundle")
+ return bs.bundle_scope ();
+ else if (s == "strong")
+ return bs.strong_scope ();
+ else if (s == "weak")
+ return bs.weak_scope ();
+ else
+ return nullptr;
+ }
+ }
+ }
+}