]> granicus.if.org Git - clang/commitdiff
Driver: Add darwin::Lipo tool.
authorDaniel Dunbar <daniel@zuster.org>
Fri, 20 Mar 2009 00:52:38 +0000 (00:52 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 20 Mar 2009 00:52:38 +0000 (00:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67355 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp
lib/Driver/Tools.h

index 34538114a55da9ae3b35094e4f8c6eb141ca1024..9ac20f9c95261da447c27ed51aa973fe476d37f2 100644 (file)
@@ -298,7 +298,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
       A->render(Args, CmdArgs);
   }
 
-  Args.AddAllArgs(CmdArgs, options::OPT_clang_W_Group, options::OPT_pedantic_Group);
+  Args.AddAllArgs(CmdArgs, options::OPT_clang_W_Group, 
+                  options::OPT_pedantic_Group);
   Args.AddLastArg(CmdArgs, options::OPT_w);
   Args.AddAllArgs(CmdArgs, options::OPT_std_EQ, options::OPT_ansi, 
                   options::OPT_trigraphs);
@@ -437,3 +438,25 @@ void gcc::Link::RenderExtraToolArgs(ArgStringList &CmdArgs) const {
   // The types are (hopefully) good enough.
 }
 
+
+void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA,
+                                Job &Dest,
+                                const InputInfo &Output, 
+                                const InputInfoList &Inputs, 
+                                const ArgList &Args, 
+                                const char *LinkingOutput) const {
+  ArgStringList CmdArgs;
+
+  CmdArgs.push_back("-create");
+  assert(Output.isFilename() && "Unexpected lipo output.");
+  CmdArgs.push_back(Output.getFilename());
+  for (InputInfoList::const_iterator
+         it = Inputs.begin(), ie = Inputs.end(); it != ie; ++it) {
+    const InputInfo &II = *it;
+    assert(II.isFilename() && "Unexpected lipo input.");
+    CmdArgs.push_back(II.getFilename());
+  }
+  const char *Exec = 
+    Args.MakeArgString(getToolChain().GetProgramPath(C, "lipo").c_str());
+  Dest.addCommand(new Command(Exec, CmdArgs));
+}
index a87a7baec5d5476fac3c965a8f254d38f39a24d0..40aa2084da6d405b5ea0f473df4f0e241e533942 100644 (file)
@@ -110,6 +110,24 @@ namespace gcc {
   };
 } // end namespace gcc
 
+namespace darwin {
+  class VISIBILITY_HIDDEN Lipo : public Tool  {
+  public:
+    Lipo(const ToolChain &TC) : Tool("gcc::Link", TC) {}
+
+    virtual bool acceptsPipedInput() const { return false; }
+    virtual bool canPipeOutput() const { return false; }
+    virtual bool hasIntegratedCPP() const { return false; }
+
+    virtual void ConstructJob(Compilation &C, const JobAction &JA,
+                              Job &Dest,
+                              const InputInfo &Output, 
+                              const InputInfoList &Inputs, 
+                              const ArgList &TCArgs, 
+                              const char *LinkingOutput) const;
+  };
+}
+
 } // end namespace toolchains
 } // end namespace driver
 } // end namespace clang