diff options
-rw-r--r-- | lib/Driver/ToolChains.cpp | 15 | ||||
-rw-r--r-- | lib/Driver/ToolChains.h | 4 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 14 |
3 files changed, 20 insertions, 13 deletions
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index deb06720f4..ce4fc1eea3 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -154,6 +154,21 @@ void Darwin::AddLinkSearchPathArgs(const ArgList &Args, "/../../..")); } +void Darwin::getMacosxVersionMin(const ArgList &Args, + unsigned (&Res)[3]) const { + if (Arg *A = Args.getLastArg(options::OPT_mmacosx_version_min_EQ)) { + bool HadExtra; + if (!Driver::GetReleaseVersion(A->getValue(Args), Res[0], Res[1], Res[2], + HadExtra) || + HadExtra) { + const Driver &D = getHost().getDriver(); + D.Diag(clang::diag::err_drv_invalid_version_number) + << A->getAsString(Args); + } + } else + return getMacosxVersion(Res); +} + DerivedArgList *Darwin::TranslateArgs(InputArgList &Args, const char *BoundArch) const { DerivedArgList *DAL = new DerivedArgList(Args, false); diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h index fc32019803..aebc8fae4e 100644 --- a/lib/Driver/ToolChains.h +++ b/lib/Driver/ToolChains.h @@ -91,6 +91,10 @@ public: Res[2] = DarwinVersion[1]; } + /// getMacosxVersionMin - Get the effective -mmacosx-version-min, which is + /// either the -mmacosx-version-min, or the current version if unspecified. + void getMacosxVersionMin(const ArgList &Args, unsigned (&Res)[3]) const; + const char *getMacosxVersionStr() const { return MacosxVersionMin.c_str(); } diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 104d3a3567..ca7baef76d 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1929,19 +1929,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Output.getFilename()); unsigned MacosxVersionMin[3]; - if (Arg *A = Args.getLastArg(options::OPT_mmacosx_version_min_EQ)) { - bool HadExtra; - if (!Driver::GetReleaseVersion(A->getValue(Args), MacosxVersionMin[0], - MacosxVersionMin[1], MacosxVersionMin[2], - HadExtra) || - HadExtra) { - const Driver &D = getToolChain().getHost().getDriver(); - D.Diag(clang::diag::err_drv_invalid_version_number) - << A->getAsString(Args); - } - } else { - getDarwinToolChain().getMacosxVersion(MacosxVersionMin); - } + getDarwinToolChain().getMacosxVersionMin(Args, MacosxVersionMin); if (!Args.hasArg(options::OPT_A) && !Args.hasArg(options::OPT_nostdlib) && |