diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-08-03 13:10:28 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-08-03 13:10:28 +0200 |
commit | 0db17bfec8b3b6c436f3c9c346d17d98458c3654 (patch) | |
tree | c9dcd1d7678972b0a40450b21a7d23dd6ec1121b /build/cxx | |
parent | 3a2efbc3d33c70aa5d0a87c9a1d16b458541bdde (diff) |
match_only and dependents count rework, part 1
Diffstat (limited to 'build/cxx')
-rw-r--r-- | build/cxx/compile.cxx | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/build/cxx/compile.cxx b/build/cxx/compile.cxx index d89aaac..48d2240 100644 --- a/build/cxx/compile.cxx +++ b/build/cxx/compile.cxx @@ -113,17 +113,32 @@ namespace build // match() in order to get options (if any, they would // be set by search_library()). // + // @@ What if this is an installed import with an export + // stub? How will such a stub capture prerequsite libs? + // Probably as imported prerequisites, e.g., %lib{z}, not + // as -lz in .libs variable. + // + // In fact, even if we tried match() on lib{}, nothing + // would have matched since that lib{} is out of any + // project and is not a file (which is the case for + // liba/libso). So probably the importing code would + // have to take care of importing all the prerequisite + // libraries. It does make sense since we don't really + // want to match a rule to an installed library. + // if (link::search_library (lib_paths, p.prerequisite) != nullptr) continue; } target& pt (p.search ()); - // @@ The fact that we match but never execute messes up - // the dependents count. This is a workaround, not a - // solution. - // - build::match (a, pt); + if (p.is_a<lib> ()) //@@ TMP + build::match_only (a, pt); + else + { + build::match (a, pt); + pt.dependents--; + } } continue; |