aboutsummaryrefslogtreecommitdiff
path: root/build/bin
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-12-09 09:43:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-12-09 09:43:38 +0200
commit5f29fc16fb85a934280e00e54bc6307685c4e05d (patch)
tree4092c97dbeb8277ea8126209cb6bd936fdff442f /build/bin
parent7c6333c365e8f36fff0f4d3957a56a50a11febc2 (diff)
Add support for specifying additional rpath's
For example: b config.bin.rpath=/usr/local/lib
Diffstat (limited to 'build/bin')
-rw-r--r--build/bin/module.cxx44
1 files changed, 27 insertions, 17 deletions
diff --git a/build/bin/module.cxx b/build/bin/module.cxx
index 0813433..e17463c 100644
--- a/build/bin/module.cxx
+++ b/build/bin/module.cxx
@@ -40,6 +40,25 @@ namespace build
tracer trace ("bin::init");
level5 ([&]{trace << "for " << b.out_path ();});
+ // Enter module variables.
+ //
+ if (first)
+ {
+ auto& v (var_pool);
+
+ v.find ("config.bin.lib", string_type);
+ v.find ("config.bin.exe.lib", strings_type);
+ v.find ("config.bin.liba.lib", strings_type);
+ v.find ("config.bin.libso.lib", strings_type);
+ v.find ("config.bin.rpath", strings_type); //@@ VAR paths_type
+
+ v.find ("bin.lib", string_type);
+ v.find ("bin.exe.lib", strings_type);
+ v.find ("bin.liba.lib", strings_type);
+ v.find ("bin.libso.lib", strings_type);
+ v.find ("bin.rpath", strings_type); //@@ VAR paths_type
+ }
+
// Register target types.
//
{
@@ -79,23 +98,6 @@ namespace build
r.insert<lib> (perform_install_id, "bin.lib", lib_);
}
- // Enter module variables.
- //
- if (first)
- {
- auto& v (var_pool);
-
- v.find ("config.bin.lib", string_type);
- v.find ("config.bin.exe.lib", strings_type);
- v.find ("config.bin.liba.lib", strings_type);
- v.find ("config.bin.libso.lib", strings_type);
-
- v.find ("bin.lib", string_type);
- v.find ("bin.exe.lib", strings_type);
- v.find ("bin.liba.lib", strings_type);
- v.find ("bin.libso.lib", strings_type);
- }
-
// Configure.
//
using config::required;
@@ -142,6 +144,14 @@ namespace build
v = required (r, "config.bin.libso.lib", libso_lib).first;
}
+ // config.bin.rpath
+ //
+ // This one is optional and we merge it into bin.rpath, if any.
+ // See the cxx module for details on merging.
+ //
+ if (const value& v = config::optional (r, "config.bin.rpath"))
+ b.assign ("bin.rpath") += as<strings> (v);
+
// Configure "installability" of our target types.
//
install::path<exe> (b, dir_path ("bin")); // Install into install.bin.