[ScanDependency] Teach dependency scanner to use resolved macros option

Teach dependency scanner to construct build commands using resolved
plugin search path option. This ensures the modules that do not have
access to the macro plugins will not have a different variant due to
different plugin search path.

rdar://136682810
This commit is contained in:
Steven Wu
2024-09-20 16:58:01 -07:00
parent 47b3efdb6e
commit 2d204f839a
3 changed files with 14 additions and 65 deletions

View File

@@ -1723,47 +1723,9 @@ void InterfaceSubContextDelegateImpl::inheritOptionsForBuildingInterface(
genericSubInvocation.setPlatformAvailabilityInheritanceMapPath(*SearchPathOpts.PlatformAvailabilityInheritanceMapPath);
}
for (auto &entry : SearchPathOpts.PluginSearchOpts) {
switch (entry.getKind()) {
case PluginSearchOption::Kind::LoadPluginLibrary: {
auto &val = entry.get<PluginSearchOption::LoadPluginLibrary>();
GenericArgs.push_back("-load-plugin-library");
GenericArgs.push_back(ArgSaver.save(val.LibraryPath));
break;
}
case PluginSearchOption::Kind::LoadPluginExecutable: {
auto &val = entry.get<PluginSearchOption::LoadPluginExecutable>();
for (auto &moduleName : val.ModuleNames) {
GenericArgs.push_back("-load-plugin-executable");
GenericArgs.push_back(
ArgSaver.save(val.ExecutablePath + "#" + moduleName));
}
break;
}
case PluginSearchOption::Kind::PluginPath: {
auto &val = entry.get<PluginSearchOption::PluginPath>();
GenericArgs.push_back("-plugin-path");
GenericArgs.push_back(ArgSaver.save(val.SearchPath));
break;
}
case PluginSearchOption::Kind::ExternalPluginPath: {
auto &val = entry.get<PluginSearchOption::ExternalPluginPath>();
GenericArgs.push_back("-external-plugin-path");
GenericArgs.push_back(
ArgSaver.save(val.SearchPath + "#" + val.ServerPath));
break;
}
case PluginSearchOption::Kind::ResolvedPluginConfig: {
auto &val = entry.get<PluginSearchOption::ResolvedPluginConfig>();
for (auto &moduleName : val.ModuleNames) {
GenericArgs.push_back("-load-plugin-executable");
GenericArgs.push_back(ArgSaver.save(
val.LibraryPath + "#" + val.ExecutablePath + "#" + moduleName));
}
break;
}
}
}
// Inherit the plugin search opts but do not inherit the arguments.
genericSubInvocation.getSearchPathOptions().PluginSearchOpts =
SearchPathOpts.PluginSearchOpts;
genericSubInvocation.getFrontendOptions().InputMode
= FrontendOptions::ParseInputMode::SwiftModuleInterface;