diff options
-rw-r--r-- | include/clang/Driver/Driver.h | 3 | ||||
-rw-r--r-- | lib/Driver/Driver.cpp | 7 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 4 |
3 files changed, 12 insertions, 2 deletions
diff --git a/include/clang/Driver/Driver.h b/include/clang/Driver/Driver.h index 2843c2b317..8c6c9f33fc 100644 --- a/include/clang/Driver/Driver.h +++ b/include/clang/Driver/Driver.h @@ -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; diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index b59768d1d0..6cb554a15f 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -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")) { diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index b8c07cc7a7..ab8caf69da 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -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)); } |