aboutsummaryrefslogtreecommitdiff
path: root/build/bin
diff options
context:
space:
mode:
Diffstat (limited to 'build/bin')
-rw-r--r--build/bin/module6
-rw-r--r--build/bin/module.cxx46
-rw-r--r--build/bin/target.cxx7
3 files changed, 36 insertions, 23 deletions
diff --git a/build/bin/module b/build/bin/module
index f2d9502..7e80085 100644
--- a/build/bin/module
+++ b/build/bin/module
@@ -14,12 +14,6 @@ namespace build
{
void
init (scope&, scope&, const location&);
-
- // Init the 'lib' part of the module because a lib{} target
- // has been created in the specified directory.
- //
- void
- init_lib (const dir_path&);
}
}
diff --git a/build/bin/module.cxx b/build/bin/module.cxx
index 89ea9fe..f27ea68 100644
--- a/build/bin/module.cxx
+++ b/build/bin/module.cxx
@@ -16,6 +16,12 @@ namespace build
{
namespace bin
{
+ // Default config.bin.*.lib values.
+ //
+ static const list_value exe_lib (names {name ("shared"), name ("static")});
+ static const list_value liba_lib ("static");
+ static const list_value libso_lib ("shared");
+
void
init (scope& root, scope& base, const location& l)
{
@@ -35,23 +41,43 @@ namespace build
// Configure.
//
- }
-
- void
- init_lib (const dir_path& d)
- {
- scope* root (scopes.find (d).root_scope ());
+ using config::required;
- if (root == nullptr)
- return;
+ //@@ Need to validate the values. Would be more efficient
+ // to do it once on assignment than every time on query.
+ // Custom var type?
+ //
// config.bin.lib
//
{
- auto v (root->vars.assign ("bin.lib"));
+ auto v (root.vars.assign ("bin.lib"));
+ if (!v)
+ v = required (root, "config.bin.lib", "shared").first;
+ }
+
+ // config.bin.exe.lib
+ //
+ {
+ auto v (root.vars.assign ("bin.exe.lib"));
+ if (!v)
+ v = required (root, "config.bin.exe.lib", exe_lib).first;
+ }
+
+ // config.bin.liba.lib
+ //
+ {
+ auto v (root.vars.assign ("bin.liba.lib"));
+ if (!v)
+ v = required (root, "config.bin.liba.lib", liba_lib).first;
+ }
+ // config.bin.libso.lib
+ //
+ {
+ auto v (root.vars.assign ("bin.libso.lib"));
if (!v)
- v = config::required (*root, "config.bin.lib", "shared").first;
+ v = required (root, "config.bin.libso.lib", libso_lib).first;
}
}
}
diff --git a/build/bin/target.cxx b/build/bin/target.cxx
index ca198d7d..1849533 100644
--- a/build/bin/target.cxx
+++ b/build/bin/target.cxx
@@ -4,8 +4,6 @@
#include <build/bin/target>
-#include <build/bin/module>
-
using namespace std;
namespace build
@@ -133,11 +131,6 @@ namespace build
static target*
lib_factory (dir_path d, string n, const string* e)
{
- // If there is a target of type lib{} in this project, then
- // initialized the lib part of the module.
- //
- init_lib (d);
-
liba* a (targets.find<liba> (d, n));
libso* so (targets.find<libso> (d, n));
lib* l (new lib (move (d), move (n), e));