mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #28602 from DougGregor/print-target-triple
[Driver/Frontend] Add -print-target-triple
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user