Skip to content

Commit b4771c2

Browse files
authored
Merge pull request #29591 from brentdax/stay-on-target
Add target variant to -print-target-info
2 parents 0c0018f + 161061f commit b4771c2

File tree

3 files changed

+57
-12
lines changed

3 files changed

+57
-12
lines changed

lib/Driver/Driver.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,6 +2176,11 @@ bool Driver::handleImmediateArgs(const ArgList &Args, const ToolChain &TC) {
21762176
commandLine.push_back("-target");
21772177
commandLine.push_back(targetArg->getValue());
21782178
}
2179+
if (const Arg *targetVariantArg =
2180+
Args.getLastArg(options::OPT_target_variant)) {
2181+
commandLine.push_back("-target-variant");
2182+
commandLine.push_back(targetVariantArg->getValue());
2183+
}
21792184
if (const Arg *sdkArg = Args.getLastArg(options::OPT_sdk)) {
21802185
commandLine.push_back("-sdk");
21812186
commandLine.push_back(sdkArg->getValue());
@@ -2188,6 +2193,7 @@ bool Driver::handleImmediateArgs(const ArgList &Args, const ToolChain &TC) {
21882193

21892194
std::string executable = getSwiftProgramPath();
21902195

2196+
// FIXME: This bypasses mechanisms like -v and -###. (SR-12119)
21912197
sys::TaskQueue queue;
21922198
queue.addTask(executable.c_str(), commandLine);
21932199
queue.execute(nullptr,

lib/FrontendTool/FrontendTool.cpp

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,39 +1894,54 @@ createJSONFixItDiagnosticConsumerIfNeeded(
18941894
});
18951895
}
18961896

1897-
/// Print information about the selected target in JSON.
1898-
static void printTargetInfo(const CompilerInvocation &invocation,
1897+
/// Print information about the target triple in JSON.
1898+
static void printTripleInfo(const llvm::Triple &triple,
18991899
llvm::raw_ostream &out) {
19001900
out << "{\n";
19011901

1902-
// Target information.
1903-
auto &langOpts = invocation.getLangOptions();
1904-
out << " \"target\": {\n";
1905-
19061902
out << " \"triple\": \"";
1907-
out.write_escaped(langOpts.Target.getTriple());
1903+
out.write_escaped(triple.getTriple());
19081904
out << "\",\n";
19091905

19101906
out << " \"unversionedTriple\": \"";
1911-
out.write_escaped(getUnversionedTriple(langOpts.Target).getTriple());
1907+
out.write_escaped(getUnversionedTriple(triple).getTriple());
19121908
out << "\",\n";
19131909

19141910
out << " \"moduleTriple\": \"";
1915-
out.write_escaped(getTargetSpecificModuleTriple(langOpts.Target).getTriple());
1911+
out.write_escaped(getTargetSpecificModuleTriple(triple).getTriple());
19161912
out << "\",\n";
19171913

19181914
if (auto runtimeVersion = getSwiftRuntimeCompatibilityVersionForTarget(
1919-
langOpts.Target)) {
1915+
triple)) {
19201916
out << " \"swiftRuntimeCompatibilityVersion\": \"";
19211917
out.write_escaped(runtimeVersion->getAsString());
19221918
out << "\",\n";
19231919
}
19241920

19251921
out << " \"librariesRequireRPath\": "
1926-
<< (tripleRequiresRPathForSwiftInOS(langOpts.Target) ? "true" : "false")
1922+
<< (tripleRequiresRPathForSwiftInOS(triple) ? "true" : "false")
19271923
<< "\n";
19281924

1929-
out << " },\n";
1925+
out << " }";
1926+
1927+
}
1928+
1929+
/// Print information about the selected target in JSON.
1930+
static void printTargetInfo(const CompilerInvocation &invocation,
1931+
llvm::raw_ostream &out) {
1932+
out << "{\n";
1933+
1934+
// Target triple and target variant triple.
1935+
auto &langOpts = invocation.getLangOptions();
1936+
out << " \"target\": ";
1937+
printTripleInfo(langOpts.Target, out);
1938+
out << ",\n";
1939+
1940+
if (auto &variant = langOpts.TargetVariant) {
1941+
out << " \"targetVariant\": ";
1942+
printTripleInfo(*variant, out);
1943+
out << ",\n";
1944+
}
19301945

19311946
// Various paths.
19321947
auto &searchOpts = invocation.getSearchPathOptions();

test/Driver/print_target_info.swift

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
// RUN: %swift_driver -print-target-info -target x86_64-unknown-linux | %FileCheck -check-prefix CHECK-LINUX %s
55
// RUN: %target-swift-frontend -print-target-info -target x86_64-unknown-linux | %FileCheck -check-prefix CHECK-LINUX %s
66

7+
// 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
8+
// 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
9+
710
// CHECK-IOS: "target": {
811
// CHECK-IOS: "triple": "arm64-apple-ios12.0",
912
// CHECK-IOS: "unversionedTriple": "arm64-apple-ios",
@@ -12,6 +15,8 @@
1215
// CHECK-IOS: "librariesRequireRPath": true
1316
// CHECK-IOS: }
1417

18+
// CHECK-IOS-NOT: "targetVariant":
19+
1520
// CHECK-IOS: "paths": {
1621
// CHECK-IOS: "runtimeLibraryPaths": [
1722
// CHECK-IOS: ],
@@ -26,3 +31,22 @@
2631
// CHECK-LINUX: "moduleTriple": "x86_64-unknown-linux",
2732
// CHECK-LINUX: "librariesRequireRPath": false
2833
// CHECK-LINUX: }
34+
35+
// CHECK-LINUX-NOT: "targetVariant":
36+
37+
38+
// CHECK-ZIPPERED: "target": {
39+
// CHECK-ZIPPERED: "triple": "x86_64-apple-macosx10.15"
40+
// CHECK-ZIPPERED: "unversionedTriple": "x86_64-apple-macosx"
41+
// CHECK-ZIPPERED: "moduleTriple": "x86_64-apple-macos"
42+
// CHECK-ZIPPERED: "swiftRuntimeCompatibilityVersion": "5.1"
43+
// CHECK-ZIPPERED: "librariesRequireRPath": false
44+
// CHECK-ZIPPERED: }
45+
46+
// CHECK-ZIPPERED: "targetVariant": {
47+
// CHECK-ZIPPERED: "triple": "x86_64-apple-ios13-macabi"
48+
// CHECK-ZIPPERED: "unversionedTriple": "x86_64-apple-ios-macabi"
49+
// CHECK-ZIPPERED: "moduleTriple": "x86_64-apple-ios-macabi"
50+
// CHECK-ZIPPERED: "swiftRuntimeCompatibilityVersion": "5.1"
51+
// CHECK-ZIPPERED: "librariesRequireRPath": false
52+
// CHECK-ZIPPERED: }

0 commit comments

Comments
 (0)