summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-09-30 01:00:25 +0000
committerChris Lattner <sabre@nondot.org>2008-09-30 01:00:25 +0000
commitb3793bb415430eedbee2f3c26c40529b9232d390 (patch)
tree08aa4d8801d3c149d92c05e5bd5bfb482e4abf00 /clang
parent6ebe734ca65acece2b77af630c87a094e4a711c5 (diff)
downloadbcm5719-llvm-b3793bb415430eedbee2f3c26c40529b9232d390.tar.gz
bcm5719-llvm-b3793bb415430eedbee2f3c26c40529b9232d390.zip
The definition of __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ follows
the target triple on darwin. For example i386-apple-darwin9 -> 1050 because darwin9 is "10.5". llvm-svn: 56826
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Basic/Targets.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 2625da2e4da..c14588889b5 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -39,10 +39,24 @@ static void getSolarisDefines(std::vector<char> &Defs) {
Define(Defs, "__SOLARIS__");
}
-static void getDarwinDefines(std::vector<char> &Defs) {
+static void getDarwinDefines(std::vector<char> &Defs, const char *Triple) {
Define(Defs, "__APPLE__");
Define(Defs, "__MACH__");
- Define(Defs, "__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__", "1050");
+
+ // Figure out which "darwin number" the target triple is. "darwin9" -> 10.5.
+ const char *Darwin = strstr(Triple, "-darwin");
+ if (Darwin) {
+ Darwin += strlen("-darwin");
+ if (Darwin[0] >= '1' && Darwin[0] <= '9') {
+ unsigned DarwinNo = atoi(Darwin);
+ if (DarwinNo > 4) {
+ char DarwinStr[] = "10x0";
+ // darwin7 -> 1030, darwin8 -> 1040, darwin9 -> 1050, etc.
+ DarwinStr[2] = '0' + DarwinNo-4;
+ Define(Defs, "__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__",DarwinStr);
+ }
+ }
+ }
}
static void getDragonFlyDefines(std::vector<char> &Defs) {
@@ -509,7 +523,7 @@ public:
DarwinPPCTargetInfo(const std::string& triple) : PPC32TargetInfo(triple) {}
virtual void getTargetDefines(std::vector<char> &Defines) const {
PPC32TargetInfo::getTargetDefines(Defines);
- getDarwinDefines(Defines);
+ getDarwinDefines(Defines, getTargetTriple());
}
virtual bool useNeXTRuntimeAsDefault() const { return true; }
@@ -522,7 +536,7 @@ public:
DarwinPPC64TargetInfo(const std::string& triple) : PPC64TargetInfo(triple) {}
virtual void getTargetDefines(std::vector<char> &Defines) const {
PPC64TargetInfo::getTargetDefines(Defines);
- getDarwinDefines(Defines);
+ getDarwinDefines(Defines, getTargetTriple());
}
virtual bool useNeXTRuntimeAsDefault() const { return true; }
@@ -668,7 +682,7 @@ public:
}
virtual void getTargetDefines(std::vector<char> &Defines) const {
X86_32TargetInfo::getTargetDefines(Defines);
- getDarwinDefines(Defines);
+ getDarwinDefines(Defines, getTargetTriple());
}
virtual bool useNeXTRuntimeAsDefault() const { return true; }
};
@@ -777,7 +791,7 @@ public:
virtual void getTargetDefines(std::vector<char> &Defines) const {
X86_64TargetInfo::getTargetDefines(Defines);
- getDarwinDefines(Defines);
+ getDarwinDefines(Defines, getTargetTriple());
}
virtual bool useNeXTRuntimeAsDefault() const { return true; }
@@ -848,7 +862,7 @@ public:
virtual void getTargetDefines(std::vector<char> &Defines) const {
ARMTargetInfo::getTargetDefines(Defines);
- getDarwinDefines(Defines);
+ getDarwinDefines(Defines, getTargetTriple());
}
};
} // end anonymous namespace.
OpenPOWER on IntegriCloud