forked from OSchip/llvm-project
[Driver] Make sure the deployment target is earlier than iOS 11 when
it is inferred from -isysroot. This fixes a change that was inadvertently introduced in r309607. rdar://problem/32230613 llvm-svn: 309633
This commit is contained in:
parent
410d252f5b
commit
4a94d8d5f7
|
@ -1174,13 +1174,12 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
unsigned Major, Minor, Micro;
|
||||
bool HadExtra;
|
||||
|
||||
// iOS 10 is the maximum deployment target for 32-bit targets.
|
||||
if (iOSVersion && getTriple().isArch32Bit() &&
|
||||
Driver::GetReleaseVersion(iOSVersion->getValue(), Major, Minor, Micro,
|
||||
HadExtra) &&
|
||||
Major > 10)
|
||||
getDriver().Diag(diag::warn_invalid_ios_deployment_target)
|
||||
<< iOSVersion->getAsString(Args);
|
||||
// The iOS deployment target that is explicitly specified via a command line
|
||||
// option or an environment variable.
|
||||
std::string ExplicitIOSDeploymentTargetStr;
|
||||
|
||||
if (iOSVersion)
|
||||
ExplicitIOSDeploymentTargetStr = iOSVersion->getAsString(Args);
|
||||
|
||||
// Add a macro to differentiate between m(iphone|tv|watch)os-version-min=X.Y and
|
||||
// -m(iphone|tv|watch)simulator-version-min=X.Y.
|
||||
|
@ -1223,13 +1222,9 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
if (char *env = ::getenv("WATCHOS_DEPLOYMENT_TARGET"))
|
||||
WatchOSTarget = env;
|
||||
|
||||
// iOS 10 is the maximum deployment target for 32-bit targets.
|
||||
if (!iOSTarget.empty() && getTriple().isArch32Bit() &&
|
||||
Driver::GetReleaseVersion(iOSTarget.c_str(), Major, Minor, Micro,
|
||||
HadExtra) &&
|
||||
Major > 10)
|
||||
getDriver().Diag(diag::warn_invalid_ios_deployment_target)
|
||||
<< std::string("IPHONEOS_DEPLOYMENT_TARGET=") + iOSTarget;
|
||||
if (!iOSTarget.empty())
|
||||
ExplicitIOSDeploymentTargetStr =
|
||||
std::string("IPHONEOS_DEPLOYMENT_TARGET=") + iOSTarget;
|
||||
|
||||
// If there is no command-line argument to specify the Target version and
|
||||
// no environment variable defined, see if we can set the default based
|
||||
|
@ -1298,15 +1293,6 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
break;
|
||||
case llvm::Triple::IOS:
|
||||
getTriple().getiOSVersion(Major, Minor, Micro);
|
||||
|
||||
// iOS 10 is the maximum deployment target for 32-bit targets. If the
|
||||
// inferred deployment target is iOS 11 or later, set it to 10.99.
|
||||
if (getTriple().isArch32Bit() && Major >= 11) {
|
||||
Major = 10;
|
||||
Minor = 99;
|
||||
Micro = 99;
|
||||
}
|
||||
|
||||
OSTarget = &iOSTarget;
|
||||
break;
|
||||
case llvm::Triple::TvOS:
|
||||
|
@ -1402,6 +1388,20 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
HadExtra || Major >= 100 || Minor >= 100 || Micro >= 100)
|
||||
getDriver().Diag(diag::err_drv_invalid_version_number)
|
||||
<< iOSVersion->getAsString(Args);
|
||||
// For 32-bit targets, the deployment target for iOS has to be earlier than
|
||||
// iOS 11.
|
||||
if (getTriple().isArch32Bit() && Major >= 11) {
|
||||
// If the deployment target is explicitly specified, print a diagnostic.
|
||||
if (!ExplicitIOSDeploymentTargetStr.empty()) {
|
||||
getDriver().Diag(diag::warn_invalid_ios_deployment_target)
|
||||
<< ExplicitIOSDeploymentTargetStr;
|
||||
// Otherwise, set it to 10.99.99.
|
||||
} else {
|
||||
Major = 10;
|
||||
Minor = 99;
|
||||
Micro = 99;
|
||||
}
|
||||
}
|
||||
} else if (Platform == TvOS) {
|
||||
if (!Driver::GetReleaseVersion(TvOSVersion->getValue(), Major, Minor,
|
||||
Micro, HadExtra) || HadExtra ||
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
|
||||
// RUN: %clang -target armv7-apple-ios11.1 -c -### %s 2>&1 | \
|
||||
// RUN: FileCheck --check-prefix=CHECK-VERSION-IOS7 %s
|
||||
// RUN: %clang -arch armv7 -isysroot SDKs/iPhoneOS11.0.sdk -c -### %s 2>&1 | \
|
||||
// RUN: FileCheck --check-prefix=CHECK-VERSION-IOS7 %s
|
||||
// CHECK-VERSION-IOS7: thumbv7-apple-ios10.99.99
|
||||
|
||||
// RUN: env IPHONEOS_DEPLOYMENT_TARGET=11.0 \
|
||||
|
|
Loading…
Reference in New Issue