aboutsummaryrefslogtreecommitdiff
path: root/build2/cc/install.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-07-31 18:42:47 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-07-31 18:44:07 +0200
commita84ff43b183181e0a12c6d5e31c1f366d39ce2fe (patch)
tree3dce54b64fd8e9917ed034a3e2c9e20f057eece4 /build2/cc/install.cxx
parent89f5bc3b423a1269a60ccca05174226c8de40357 (diff)
Experimental (and probably broken) pkg-config generation support
Diffstat (limited to 'build2/cc/install.cxx')
-rw-r--r--build2/cc/install.cxx33
1 files changed, 32 insertions, 1 deletions
diff --git a/build2/cc/install.cxx b/build2/cc/install.cxx
index a0dc9b8..c65e7f6 100644
--- a/build2/cc/install.cxx
+++ b/build2/cc/install.cxx
@@ -94,12 +94,43 @@ namespace build2
{
file* f;
if ((f = t.is_a<libs> ()) != nullptr && tclass != "windows")
- t.data (link_.derive_libs_paths (*f));
+ {
+ const string* p (cast_null<string> (t["bin.lib.prefix"]));
+ const string* s (cast_null<string> (t["bin.lib.suffix"]));
+ t.data (
+ link_.derive_libs_paths (*f,
+ p != nullptr ? p->c_str (): nullptr,
+ s != nullptr ? s->c_str (): nullptr));
+ }
}
return r;
}
+ target_state file_install::
+ update_extra (action act, const target& t) const
+ {
+ // (Re)generate pkg-config's .pc file. While the target itself might be
+ // up-to-date from a previous run, there is no guarantee that .pc exists
+ // or also up-to-date. So to keep things simple we just regenerate it
+ // unconditionally.
+ //
+ // Also, if you are wondering why don't we just always produce this .pc,
+ // install or no install, the reason is unless and until we are updating
+ // for install, we have no idea where to things will be installed.
+ //
+ bool a;
+ const file* f;
+
+ if ((a = (f = t.is_a<liba> ())) ||
+ ( f = t.is_a<libs> ()))
+ {
+ pkgconfig_save (act, *f, a);
+ }
+
+ return target_state::unchanged;
+ }
+
void file_install::
install_extra (const file& t, const install_dir& id) const
{