aboutsummaryrefslogtreecommitdiff
path: root/build/install
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-12-02 11:37:15 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-12-02 11:37:15 +0200
commit9891b20350021ce41a950645dd76df20a45c92cc (patch)
tree0cd27041b0c3413e17b9319ae99e87c5e745b1ff /build/install
parent74212589a797ca75e55f92a522e198915c0dbaf6 (diff)
Implement optional module loading
The syntax is: using? cli Now each module use results in two bool variables: <module>.loaded and <module>.configured. Also implement variable visibility (the above two variables are limited to project).
Diffstat (limited to 'build/install')
-rw-r--r--build/install/module6
-rw-r--r--build/install/module.cxx17
2 files changed, 14 insertions, 9 deletions
diff --git a/build/install/module b/build/install/module
index 240d034..78004ef 100644
--- a/build/install/module
+++ b/build/install/module
@@ -6,15 +6,17 @@
#define BUILD_INSTALL_MODULE
#include <build/types>
+#include <build/utility>
+
#include <build/module>
namespace build
{
namespace install
{
- extern "C" void
+ extern "C" bool
install_init (
- scope&, scope&, const location&, std::unique_ptr<module>&, bool);
+ scope&, scope&, const location&, unique_ptr<module>&, bool, bool);
}
}
diff --git a/build/install/module.cxx b/build/install/module.cxx
index a0eed61..8711341 100644
--- a/build/install/module.cxx
+++ b/build/install/module.cxx
@@ -51,7 +51,7 @@ namespace build
vn += name;
vn += var;
const variable& vr (
- variable_pool.find (move (vn), &value_traits<T>::value_type));
+ var_pool.find (move (vn), &value_traits<T>::value_type));
cv = dv != nullptr
? &config::required (r, vr, *dv, override).first.get ()
@@ -62,7 +62,7 @@ namespace build
vn += name;
vn += var;
const variable& vr (
- variable_pool.find (move (vn), &value_traits<T>::value_type));
+ var_pool.find (move (vn), &value_traits<T>::value_type));
value& v (r.assign (vr));
@@ -99,12 +99,13 @@ namespace build
static alias_rule alias_;
static file_rule file_;
- extern "C" void
+ extern "C" bool
install_init (scope& r,
scope& b,
const location& l,
- unique_ptr<build::module>&,
- bool first)
+ unique_ptr<module>&,
+ bool first,
+ bool)
{
tracer trace ("install::init");
@@ -114,7 +115,7 @@ namespace build
if (!first)
{
warn (l) << "multiple install module initializations";
- return;
+ return true;
}
const dir_path& out_root (r.out_path ());
@@ -135,7 +136,7 @@ namespace build
//
if (first)
{
- variable_pool.find ("install", dir_path_type);
+ var_pool.find ("install", dir_path_type);
}
// Configuration.
@@ -172,6 +173,8 @@ namespace build
path<doc> (b, dir_path ("doc")); // Install into install.doc.
path<man> (b, dir_path ("man")); // Install into install.man.
path<man1> (b, dir_path ("man1")); // Install into install.man1.
+
+ return true;
}
}
}