forked from OSchip/llvm-project
Add a hook to supply a custom CompilationDatabase. To add a custom CompilationDatabase, make it implement findCompilationDatabaseForDirectory in CustomCompilationDatabase.h and set USE_COSTUM_COMPILATION_DATABASE.
Differential Revision: http://llvm-reviews.chandlerc.com/D4 llvm-svn: 160061
This commit is contained in:
parent
4dce73af05
commit
bb89ae9392
|
@ -18,6 +18,10 @@
|
|||
#include "llvm/Support/Path.h"
|
||||
#include "llvm/Support/system_error.h"
|
||||
|
||||
#ifdef USE_CUSTOM_COMPILATION_DATABASE
|
||||
#include "CustomCompilationDatabase.h"
|
||||
#endif
|
||||
|
||||
namespace clang {
|
||||
namespace tooling {
|
||||
|
||||
|
@ -124,6 +128,11 @@ CompilationDatabase::loadFromDirectory(StringRef BuildDirectory,
|
|||
|
||||
static CompilationDatabase *
|
||||
findCompilationDatabaseFromDirectory(StringRef Directory) {
|
||||
#ifdef USE_CUSTOM_COMPILATION_DATABASE
|
||||
if (CompilationDatabase *DB =
|
||||
::findCompilationDatabaseForDirectory(Directory))
|
||||
return DB;
|
||||
#endif
|
||||
while (!Directory.empty()) {
|
||||
std::string LoadErrorMessage;
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
//===--- CustomCompilationDatabase.h --------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file contains a hook to supply a custom \c CompilationDatabase
|
||||
// implementation.
|
||||
//
|
||||
// The mechanism can be used by IDEs or non-public code bases to integrate with
|
||||
// their build system. Currently we support statically linking in an
|
||||
// implementation of \c findCompilationDatabaseForDirectory and enabling it
|
||||
// with -DUSE_CUSTOM_COMPILATION_DATABASE when compiling the Tooling library.
|
||||
//
|
||||
// FIXME: The strategy forward is to provide a plugin system that can load
|
||||
// custom compilation databases and make enabling that a build option.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
|
||||
namespace clang {
|
||||
namespace tooling {
|
||||
class CompilationDatabase;
|
||||
}
|
||||
}
|
||||
|
||||
/// \brief Returns a CompilationDatabase for the given \c Directory.
|
||||
///
|
||||
/// \c Directory can be any directory within a project. This methods will
|
||||
/// then try to find compilation database files in \c Directory or any of its
|
||||
/// parents. If a compilation database cannot be found or loaded, returns NULL.
|
||||
clang::tooling::CompilationDatabase *findCompilationDatabaseForDirectory(
|
||||
llvm::StringRef Directory);
|
Loading…
Reference in New Issue