diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2021-10-06 08:49:56 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2021-10-06 08:49:56 +0200 |
commit | 9637eb583a4e2bc028b93d5b8f5ceb981402554d (patch) | |
tree | 788083324687b6fe4d4309c6f3521a4a10b123b5 | |
parent | 2572a7015d9c2524a9d8299b2aa0b30ab8c880f5 (diff) |
Do not install exe{} prerequisites of file targets
-rw-r--r-- | libbuild2/install/rule.cxx | 3 | ||||
-rw-r--r-- | libbuild2/install/rule.hxx | 22 |
2 files changed, 18 insertions, 7 deletions
diff --git a/libbuild2/install/rule.cxx b/libbuild2/install/rule.cxx index d678940..3543286 100644 --- a/libbuild2/install/rule.cxx +++ b/libbuild2/install/rule.cxx @@ -288,6 +288,9 @@ namespace build2 filter (const scope* is, action, const target& t, const prerequisite& p) const { + if (p.is_a<exe> ()) + return nullptr; + const target& pt (search (t, p)); return is == nullptr || pt.in (*is) ? &pt : nullptr; } diff --git a/libbuild2/install/rule.hxx b/libbuild2/install/rule.hxx index ce60bb9..2ed162e 100644 --- a/libbuild2/install/rule.hxx +++ b/libbuild2/install/rule.hxx @@ -25,9 +25,10 @@ namespace build2 match (action, target&, const string&) const override; // Return NULL if this prerequisite should be ignored and pointer to its - // target otherwise. The default implementation ignores prerequsites - // that are outside of the installation scope (see install_scope() for - // details). + // target otherwise. + // + // The default implementation ignores prerequsites that are outside of + // the installation scope (see install_scope() for details). // // The prerequisite is passed as an iterator allowing the filter to // "see" inside groups. @@ -80,7 +81,9 @@ namespace build2 match (action, target&, const string&) const override; // Return NULL if this group member should be ignored and pointer to its - // target otherwise. The default implementation accepts all members. + // target otherwise. + // + // The default implementation accepts all members. // virtual const target* filter (action, const target&, const target& group_member) const; @@ -105,9 +108,14 @@ namespace build2 match (action, target&, const string&) const override; // Return NULL if this prerequisite should be ignored and pointer to its - // target otherwise. The default implementation ignores prerequsites - // that are outside of the installation scope (see install_scope() for - // details). + // target otherwise. + // + // The default implementation ignores prerequsites that are outside of + // the installation scope (see install_scope() for details). It also + // ignores exe{} prerequisites assuming an exe{} listed for a file + // target is there to execute (e.g., to generate that target) and + // normally should not be installed (an exe{} would typically be + // installed via the dir{./} alias). // // The prerequisite is passed as an iterator allowing the filter to // "see" inside groups. |