forked from OSchip/llvm-project
Driver/Darwin: Allow OS X deployment targets like 10.4.11, even though they
can't be represented in the environment define. llvm-svn: 129939
This commit is contained in:
parent
2266aa84a1
commit
bbd482226e
|
@ -135,7 +135,7 @@ static void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
|
|||
|
||||
// Set the appropriate OS version define.
|
||||
if (PlatformName == "ios") {
|
||||
assert(Maj < 10 && Min < 99 && Rev < 99 && "Invalid version!");
|
||||
assert(Maj < 10 && Min < 100 && Rev < 100 && "Invalid version!");
|
||||
char Str[6];
|
||||
Str[0] = '0' + Maj;
|
||||
Str[1] = '0' + (Min / 10);
|
||||
|
@ -145,13 +145,17 @@ static void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
|
|||
Str[5] = '\0';
|
||||
Builder.defineMacro("__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__", Str);
|
||||
} else {
|
||||
// Note that the Driver allows versions which aren't representable in the
|
||||
// define (because we only get a single digit for the minor and micro
|
||||
// revision numbers). So, we limit them to the maximum representable
|
||||
// version.
|
||||
assert(Triple.getEnvironmentName().empty() && "Invalid environment!");
|
||||
assert(Maj < 99 && Min < 10 && Rev < 10 && "Invalid version!");
|
||||
assert(Maj < 100 && Min < 100 && Rev < 100 && "Invalid version!");
|
||||
char Str[5];
|
||||
Str[0] = '0' + (Maj / 10);
|
||||
Str[1] = '0' + (Maj % 10);
|
||||
Str[2] = '0' + Min;
|
||||
Str[3] = '0' + Rev;
|
||||
Str[2] = '0' + std::min(Min, 9U);
|
||||
Str[3] = '0' + std::min(Rev, 9U);
|
||||
Str[4] = '\0';
|
||||
Builder.defineMacro("__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__", Str);
|
||||
}
|
||||
|
|
|
@ -441,7 +441,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
|
|||
assert(!iPhoneVersion && "Unknown target platform!");
|
||||
if (!Driver::GetReleaseVersion(OSXVersion->getValue(Args), Major, Minor,
|
||||
Micro, HadExtra) || HadExtra ||
|
||||
Major != 10 || Minor >= 10 || Micro >= 10)
|
||||
Major != 10 || Minor >= 100 || Micro >= 100)
|
||||
getDriver().Diag(clang::diag::err_drv_invalid_version_number)
|
||||
<< OSXVersion->getAsString(Args);
|
||||
} else {
|
||||
|
|
|
@ -21,3 +21,11 @@
|
|||
#error Invalid version
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// RUN: env MACOSX_DEPLOYMENT_TARGET=10.4.10 \
|
||||
// RUN: %clang -ccc-host-triple i386-apple-darwin9 -DTEST3 -E %s
|
||||
#ifdef TEST3
|
||||
#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1049
|
||||
#error Invalid version
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue