[Apple Silicon] [macCatalyst] Baseline arm64(e) macCatalyst at Swift 5.3/iOS 14.0.

This commit is contained in:
Mishal Shah
2020-07-02 18:28:33 -07:00
parent 0c2617f47a
commit 3c9e72f6e1
5 changed files with 47 additions and 0 deletions

View File

@@ -252,6 +252,10 @@ AvailabilityContext ASTContext::getSwift50Availability() {
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(10,14,4)));
} else if (target.isiOS()) {
if (target.isAArch64() &&
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
return AvailabilityContext::alwaysAvailable();
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(12,2)));
} else if (target.isWatchOS()) {
@@ -283,6 +287,10 @@ AvailabilityContext ASTContext::getSwift51Availability() {
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(10,15,0)));
} else if (target.isiOS()) {
if (target.isAArch64() &&
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
return AvailabilityContext::alwaysAvailable();
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(13,0,0)));
} else if (target.isWatchOS()) {
@@ -323,6 +331,10 @@ AvailabilityContext ASTContext::getSwift52Availability() {
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
} else if (target.isiOS()) {
if (target.isAArch64() &&
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
return AvailabilityContext::alwaysAvailable();
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
} else if (target.isWatchOS()) {
@@ -346,6 +358,10 @@ AvailabilityContext ASTContext::getSwift53Availability() {
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
} else if (target.isiOS()) {
if (target.isAArch64() &&
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
return AvailabilityContext::alwaysAvailable();
return AvailabilityContext(
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
} else if (target.isWatchOS()) {

View File

@@ -402,6 +402,13 @@ swift::getSwiftRuntimeCompatibilityVersionForTarget(
}
} else if (Triple.isiOS()) { // includes tvOS
Triple.getiOSVersion(Major, Minor, Micro);
// arm64 simulators and macCatalyst are introduced in iOS 14.0/tvOS 14.0
// with Swift 5.3
if (Triple.isAArch64() && Major <= 14 &&
(Triple.isSimulatorEnvironment() || Triple.isMacCatalystEnvironment()))
return llvm::VersionTuple(5, 3);
if (Major <= 12) {
return llvm::VersionTuple(5, 0);
} else if (Major <= 13) {

View File

@@ -591,6 +591,14 @@ toolchains::Darwin::addDeploymentTargetArgs(ArgStringList &Arguments,
if (tripleIsMacCatalystEnvironment(triple)) {
triple.getiOSVersion(major, minor, micro);
// Mac Catalyst on arm was introduced with an iOS deployment target of
// 14.0; the linker doesn't want to see a deployment target before that.
if (major < 14 && triple.isAArch64()) {
major = 14;
minor = 0;
micro = 0;
}
// Mac Catalyst was introduced with an iOS deployment target of 13.0;
// the linker doesn't want to see a deployment target before that.
if (major < 13) {

View File

@@ -34,6 +34,9 @@
// IOS12-MACABI-DAG: -rpath [[MACOSX_SDK_STDLIB_PATH]]
// IOS12-MACABI-DAG: -platform_version mac-catalyst 13.0.0 0.0.0
// RUN: %swiftc_driver -driver-print-jobs -target arm64-apple-ios12.0-macabi -sdk %S/../Inputs/clang-importer-sdk %s | %FileCheck -check-prefix=IOS14-MACABI %s
// IOS14-MACABI: -platform_version mac-catalyst 14.0.0 0.0.0
// Test using target-variant to build zippered outputs
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -c -target x86_64-apple-macosx10.14 -target-variant x86_64-apple-ios13.0-macabi %s | %FileCheck -check-prefix=ZIPPERED-VARIANT-OBJECT %s

View File

@@ -0,0 +1,13 @@
// REQUIRES: CPU=arm64,OS=maccatalyst
// Doesn't autolink compatibility library because target OS doesn't need it
// RUN: %target-swift-frontend -target arm64-apple-ios12.0-macabi -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
public func foo() {}
// NO-FORCE-LOAD-NOT: FORCE_LOAD
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility50"}
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility51"}
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility52"}
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility53"}
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibilityDynamicReplacements"}