aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/prerequisite.ixx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2019-06-24 12:01:19 +0200
committerKaren Arutyunov <karen@codesynthesis.com>2019-07-01 18:13:55 +0300
commit977d07a3ae47ef204665d1eda2d642e5064724f3 (patch)
tree525a3d6421f61ce789b690191d3c30fc09be3517 /libbuild2/prerequisite.ixx
parent7161b24963dd9da4d218f92c736b77c35c328a2d (diff)
Split build system into library and driver
Diffstat (limited to 'libbuild2/prerequisite.ixx')
-rw-r--r--libbuild2/prerequisite.ixx34
1 files changed, 34 insertions, 0 deletions
diff --git a/libbuild2/prerequisite.ixx b/libbuild2/prerequisite.ixx
new file mode 100644
index 0000000..d62af49
--- /dev/null
+++ b/libbuild2/prerequisite.ixx
@@ -0,0 +1,34 @@
+// file : libbuild2/prerequisite.ixx -*- C++ -*-
+// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#include <libbuild2/export.hxx>
+
+namespace build2
+{
+ LIBBUILD2_SYMEXPORT include_type
+ include_impl (action,
+ const target&,
+ const string&,
+ const prerequisite&,
+ const target*);
+
+ LIBBUILD2_SYMEXPORT extern const variable* var_include; // context.cxx
+
+ inline include_type
+ include (action a, const target& t, const prerequisite& p, const target* m)
+ {
+ // Most of the time this variable will not be specified, so let's optimize
+ // for that.
+ //
+ if (p.vars.empty ())
+ return true;
+
+ const string* v (cast_null<string> (p.vars[var_include]));
+
+ if (v == nullptr)
+ return true;
+
+ return include_impl (a, t, *v, p, m);
+ }
+}