diff options
author | dim <dim@FreeBSD.org> | 2012-08-15 20:02:54 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2012-08-15 20:02:54 +0000 |
commit | 554bcb69c2d785a011a30e7db87a36a87fe7db10 (patch) | |
tree | 9abb1a658a297776086f4e0dfa6ca533de02104e /include/clang/Tooling/CommandLineClangTool.h | |
parent | bb67ca86b31f67faee50bd10c3b036d65751745a (diff) | |
download | FreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.zip FreeBSD-src-554bcb69c2d785a011a30e7db87a36a87fe7db10.tar.gz |
Vendor import of clang trunk r161861:
http://llvm.org/svn/llvm-project/cfe/trunk@161861
Diffstat (limited to 'include/clang/Tooling/CommandLineClangTool.h')
-rw-r--r-- | include/clang/Tooling/CommandLineClangTool.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/include/clang/Tooling/CommandLineClangTool.h b/include/clang/Tooling/CommandLineClangTool.h new file mode 100644 index 0000000..c29c302 --- /dev/null +++ b/include/clang/Tooling/CommandLineClangTool.h @@ -0,0 +1,80 @@ +//===- CommandLineClangTool.h - command-line clang tools driver -*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file implements the CommandLineClangTool class used to run clang +// tools as separate command-line applications with a consistent common +// interface for handling compilation database and input files. +// +// It provides a common subset of command-line options, common algorithm +// for locating a compilation database and source files, and help messages +// for the basic command-line interface. +// +// It creates a CompilationDatabase, initializes a ClangTool and runs a +// user-specified FrontendAction over all TUs in which the given files are +// compiled. +// +// This class uses the Clang Tooling infrastructure, see +// http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html +// for details on setting it up with LLVM source tree. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_CLANG_INCLUDE_CLANG_TOOLING_COMMANDLINECLANGTOOL_H +#define LLVM_TOOLS_CLANG_INCLUDE_CLANG_TOOLING_COMMANDLINECLANGTOOL_H + +#include "llvm/Support/CommandLine.h" +#include "clang/Tooling/CompilationDatabase.h" + +namespace clang { + +namespace tooling { + +class CompilationDatabase; +class FrontendActionFactory; + +/// \brief A common driver for command-line Clang tools. +/// +/// Parses a common subset of command-line arguments, locates and loads a +/// compilation commands database, runs a tool with user-specified action. It +/// also contains a help message for the common command-line options. +/// An example of usage: +/// @code +/// int main(int argc, const char **argv) { +/// CommandLineClangTool Tool; +/// cl::extrahelp MoreHelp("\nMore help text..."); +/// Tool.initialize(argc, argv); +/// return Tool.run(newFrontendActionFactory<clang::SyntaxOnlyAction>()); +/// } +/// @endcode +/// +class CommandLineClangTool { +public: + /// Sets up command-line options and help messages. + /// Add your own help messages after constructing this tool. + CommandLineClangTool(); + + /// Parses command-line, initializes a compilation database. + /// This method exits program in case of error. + void initialize(int argc, const char **argv); + + /// Runs a clang tool with an action created by \c ActionFactory. + int run(FrontendActionFactory *ActionFactory); + +private: + llvm::OwningPtr<CompilationDatabase> Compilations; + llvm::cl::opt<std::string> BuildPath; + llvm::cl::list<std::string> SourcePaths; + llvm::cl::extrahelp MoreHelp; +}; + +} // namespace tooling + +} // namespace clang + +#endif // LLVM_TOOLS_CLANG_INCLUDE_CLANG_TOOLING_COMMANDLINECLANGTOOL_H |