diff options
Diffstat (limited to 'clang/lib/Driver')
| -rw-r--r-- | clang/lib/Driver/Driver.cpp | 5 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 55 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.h | 30 |
3 files changed, 88 insertions, 2 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index b41c2fa96e6..a3cd55fe5f5 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -706,7 +706,7 @@ void Driver::BuildJobsForAction(Compilation &C, // Only use pipes when there is exactly one input. bool TryToUsePipeInput = Inputs->size() == 1 && T.acceptsPipedInput(); - llvm::SmallVector<InputInfo, 4> InputInfos; + InputInfoList InputInfos; for (ActionList::const_iterator it = Inputs->begin(), ie = Inputs->end(); it != ie; ++it) { InputInfo II; @@ -768,7 +768,8 @@ void Driver::BuildJobsForAction(Compilation &C, } llvm::errs() << "], output: " << Result.getAsString() << "\n"; } else { - assert(0 && "FIXME: Make the job."); + const ArgList &TCArgs = C.getArgsForToolChain(TC); + T.ConstructJob(C, *JA, Result, InputInfos, TCArgs, LinkingOutput); } } diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp new file mode 100644 index 00000000000..f849c2beac2 --- /dev/null +++ b/clang/lib/Driver/Tools.cpp @@ -0,0 +1,55 @@ +//===--- Tools.cpp - Tools Implementations ------------------------------*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "Tools.h" + +using namespace clang::driver; +using namespace clang::driver::tools; + +void Clang::ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const { + +} + +void gcc::Preprocess::ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const { + +} + +void gcc::Precompile::ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const { + +} + +void gcc::Compile::ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const { + +} + +void gcc::Assemble::ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const { + +} + +void gcc::Link::ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const { + +} diff --git a/clang/lib/Driver/Tools.h b/clang/lib/Driver/Tools.h index 6aaa04051f0..da9d3e2ea5a 100644 --- a/clang/lib/Driver/Tools.h +++ b/clang/lib/Driver/Tools.h @@ -25,6 +25,11 @@ namespace tools { virtual bool acceptsPipedInput() const { return true; } virtual bool canPipeOutput() const { return true; } virtual bool hasIntegratedCPP() const { return true; } + + virtual void ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const; }; /// gcc - Generic GCC tool implementations. @@ -36,6 +41,11 @@ namespace gcc { virtual bool acceptsPipedInput() const { return true; } virtual bool canPipeOutput() const { return true; } virtual bool hasIntegratedCPP() const { return false; } + + virtual void ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const; }; class VISIBILITY_HIDDEN Precompile : public Tool { @@ -45,6 +55,11 @@ namespace gcc { virtual bool acceptsPipedInput() const { return true; } virtual bool canPipeOutput() const { return false; } virtual bool hasIntegratedCPP() const { return true; } + + virtual void ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const; }; class VISIBILITY_HIDDEN Compile : public Tool { @@ -54,6 +69,11 @@ namespace gcc { virtual bool acceptsPipedInput() const { return true; } virtual bool canPipeOutput() const { return true; } virtual bool hasIntegratedCPP() const { return true; } + + virtual void ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const; }; class VISIBILITY_HIDDEN Assemble : public Tool { @@ -63,6 +83,11 @@ namespace gcc { virtual bool acceptsPipedInput() const { return true; } virtual bool canPipeOutput() const { return false; } virtual bool hasIntegratedCPP() const { return false; } + + virtual void ConstructJob(Compilation &C, const JobAction &JA, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const; }; class VISIBILITY_HIDDEN Link : public Tool { @@ -72,6 +97,11 @@ namespace gcc { 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, + InputInfo &Output, InputInfoList &Inputs, + const ArgList &TCArgs, + const char *LinkingOutput) const; }; } // end namespace gcc |

