Merge pull request #28602 from DougGregor/print-target-triple

[Driver/Frontend] Add -print-target-triple
This commit is contained in:
Doug Gregor
2019-12-07 10:51:38 -08:00
committed by GitHub
7 changed files with 102 additions and 0 deletions

View File

@@ -42,6 +42,7 @@
#include "swift/Basic/JSONSerialization.h"
#include "swift/Basic/LLVMContext.h"
#include "swift/Basic/LLVMInitialize.h"
#include "swift/Basic/Platform.h"
#include "swift/Basic/PrettyStackTrace.h"
#include "swift/Basic/SourceManager.h"
#include "swift/Basic/Statistic.h"
@@ -1866,6 +1867,38 @@ createJSONFixItDiagnosticConsumerIfNeeded(
});
}
/// Print information about the selected target in JSON.
static void printTargetInfo(CompilerInvocation &invocation,
llvm::raw_ostream &out) {
out << "{\n";
// Target information.
auto &langOpts = invocation.getLangOptions();
out << " \"target\": {\n";
out << " \"triple\": \"";
out.write_escaped(langOpts.Target.getTriple());
out << "\",\n";
out << " \"moduleTriple\": \"";
out.write_escaped(getTargetSpecificModuleTriple(langOpts.Target).getTriple());
out << "\",\n";
if (auto runtimeVersion = getSwiftRuntimeCompatibilityVersionForTarget(
langOpts.Target)) {
out << " \"swiftRuntimeCompatibilityVersion\": \"";
out.write_escaped(runtimeVersion->getAsString());
out << "\",\n";
}
out << " \"librariesRequireRPath\": "
<< (tripleRequiresRPathForSwiftInOS(langOpts.Target) ? "true" : "false")
<< "\n";
out << " }\n";
out << "}\n";
}
int swift::performFrontend(ArrayRef<const char *> Args,
const char *Argv0, void *MainAddr,
@@ -1990,6 +2023,11 @@ int swift::performFrontend(ArrayRef<const char *> Args,
return finishDiagProcessing(0);
}
if (Invocation.getFrontendOptions().PrintTargetInfo) {
printTargetInfo(Invocation, llvm::outs());
return finishDiagProcessing(0);
}
if (Invocation.getFrontendOptions().RequestedAction ==
FrontendOptions::ActionType::NoneAction) {
Instance->getDiags().diagnose(SourceLoc(),