]> granicus.if.org Git - clang/commitdiff
Driver: Factor out Darwin::AddDeploymentTarget.
authorDaniel Dunbar <daniel@zuster.org>
Mon, 19 Jul 2010 17:11:33 +0000 (17:11 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 19 Jul 2010 17:11:33 +0000 (17:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108711 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains.cpp
lib/Driver/ToolChains.h

index a78d1536fa1eafb94e2cf86b276a459d734fd6a9..dddb1d93c6f502becfe336dbf6e2d4c33ab0c504 100644 (file)
@@ -415,18 +415,10 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
   }
 }
 
-DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args,
-                                      const char *BoundArch) const {
-  DerivedArgList *DAL = new DerivedArgList(Args.getBaseArgs());
+void Darwin::AddDeploymentTarget(const DerivedArgList &Args,
+                                 DerivedArgList *DAL) const {
   const OptTable &Opts = getDriver().getOpts();
 
-  // FIXME: We really want to get out of the tool chain level argument
-  // translation business, as it makes the driver functionality much
-  // more opaque. For now, we follow gcc closely solely for the
-  // 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.
-
   Arg *OSXVersion = Args.getLastArg(options::OPT_mmacosx_version_min_EQ);
   Arg *iPhoneVersion = Args.getLastArg(options::OPT_miphoneos_version_min_EQ);
   if (OSXVersion && iPhoneVersion) {
@@ -495,6 +487,20 @@ DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args,
         << iPhoneVersion->getAsString(Args);
   }
   setTarget(iPhoneVersion, Major, Minor, Micro);
+}
+
+DerivedArgList *Darwin::TranslateArgs(const DerivedArgList &Args,
+                                      const char *BoundArch) const {
+  DerivedArgList *DAL = new DerivedArgList(Args.getBaseArgs());
+  const OptTable &Opts = getDriver().getOpts();
+
+  // FIXME: We really want to get out of the tool chain level argument
+  // translation business, as it makes the driver functionality much
+  // more opaque. For now, we follow gcc closely solely for the
+  // 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) {
index 4bdd00fc2583484f5df8b1011bee5cc57fe2f9eb..a933553f46b56eb6f8d7ee4c67d18e7353b4c5ac 100644 (file)
@@ -61,6 +61,10 @@ class LLVM_LIBRARY_VISIBILITY Darwin : public ToolChain {
   /// initialized.
   std::string MacosxVersionMin;
 
+private:
+  void AddDeploymentTarget(const DerivedArgList &Args,
+                           DerivedArgList *DAL) const;
+
 public:
   Darwin(const HostInfo &Host, const llvm::Triple& Triple,
          const unsigned (&DarwinVersion)[3]);