<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 14, 2013 at 5:35 PM, Joshua Cranmer 🐧 <span dir="ltr"><<a href="mailto:Pidgeot18@gmail.com" target="_blank">Pidgeot18@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 3/14/2013 3:58 PM, Sean Silva wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The problem is that there are no mature and established tools for generating the database. As the tools improve, the problem will solve itself; there's no reason to bring them into clang really since the major problem is just developing mature tools in the first place. Having a "standardized" format for the compilation database decouples this development from clang itself.<br>

</blockquote>
<br></div>
Like David Blaikie, I find this view mistifying. If I wish to be able to use Clang's tooling on my codebase, why must I rewrite the entire project's build system just to be able to get a file? Adding flags to CFLAGS/CXXFLAGS is generally well-supported in almost all build systems, so why not enable more people to use other tooling by letting them compile with make CFLAGS=-fdump-compilation-<u></u>database=/path/to/db.json ?<span class="HOEnZb"><font color="#888888"><br>
</font></span><div class="HOEnZb"><div class="h5"><br></div></div></blockquote><div><br></div><div style>Better and simpler would be to ship a wrapper script that writes this data and then invokes clang as usual (or both could be done in parallel). Then you set the wrapper script to CXX and be done with it. The "wrapper CXX" paradigm seems even simpler to integrate with a build system.</div>
<div style><br></div><div style>With python, we could write the data into a sqlite db (which is in the stdlib), which would automatically solve all the correctness issues related to parallel file writing. Then we just need a simple little script (a handful of lines of python) to pull that data out into the JSON format that clang parses natively. If we go this route we should standardize the sqlite schema. Anybody willing to write that?</div>
<div style><br></div><div style>I think that would be a lot more palatable to ship with clang (vs. LD_PRELOAD or other fragile system-specific trickery).</div><div style><br></div><div style>-- Sean Silva</div></div></div>
</div>