diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2017-07-29 10:32:36 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2017-07-29 10:32:36 +0200 |
commit | 682836daacdd3dc486187c9d60479b372895a470 (patch) | |
tree | a042ab0e46052436b08355f43fd54d9055ce9b82 /build2/cc/module.cxx | |
parent | 2b922df93fcea9e3fad8e24b39c7fe579085d3ac (diff) |
Implement "see through" installation semantics for utility libraries
Diffstat (limited to 'build2/cc/module.cxx')
-rw-r--r-- | build2/cc/module.cxx | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/build2/cc/module.cxx b/build2/cc/module.cxx index 2b19e70..56b74e9 100644 --- a/build2/cc/module.cxx +++ b/build2/cc/module.cxx @@ -425,20 +425,32 @@ namespace build2 r.insert<libs> (perform_clean_id, x_link, lr); r.insert<libs> (configure_update_id, x_link, lr); - // Note that libu*{} are not installable. + // Note that while libu*{} are not installable, we need to see through + // them in case they depend on stuff that we need to install (see the + // install rule implementations for details). // if (install_loaded) { - const install& ir (*this); + const file_install& fr (*this); + const alias_install& ar (*this); - r.insert<exe> (perform_install_id, x_install, ir); - r.insert<exe> (perform_uninstall_id, x_uninstall, ir); + r.insert<exe> (perform_install_id, x_install, fr); + r.insert<exe> (perform_uninstall_id, x_uninstall, fr); - r.insert<liba> (perform_install_id, x_install, ir); - r.insert<liba> (perform_uninstall_id, x_uninstall, ir); + r.insert<liba> (perform_install_id, x_install, fr); + r.insert<liba> (perform_uninstall_id, x_uninstall, fr); - r.insert<libs> (perform_install_id, x_install, ir); - r.insert<libs> (perform_uninstall_id, x_uninstall, ir); + r.insert<libs> (perform_install_id, x_install, fr); + r.insert<libs> (perform_uninstall_id, x_uninstall, fr); + + r.insert<libue> (perform_install_id, x_install, ar); + r.insert<libue> (perform_uninstall_id, x_uninstall, ar); + + r.insert<libua> (perform_install_id, x_install, ar); + r.insert<libua> (perform_uninstall_id, x_uninstall, ar); + + r.insert<libus> (perform_install_id, x_install, ar); + r.insert<libus> (perform_uninstall_id, x_uninstall, ar); } } } |