diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-07-19 17:11:36 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-07-19 17:11:36 +0000 |
commit | 60baf0f6d54376805168d49fa68628f801f95ef9 (patch) | |
tree | 20ba2f23f56428930247a85923ffc28d6227adbc /lib/Driver/ToolChains.cpp | |
parent | c0e665eb705762f95cd4f722ad7ecbdcde3f4527 (diff) |
Driver/Darwin: Add deployment target after doing argument translation, so that
-mmacosx-version-min works inside a -Xarch_ flag.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108712 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/ToolChains.cpp')
-rw-r--r-- | lib/Driver/ToolChains.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index dddb1d93c6..1957f248fe 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -415,8 +415,7 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args, } } -void Darwin::AddDeploymentTarget(const DerivedArgList &Args, - DerivedArgList *DAL) const { +void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { const OptTable &Opts = getDriver().getOpts(); Arg *OSXVersion = Args.getLastArg(options::OPT_mmacosx_version_min_EQ); @@ -454,17 +453,17 @@ void Darwin::AddDeploymentTarget(const DerivedArgList &Args, if (OSXTarget) { const Option *O = Opts.getOption(options::OPT_mmacosx_version_min_EQ); - OSXVersion = DAL->MakeJoinedArg(0, O, OSXTarget); - DAL->append(OSXVersion); + OSXVersion = Args.MakeJoinedArg(0, O, OSXTarget); + Args.append(OSXVersion); } else if (iPhoneOSTarget) { const Option *O = Opts.getOption(options::OPT_miphoneos_version_min_EQ); - iPhoneVersion = DAL->MakeJoinedArg(0, O, iPhoneOSTarget); - DAL->append(iPhoneVersion); + iPhoneVersion = Args.MakeJoinedArg(0, O, iPhoneOSTarget); + Args.append(iPhoneVersion); } else { // Otherwise, assume we are targeting OS X. const Option *O = Opts.getOption(options::OPT_mmacosx_version_min_EQ); - OSXVersion = DAL->MakeJoinedArg(0, O, MacosxVersionMin); - DAL->append(OSXVersion); + OSXVersion = Args.MakeJoinedArg(0, O, MacosxVersionMin); + Args.append(OSXVersion); } } @@ -500,7 +499,6 @@ DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args, // purpose of easily achieving feature parity & testability. Once we // have something that works, we should reevaluate each translation // and try to push it down into tool specific logic. - AddDeploymentTarget(Args, DAL); for (ArgList::const_iterator it = Args.begin(), ie = Args.end(); it != ie; ++it) { @@ -679,6 +677,11 @@ DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args, llvm_unreachable("invalid Darwin arch"); } + // Add an explicit version min argument for the deployment target. We do this + // after argument translation because -Xarch_ arguments may add a version min + // argument. + AddDeploymentTarget(*DAL); + return DAL; } |