Add libSwiftScan entry-point to query target info.

This provides the library with functionality to answer `-print-target-info` queries in place of calls to `swift-frontend`.
This commit is contained in:
Artem Chikin
2021-11-12 11:01:45 -08:00
parent 9c5e5efc9e
commit 40a1b321f5
11 changed files with 303 additions and 137 deletions

View File

@@ -501,6 +501,19 @@ static void addFrontendFlagOption(llvm::opt::OptTable &table,
}
}
swiftscan_string_ref_t
swiftscan_compiler_target_info_query(swiftscan_scan_invocation_t invocation) {
int argc = invocation->argv->count;
std::vector<const char *> Compilation;
for (int i = 0; i < argc; ++i)
Compilation.push_back(get_C_string(invocation->argv->strings[i]));
auto TargetInfo = getTargetInfo(Compilation);
if (TargetInfo.getError())
return create_null();
return TargetInfo.get();
}
swiftscan_string_set_t *
swiftscan_compiler_supported_arguments_query() {
std::unique_ptr<llvm::opt::OptTable> table = swift::createSwiftOptTable();