From 30318e6df9c8c24d080211dfb92ef8065fa7381c Mon Sep 17 00:00:00 2001 From: Manuel Klimek Date: Wed, 18 Apr 2012 07:41:50 +0000 Subject: Adds a FixedCompilationDatabase to be able to specify tool parameters at the command line. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154989 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Tooling/CompilationDatabase.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'lib/Tooling/CompilationDatabase.cpp') diff --git a/lib/Tooling/CompilationDatabase.cpp b/lib/Tooling/CompilationDatabase.cpp index f8993658da..dd9ccc07b6 100644 --- a/lib/Tooling/CompilationDatabase.cpp +++ b/lib/Tooling/CompilationDatabase.cpp @@ -121,6 +121,33 @@ CompilationDatabase::loadFromDirectory(StringRef BuildDirectory, return Database.take(); } +FixedCompilationDatabase * +FixedCompilationDatabase::loadFromCommandLine(int &Argc, + const char **Argv, + Twine Directory) { + const char **DoubleDash = std::find(Argv, Argv + Argc, StringRef("--")); + if (DoubleDash == Argv + Argc) + return NULL; + std::vector CommandLine(DoubleDash + 1, Argv + Argc); + Argc = DoubleDash - Argv; + return new FixedCompilationDatabase(Directory, CommandLine); +} + +FixedCompilationDatabase:: +FixedCompilationDatabase(Twine Directory, ArrayRef CommandLine) { + std::vector ToolCommandLine(1, "clang-tool"); + ToolCommandLine.insert(ToolCommandLine.end(), + CommandLine.begin(), CommandLine.end()); + CompileCommands.push_back(CompileCommand(Directory, ToolCommandLine)); +} + +std::vector +FixedCompilationDatabase::getCompileCommands(StringRef FilePath) const { + std::vector Result(CompileCommands); + Result[0].CommandLine.push_back(FilePath); + return Result; +} + JSONCompilationDatabase * JSONCompilationDatabase::loadFromFile(StringRef FilePath, std::string &ErrorMessage) { -- cgit v1.2.3-18-g5258