aboutsummaryrefslogtreecommitdiff
path: root/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-01-26 01:45:19 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-01-26 01:45:19 +0000
commit816bc31ed45002de2547d6679b44f31eb85ec491 (patch)
treeb012fbf313afbb13b281e9b070e0ed96e5bfad64 /lib/Driver/ToolChains.cpp
parent21ae3196c9677a79523d294f9a62a4788ba40694 (diff)
Driver/Darwin: Honor IPHONEOS_DEPLOYMENT_TARGET.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94488 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/ToolChains.cpp')
-rw-r--r--lib/Driver/ToolChains.cpp44
1 files changed, 30 insertions, 14 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index a9c6a68ceb..355dbe4052 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -403,22 +403,38 @@ DerivedArgList *Darwin::TranslateArgs(InputArgList &Args,
<< OSXVersion->getAsString(Args)
<< iPhoneVersion->getAsString(Args);
} else if (!OSXVersion && !iPhoneVersion) {
- // Chose the default version based on the arch.
- //
- // FIXME: Are there iPhone overrides for this?
-
- if (!isIPhoneOS()) {
- // Look for MACOSX_DEPLOYMENT_TARGET, otherwise use the version
- // from the host.
- const char *Version = ::getenv("MACOSX_DEPLOYMENT_TARGET");
- if (!Version)
- Version = MacosxVersionMin.c_str();
+ // If neither OS X nor iPhoneOS targets were specified, check for
+ // environment defines.
+ const char *OSXTarget = ::getenv("MACOSX_DEPLOYMENT_TARGET");
+ const char *iPhoneOSTarget = ::getenv("IPHONEOS_DEPLOYMENT_TARGET");
+
+ // Ignore empty strings.
+ if (OSXTarget && OSXTarget[0] == '\0')
+ OSXTarget = 0;
+ if (iPhoneOSTarget && iPhoneOSTarget[0] == '\0')
+ iPhoneOSTarget = 0;
+
+ if (OSXTarget && iPhoneOSTarget) {
+ getDriver().Diag(clang::diag::err_drv_conflicting_deployment_targets)
+ << OSXTarget << iPhoneOSTarget;
+ } else if (OSXTarget) {
const Option *O = Opts.getOption(options::OPT_mmacosx_version_min_EQ);
- DAL->append(DAL->MakeJoinedArg(0, O, Version));
- } else {
- const char *Version = IPhoneOSVersionMin.c_str();
+ DAL->append(DAL->MakeJoinedArg(0, O, OSXTarget));
+ } else if (iPhoneOSTarget) {
const Option *O = Opts.getOption(options::OPT_miphoneos_version_min_EQ);
- DAL->append(DAL->MakeJoinedArg(0, O, Version));
+ DAL->append(DAL->MakeJoinedArg(0, O, iPhoneOSTarget));
+ } else {
+ // Otherwise, choose the default version based on the toolchain.
+
+ // FIXME: This is confusing it should be more explicit what the default
+ // target is.
+ if (isIPhoneOS()) {
+ const Option *O = Opts.getOption(options::OPT_miphoneos_version_min_EQ);
+ DAL->append(DAL->MakeJoinedArg(0, O, IPhoneOSVersionMin));
+ } else {
+ const Option *O = Opts.getOption(options::OPT_mmacosx_version_min_EQ);
+ DAL->append(DAL->MakeJoinedArg(0, O, MacosxVersionMin));
+ }
}
}