mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 04:32:19 +00:00
Add Triple::getMacOSXVersion to replace crufty code in the clang driver.
This new function provides a way to get the Mac OS X version number from either generic "darwin" triples of macosx triples. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149438 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ed2d17b2d4
commit
bda59fdd71
@ -209,6 +209,13 @@ public:
|
||||
return Maj;
|
||||
}
|
||||
|
||||
/// getMacOSXVersion - Parse the version number as with getOSVersion and then
|
||||
/// translate generic "darwin" versions to the corresponding OS X versions.
|
||||
/// This may also be called with IOS triples but the OS X version number is
|
||||
/// just set to a constant 10.4.0 in that case. Returns true if successful.
|
||||
bool getMacOSXVersion(unsigned &Major, unsigned &Minor,
|
||||
unsigned &Micro) const;
|
||||
|
||||
/// @}
|
||||
/// @name Direct Component Access
|
||||
/// @{
|
||||
|
@ -613,6 +613,45 @@ void Triple::getOSVersion(unsigned &Major, unsigned &Minor,
|
||||
}
|
||||
}
|
||||
|
||||
bool Triple::getMacOSXVersion(unsigned &Major, unsigned &Minor,
|
||||
unsigned &Micro) const {
|
||||
getOSVersion(Major, Minor, Micro);
|
||||
|
||||
switch (getOS()) {
|
||||
default: assert(0 && "unexpected OS for Darwin triple");
|
||||
case Darwin:
|
||||
// Default to darwin8, i.e., MacOSX 10.4.
|
||||
if (Major == 0)
|
||||
Major = 8;
|
||||
// Darwin version numbers are skewed from OS X versions.
|
||||
if (Major < 4)
|
||||
return false;
|
||||
Micro = 0;
|
||||
Minor = Major - 4;
|
||||
Major = 10;
|
||||
break;
|
||||
case MacOSX:
|
||||
// Default to 10.4.
|
||||
if (Major == 0) {
|
||||
Major = 10;
|
||||
Minor = 4;
|
||||
}
|
||||
if (Major != 10)
|
||||
return false;
|
||||
break;
|
||||
case IOS:
|
||||
// Ignore the version from the triple. This is only handled because the
|
||||
// the clang driver combines OS X and IOS support into a common Darwin
|
||||
// toolchain that wants to know the OS X version number even when targeting
|
||||
// IOS.
|
||||
Major = 10;
|
||||
Minor = 4;
|
||||
Micro = 0;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void Triple::setTriple(const Twine &Str) {
|
||||
Data = Str.str();
|
||||
Arch = InvalidArch;
|
||||
|
Loading…
x
Reference in New Issue
Block a user