[cfe-dev] Design proposal: Add custom compilation database formats as plugins

Daniel Jasper djasper at google.com
Wed Jul 18 06:36:41 PDT 2012

Hi all,

to make the tooling library more widely applicable, we'd like to make the
CompilationDatabase architecture extensible, i.e. provide the option of
implementing custom adapters to other kinds of compilation databases (other
than the currently available JSONCompilationDatabase).

In r160061, I provided a hack that enables this, but we definitely want
something nicer.

In the attached patch, I am using LLVM's plugin registry to enable
registering new compilation databases. To provide a new
CompilationDatabase, you'd need to subclass CompilationDatabasePlugin and
CompilationDatabase and register the former with
CompilationDatabasePluginRegistry::Add (as shown for
JSONCompilationDatabase). This is not a finished patch for review, I'd just
like to get feedback on the approach. What do you think?

Also, several points that need to be addressed:
- Error handling: In CompilationDatabase::loadFromDirectory, I currently
simply try each plugin until I find a compilation database. Any ideas, what
I should do with the error messages, especially if I do not find any
compilation database. Should I concatenate them, potentially with the
plugin-name as a prefix?
- Should I move the JSONCompilationDatabase to a separate set of files as
it is now loosely coupled?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120718/1d040306/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: compilationdatabaseplugins.patch
Type: application/octet-stream
Size: 6817 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120718/1d040306/attachment.obj>

More information about the cfe-dev mailing list