<div dir="ltr">2013/7/18 Manuel Klimek <span dir="ltr"><<a href="mailto:klimek@google.com" target="_blank">klimek@google.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div><div class="h5">On Thu, Jul 18, 2013 at 6:36 AM, Sean Silva <span dir="ltr"><<a href="mailto:silvas@purdue.edu" target="_blank">silvas@purdue.edu</a>></span> wrote:<br></div></div><div class="gmail_extra">
<div class="gmail_quote"><div><div class="h5">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>tl;dr: compiler embeds compilation db info in object files; you can then collect it afterwards with simple tools. Good idea?</div>

<div><br></div></div></blockquote></div></div></div></div></div></blockquote><div>[snip] </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div></div><div>The basic idea is that instead of generating the compilation database "before compilation, by something that knows about the build a priori", have the compilation database info come out "the back of the compiler a posteriori" and follow the natural flow of information through the build pipeline, and eventually be recovered from build products.</div>
</div></blockquote></div></div></div></div></div></blockquote><div>[snip] </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><div></div>
</div></blockquote><div><br></div></div></div><div>We have done similar things before internally, but considered it more to be a hack ;)</div><div><br></div><div>I think the direction that we want to go to is to have an option in clang to append to a compilation database while running - that way, no post-processing step is required, which again needs to be somehow put into the build flow. The only part missing is somebody with enough time on their hands for whom this is high enough priority.</div>
</div></div></div></blockquote><div><br></div><div>Hello,</div><div><br></div>by "Compilation Database", do you mean namespace, function, enum, class, struct definitions, etc.?<div>Sean, you are basically proposing something that Java and .NET do, I think - being able to extract this information from compiled binaries.</div>
<div>E.g. in .NET, you can load any .NET dll and load all class declarations (and dynamically allocate them and call their methods, but that's another topic that may be built on top of that).</div><div><br></div><div>
I've used this to build code generators for .NET assemblies, which seems to be a similar target to your's.</div><div><br></div><div>I find this a very good idea and it will be extremely helpful - one of the many shortcomings of C and C++ are the missing automation tools - offering a base to build those is one of the main goals of clang, after all.</div>
<div><br></div><div>Having metainformation in compiled binaries will offer a new branch of possibilities for post-processing C++ sourcecode. This can be the base for automatic testing and other nifty tools and will be a valuable addition to C++, in my opinion.</div>
<div><br></div><div>It is important that the structure of the stored metainformation is well documented and at least there is a semi-standard for it.</div><div><br></div><div>Greetings,</div><div>Daniel Albuschat</div></div>
</div></div>