[NFC] simplify Darwin environment handling

The previous code detected conflicts through copy-pasta, this versions
uses a 'loop'.

llvm-svn: 367350
This commit is contained in:
JF Bastien 2019-07-30 20:01:46 +00:00
parent f3983cc14a
commit 42c9f3c911
1 changed files with 12 additions and 16 deletions

View File

@ -1480,22 +1480,6 @@ getDeploymentTargetFromEnvironmentVariables(const Driver &TheDriver,
Targets[I.index()] = Env;
}
// Do not allow conflicts with the watchOS target.
if (!Targets[Darwin::WatchOS].empty() &&
(!Targets[Darwin::IPhoneOS].empty() || !Targets[Darwin::TvOS].empty())) {
TheDriver.Diag(diag::err_drv_conflicting_deployment_targets)
<< "WATCHOS_DEPLOYMENT_TARGET"
<< (!Targets[Darwin::IPhoneOS].empty() ? "IPHONEOS_DEPLOYMENT_TARGET"
: "TVOS_DEPLOYMENT_TARGET");
}
// Do not allow conflicts with the tvOS target.
if (!Targets[Darwin::TvOS].empty() && !Targets[Darwin::IPhoneOS].empty()) {
TheDriver.Diag(diag::err_drv_conflicting_deployment_targets)
<< "TVOS_DEPLOYMENT_TARGET"
<< "IPHONEOS_DEPLOYMENT_TARGET";
}
// Allow conflicts among OSX and iOS for historical reasons, but choose the
// default platform.
if (!Targets[Darwin::MacOS].empty() &&
@ -1508,6 +1492,18 @@ getDeploymentTargetFromEnvironmentVariables(const Driver &TheDriver,
else
Targets[Darwin::IPhoneOS] = Targets[Darwin::WatchOS] =
Targets[Darwin::TvOS] = "";
} else {
// Don't allow conflicts in any other platform.
int FirstTarget = llvm::array_lengthof(Targets);
for (int I = 0; I != llvm::array_lengthof(Targets); ++I) {
if (Targets[I].empty())
continue;
if (FirstTarget == llvm::array_lengthof(Targets))
FirstTarget = I;
else
TheDriver.Diag(diag::err_drv_conflicting_deployment_targets)
<< Targets[FirstTarget] << Targets[I];
}
}
for (const auto &Target : llvm::enumerate(llvm::makeArrayRef(Targets))) {