Skip to content

Commit f83fead

Browse files
authored
Merge pull request swiftlang#29485 from nkcsgexi/zippered-linker-directive
TBDGen: also using target variant to decide whether @_originallyDefinedIn is active
2 parents 5428060 + 26c1617 commit f83fead

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lib/AST/Attr.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1360,10 +1360,19 @@ OriginallyDefinedInAttr::isActivePlatform(const ASTContext &ctx) const {
13601360
Result.Platform = Platform;
13611361
Result.Version = MovedVersion;
13621362
Result.ModuleName = OriginalModuleName;
1363-
if (isPlatformActive(Platform, ctx.LangOpts)) {
1363+
if (isPlatformActive(Platform, ctx.LangOpts, /*TargetVariant*/false)) {
13641364
Result.IsSimulator = ctx.LangOpts.Target.isSimulatorEnvironment();
13651365
return Result;
13661366
}
1367+
1368+
// Also check if the platform is active by using target variant. This ensures
1369+
// we emit linker directives for multiple platforms when building zippered
1370+
// libraries.
1371+
if (ctx.LangOpts.TargetVariant.hasValue() &&
1372+
isPlatformActive(Platform, ctx.LangOpts, /*TargetVariant*/true)) {
1373+
Result.IsSimulator = ctx.LangOpts.TargetVariant->isSimulatorEnvironment();
1374+
return Result;
1375+
}
13671376
return None;
13681377
}
13691378

test/TBD/linker-directives-ld-previous-macos.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@
77
// RUN: %target-swift-frontend -typecheck %S/Inputs/linker-directive.swift -emit-tbd -emit-tbd-path %t/linker_directives.tbd -previous-module-installname-map-file %S/Inputs/install-name-map-toasterkit.json
88
// RUN: %FileCheck %s < %t/linker_directives.tbd
99

10+
// RUN: %target-swift-frontend -target-variant x86_64-apple-ios13.0-macabi -typecheck %S/Inputs/linker-directive.swift -emit-tbd -emit-tbd-path %t/linker_directives.tbd -previous-module-installname-map-file %S/Inputs/install-name-map-toasterkit.json
11+
// RUN: %FileCheck -check-prefix=CHECK-ZIPPERED %s < %t/linker_directives.tbd
12+
1013
// CHECK: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit5toastyyF$
1114
// CHECK: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleV4moveyyF$
1215
// CHECK: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVMa$
1316
// CHECK: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVMn$
14-
// CHECK: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVN$
17+
// CHECK: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVN$
18+
19+
// CHECK-ZIPPERED: $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$13.0$_$s10ToasterKit5toastyyF$
20+
// CHECK-ZIPPERED: $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit5toastyyF$

0 commit comments

Comments
 (0)