Add '-Fsystem' framework search option to indicate path for frameworks that should be treated as 'system'

This has the effect of propagating the search path to the clang importer as '-iframework'.
It doesn't affect whether a swift module is treated as system or not, this can be done as follow-up enhancement.
This commit is contained in:
Argyrios Kyrtzidis
2017-02-14 16:07:02 -08:00
parent ff4b055935
commit ca906d1e99
28 changed files with 159 additions and 57 deletions

View File

@@ -3511,12 +3511,15 @@ static int prepareForDump(const char *Main,
if (!options::ResourceDir.empty()) {
InitInvok.setRuntimeResourcePath(options::ResourceDir);
}
InitInvok.setFrameworkSearchPaths(options::FrameworkPaths);
InitInvok.setImportSearchPaths(options::ModuleInputPaths);
for (auto CCFrameworkPath : options::CCSystemFrameworkPaths) {
InitInvok.getClangImporterOptions().ExtraArgs.push_back("-iframework");
InitInvok.getClangImporterOptions().ExtraArgs.push_back(CCFrameworkPath);
std::vector<SearchPathOptions::FrameworkSearchPath> FramePaths;
for (const auto &path : options::FrameworkPaths) {
FramePaths.push_back({path, /*isSystem=*/false});
}
for (const auto &path : options::CCSystemFrameworkPaths) {
FramePaths.push_back({path, /*isSystem=*/true});
}
InitInvok.setFrameworkSearchPaths(FramePaths);
InitInvok.setImportSearchPaths(options::ModuleInputPaths);
if (!options::ModuleList.empty()) {
if (readFileLineByLine(options::ModuleList, Modules))