diff options
Diffstat (limited to 'src/buildtool/build_engine/target_map/target_map.cpp')
-rw-r--r-- | src/buildtool/build_engine/target_map/target_map.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index d2e73f07..99f6d9f0 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -1471,6 +1471,17 @@ void TreeTarget( .config = Configuration{}}); } + for (const auto& x : dir_entries.SymlinksIterator()) { + v.emplace_back(ConfiguredTarget{ + .target = + BuildMaps::Base::EntityName{ + target.repository, + dir_name, + x, + BuildMaps::Base::ReferenceType::kSymlink}, + .config = Configuration{}}); + } + for (const auto& x : dir_entries.DirectoriesIterator()) { v.emplace_back(ConfiguredTarget{ .target = @@ -1573,6 +1584,15 @@ void GlobTargetWithDirEntry( BuildMaps::Base::ReferenceType::kFile}); } } + for (auto const& x : dir.SymlinksIterator()) { + if (fnmatch(pattern.c_str(), x.c_str(), 0) == 0) { + matches.emplace_back(BuildMaps::Base::EntityName{ + target.repository, + target.module, + x, + BuildMaps::Base::ReferenceType::kSymlink}); + } + } source_target_map->ConsumeAfterKeysReady( ts, matches, @@ -1645,6 +1665,23 @@ auto CreateTargetMap( }); } else if (key.target.GetNamedTarget().reference_t == + BuildMaps::Base::ReferenceType::kSymlink) { + // Not a defined target, treat as source target + source_target_map->ConsumeAfterKeysReady( + ts, + {key.target}, + [setter](auto values) { + (*setter)(AnalysedTargetPtr{*values[0]}); + }, + [logger, target = key.target](auto const& msg, auto fatal) { + (*logger)(fmt::format("While analysing target {} as " + "symlink:\n{}", + target.ToString(), + msg), + fatal); + }); + } + else if (key.target.GetNamedTarget().reference_t == BuildMaps::Base::ReferenceType::kGlob) { auto wrapped_logger = std::make_shared<AsyncMapConsumerLogger>( [logger, target = key.target](auto const& msg, bool fatal) { |