Add target variant to -print-target-info

This commit is contained in:
Brent Royal-Gordon
2020-02-01 13:39:55 -08:00
parent 1fff12f663
commit c964d18467
2 changed files with 51 additions and 12 deletions

View File

@@ -1894,39 +1894,54 @@ createJSONFixItDiagnosticConsumerIfNeeded(
});
}
/// Print information about the selected target in JSON.
static void printTargetInfo(const CompilerInvocation &invocation,
/// Print information about the target triple in JSON.
static void printTripleInfo(const llvm::Triple &triple,
llvm::raw_ostream &out) {
out << "{\n";
// Target information.
auto &langOpts = invocation.getLangOptions();
out << " \"target\": {\n";
out << " \"triple\": \"";
out.write_escaped(langOpts.Target.getTriple());
out.write_escaped(triple.getTriple());
out << "\",\n";
out << " \"unversionedTriple\": \"";
out.write_escaped(getUnversionedTriple(langOpts.Target).getTriple());
out.write_escaped(getUnversionedTriple(triple).getTriple());
out << "\",\n";
out << " \"moduleTriple\": \"";
out.write_escaped(getTargetSpecificModuleTriple(langOpts.Target).getTriple());
out.write_escaped(getTargetSpecificModuleTriple(triple).getTriple());
out << "\",\n";
if (auto runtimeVersion = getSwiftRuntimeCompatibilityVersionForTarget(
langOpts.Target)) {
triple)) {
out << " \"swiftRuntimeCompatibilityVersion\": \"";
out.write_escaped(runtimeVersion->getAsString());
out << "\",\n";
}
out << " \"librariesRequireRPath\": "
<< (tripleRequiresRPathForSwiftInOS(langOpts.Target) ? "true" : "false")
<< (tripleRequiresRPathForSwiftInOS(triple) ? "true" : "false")
<< "\n";
out << " },\n";
out << " }";
}
/// Print information about the selected target in JSON.
static void printTargetInfo(const CompilerInvocation &invocation,
llvm::raw_ostream &out) {
out << "{\n";
// Target triple and target variant triple.
auto &langOpts = invocation.getLangOptions();
out << " \"target\": ";
printTripleInfo(langOpts.Target, out);
out << ",\n";
if (auto &variant = langOpts.TargetVariant) {
out << " \"targetVariant\": ";
printTripleInfo(*variant, out);
out << ",\n";
}
// Various paths.
auto &searchOpts = invocation.getSearchPathOptions();

View File

@@ -4,6 +4,9 @@
// RUN: %swift_driver -print-target-info -target x86_64-unknown-linux | %FileCheck -check-prefix CHECK-LINUX %s
// RUN: %target-swift-frontend -print-target-info -target x86_64-unknown-linux | %FileCheck -check-prefix CHECK-LINUX %s
// RUN: %swift_driver -print-target-info -target x86_64-apple-macosx10.15 -target-variant x86_64-apple-ios13-macabi | %FileCheck -check-prefix CHECK-ZIPPERED %s
// RUN: %target-swift-frontend -print-target-info -target x86_64-apple-macosx10.15 -target-variant x86_64-apple-ios13-macabi | %FileCheck -check-prefix CHECK-ZIPPERED %s
// CHECK-IOS: "target": {
// CHECK-IOS: "triple": "arm64-apple-ios12.0",
// CHECK-IOS: "unversionedTriple": "arm64-apple-ios",
@@ -12,6 +15,8 @@
// CHECK-IOS: "librariesRequireRPath": true
// CHECK-IOS: }
// CHECK-IOS-NOT: "targetVariant":
// CHECK-IOS: "paths": {
// CHECK-IOS: "runtimeLibraryPaths": [
// CHECK-IOS: ],
@@ -26,3 +31,22 @@
// CHECK-LINUX: "moduleTriple": "x86_64-unknown-linux",
// CHECK-LINUX: "librariesRequireRPath": false
// CHECK-LINUX: }
// CHECK-LINUX-NOT: "targetVariant":
// CHECK-ZIPPERED: "target": {
// CHECK-ZIPPERED: "triple": "x86_64-apple-macosx10.15"
// CHECK-ZIPPERED: "unversionedTriple": "x86_64-apple-macosx"
// CHECK-ZIPPERED: "moduleTriple": "x86_64-apple-macos"
// CHECK-ZIPPERED: "swiftRuntimeCompatibilityVersion": "5.1"
// CHECK-ZIPPERED: "librariesRequireRPath": false
// CHECK-ZIPPERED: }
// CHECK-ZIPPERED: "targetVariant": {
// CHECK-ZIPPERED: "triple": "x86_64-apple-ios13-macabi"
// CHECK-ZIPPERED: "unversionedTriple": "x86_64-apple-ios-macabi"
// CHECK-ZIPPERED: "moduleTriple": "x86_64-apple-ios-macabi"
// CHECK-ZIPPERED: "swiftRuntimeCompatibilityVersion": "5.1"
// CHECK-ZIPPERED: "librariesRequireRPath": false
// CHECK-ZIPPERED: }