]> granicus.if.org Git - clang/commitdiff
Driver: Allow -ccc-gcc-name to specify the name/path to use when
authorDaniel Dunbar <daniel@zuster.org>
Wed, 1 Apr 2009 23:34:41 +0000 (23:34 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 1 Apr 2009 23:34:41 +0000 (23:34 +0000)
calling gcc in generic configurations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68260 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Driver.h
lib/Driver/Driver.cpp
lib/Driver/Tools.cpp

index 2843c2b317278807930a813dfb933ffe07066e99..8c6c9f33fcec35e181e93b1081fb63a24ddff635 100644 (file)
@@ -78,6 +78,9 @@ public:
   /// Only print tool bindings, don't build any jobs.
   bool CCCPrintBindings : 1;
 
+  /// Name to use when calling the generic gcc.
+  std::string CCCGenericGCCName;
+
 private:
   /// Use the clang compiler where possible.
   bool CCCUseClang : 1;
index b59768d1d0cf030286ff7548d8e2b5ecfe8a778c..6cb554a15f193630ba950eb68ae515237e51afea 100644 (file)
@@ -44,7 +44,8 @@ Driver::Driver(const char *_Name, const char *_Dir,
     DefaultImageName(_DefaultImageName),
     Host(0),
     CCCIsCXX(false), CCCEcho(false), CCCPrintBindings(false),
-    CCCUseClang(true), CCCUseClangCXX(false), CCCUseClangCPP(true),
+    CCCGenericGCCName("gcc"), CCCUseClang(true), CCCUseClangCXX(false), 
+    CCCUseClangCPP(true),
     SuppressMissingInputWarning(false)
 {
   // Only use clang on i386 and x86_64 by default.
@@ -137,6 +138,10 @@ Compilation *Driver::BuildCompilation(int argc, const char **argv) {
     } else if (!strcmp(Opt, "echo")) {
       CCCEcho = true;
       
+    } else if (!strcmp(Opt, "gcc-name")) {
+      assert(Start+1 < End && "FIXME: -ccc- argument handling.");
+      CCCGenericGCCName = *++Start;
+
     } else if (!strcmp(Opt, "clang-cxx")) {
       CCCUseClangCXX = true;
     } else if (!strcmp(Opt, "no-clang")) {
index b8c07cc7a7913e2ba68ecd1d1864d2e115da798c..ab8caf69da87e15ce4b980bb0fc318dbecf254f0 100644 (file)
@@ -500,8 +500,10 @@ void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA,
       II.getInputArg().render(Args, CmdArgs);
   }
 
+  const char *GCCName = 
+    getToolChain().getHost().getDriver().CCCGenericGCCName.c_str();
   const char *Exec = 
-    Args.MakeArgString(getToolChain().GetProgramPath(C, "gcc").c_str());
+    Args.MakeArgString(getToolChain().GetProgramPath(C, GCCName).c_str());
   Dest.addCommand(new Command(Exec, CmdArgs));
 }