Skip to content

Commit ff16d6a

Browse files
committed
[gen][vs] Better deps extraction.
1 parent 964ac75 commit ff16d6a

1 file changed

Lines changed: 25 additions & 14 deletions

File tree

  • src/sw/client/cli/generator/vs

src/sw/client/cli/generator/vs/vs.cpp

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -541,23 +541,34 @@ void VSGenerator::generate(const SwBuild &b)
541541
{
542542
auto &p = s.projects.find(tgt->getPackage().toString())->second;
543543
auto &data = p.getData(tgt->getSettings());
544-
auto deps = tgt->getDependencies();
545-
for (auto &d : deps)
546-
{
547-
// filter out predefined targets
548-
auto &pd1 = b.getContext().getPredefinedTargets();
549-
if (pd1.find(d->getUnresolvedPackage().ppath) != pd1.end(d->getUnresolvedPackage().ppath))
550-
continue;
544+
auto &is = tgt->getInterfaceSettings();
551545

552-
// filter out predefined & deps targets
553-
auto &pd = ttb;
554-
if (pd.find(d->getUnresolvedPackage().ppath) == pd.end(d->getUnresolvedPackage().ppath))
546+
auto add_deps = [&ttb, &data, &s, &b, &p](auto &is)
547+
{
548+
for (auto &[id, v] : is)
555549
{
556-
data.dependencies.insert(&d->getTarget());
557-
continue;
550+
PackageId d(id);
551+
// filter out predefined targets
552+
if (b.getContext().getPredefinedTargets().find(d) != b.getContext().getPredefinedTargets().end())
553+
continue;
554+
555+
// filter out NON TARGET TO BUILD deps
556+
// add them to just deps list
557+
auto &pd = ttb;
558+
if (pd.find(d) == pd.end())
559+
{
560+
auto i = b.getTargets().find(d, v.getSettings());
561+
if (!i)
562+
throw SW_LOGIC_ERROR("Cannot find dependency: " + d.toString());
563+
data.dependencies.insert(i);
564+
continue;
565+
}
566+
p.dependencies.insert(&s.projects.find(d.toString())->second);
558567
}
559-
p.dependencies.insert(&s.projects.find(d->getTarget().getPackage().toString())->second);
560-
}
568+
};
569+
570+
add_deps(is["dependencies"]["link"].getSettings());
571+
add_deps(is["dependencies"]["dummy"].getSettings());
561572

562573
//
563574
if (!s.first_project && n_executables == 1 && tgt->getInterfaceSettings()["type"] == "native_executable")

0 commit comments

Comments
 (0)