aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-04-01 23:34:41 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-04-01 23:34:41 +0000
commit78d8a089c8f124ba6f47bb37e2c4a36986f60e23 (patch)
treef1e88b9658d1c44d560bf77954d1209b15a4b936
parent22b6e0682d69173b4282853aded2f9253f3e2c15 (diff)
Driver: Allow -ccc-gcc-name to specify the name/path to use when
calling gcc in generic configurations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68260 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Driver/Driver.h3
-rw-r--r--lib/Driver/Driver.cpp7
-rw-r--r--lib/Driver/Tools.cpp4
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));
}