aboutsummaryrefslogtreecommitdiff
path: root/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-09-30 20:30:12 +0000
committerChris Lattner <sabre@nondot.org>2008-09-30 20:30:12 +0000
commit079f2c467d4893a80bf0dc5344505725f42ceb87 (patch)
treed678917b857763904c6c82fa446b349af5e280ac /lib/Basic/Targets.cpp
parentba0f25f754184e5260e3317c10c389a108f73421 (diff)
Handle minor version numbers in __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
like "10.3.9" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@56873 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/Targets.cpp')
-rw-r--r--lib/Basic/Targets.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 382bba0e71..4d3c6b3602 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -17,8 +17,6 @@
#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/APFloat.h"
-#include <cstdlib>
-
using namespace clang;
//===----------------------------------------------------------------------===//
@@ -47,16 +45,30 @@ static void getDarwinDefines(std::vector<char> &Defs, const char *Triple) {
// Figure out which "darwin number" the target triple is. "darwin9" -> 10.5.
const char *Darwin = strstr(Triple, "-darwin");
if (Darwin) {
+ char DarwinStr[] = "1000";
Darwin += strlen("-darwin");
- if (Darwin[0] >= '1' && Darwin[0] <= '9') {
- unsigned DarwinNo = atoi(Darwin);
- if (DarwinNo > 4) {
- char DarwinStr[] = "10x0";
+ if (Darwin[0] >= '0' && Darwin[0] <= '9') {
+ unsigned DarwinNo = Darwin[0]-'0';
+ ++Darwin;
+
+ // Handle "darwin11".
+ if (DarwinNo == 1 && Darwin[0] >= '0' && Darwin[0] <= '9') {
+ DarwinNo = 10+Darwin[0]-'0';
+ ++Darwin;
+ }
+
+ if (DarwinNo >= 4 && DarwinNo <= 13) { // 10.0-10.9
// darwin7 -> 1030, darwin8 -> 1040, darwin9 -> 1050, etc.
DarwinStr[2] = '0' + DarwinNo-4;
- Define(Defs, "__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__",DarwinStr);
}
+
+ // Handle minor version: 10.4.9 -> darwin8.9 -> "1049"
+ if (Darwin[0] == '.' && Darwin[1] >= '0' && Darwin[1] <= '9' &&
+ Darwin[2] == '\0')
+ DarwinStr[3] = Darwin[1];
+
}
+ Define(Defs, "__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__", DarwinStr);
}
}