mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-23 00:20:25 +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:
@@ -209,6 +209,13 @@ public:
|
|||||||
return Maj;
|
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
|
/// @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) {
|
void Triple::setTriple(const Twine &Str) {
|
||||||
Data = Str.str();
|
Data = Str.str();
|
||||||
Arch = InvalidArch;
|
Arch = InvalidArch;
|
||||||
|
|||||||
Reference in New Issue
Block a user