Revert r305678: [driver][macOS] Pick the system version for the

deployment target if the SDK is newer than the system

This commit also reverts follow-up commits r305680 and r305685 that have
buildbot fixes.

The change in r305678 wasn't correct because it relied on
`llvm::sys::getProcessTriple`, which uses a pre-configured OS version. We should
lookup the actual macOS version of the system on which the compiler is running.

llvm-svn: 305891
This commit is contained in:
Alex Lorenz 2017-06-21 10:27:24 +00:00
parent 200b328972
commit 71d72135b0
2 changed files with 1 additions and 32 deletions

View File

@ -1118,27 +1118,6 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
}
}
/// Returns the most appropriate macOS target version for the current process.
///
/// If the macOS SDK version is the same or earlier than the system version,
/// then the SDK version is returned. Otherwise the system version is returned.
static std::string getSystemOrSDKMacOSVersion(StringRef MacOSSDKVersion) {
unsigned Major, Minor, Micro;
llvm::Triple SystemTriple(llvm::sys::getProcessTriple());
if (!SystemTriple.isMacOSX())
return MacOSSDKVersion;
SystemTriple.getMacOSXVersion(Major, Minor, Micro);
VersionTuple SystemVersion(Major, Minor, Micro);
bool HadExtra;
if (!Driver::GetReleaseVersion(MacOSSDKVersion, Major, Minor, Micro,
HadExtra))
return MacOSSDKVersion;
VersionTuple SDKVersion(Major, Minor, Micro);
if (SDKVersion > SystemVersion)
return SystemVersion.getAsString();
return MacOSSDKVersion;
}
void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
const OptTable &Opts = getDriver().getOpts();
@ -1231,7 +1210,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
SDK.startswith("iPhoneSimulator"))
iOSTarget = Version;
else if (SDK.startswith("MacOSX"))
OSXTarget = getSystemOrSDKMacOSVersion(Version);
OSXTarget = Version;
else if (SDK.startswith("WatchOS") ||
SDK.startswith("WatchSimulator"))
WatchOSTarget = Version;

View File

@ -1,10 +0,0 @@
// REQUIRES: system-darwin
// Ensure that we never pick a version that's based on the SDK that's newer than
// the system version:
// RUN: rm -rf %t/SDKs/MacOSX10.99.99.sdk
// RUN: mkdir -p %t/SDKs/MacOSX10.99.99.sdk
// RUN: %clang -target x86_64-apple-darwin -isysroot %t/SDKs/MacOSX10.99.99.sdk %s -### 2>&1 \
// RUN: | FileCheck --check-prefix=CHECK-MACOSX-SYSTEM-VERSION %s
// CHECK-MACOSX-SYSTEM-VERSION-NOT: 10.99.99"