<div class="gmail_quote">On Sat, Nov 12, 2011 at 12:44 AM, Sven Verdoolaege <span dir="ltr"><<a href="mailto:skimo-cfe@kotnet.org">skimo-cfe@kotnet.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br></blockquote><div><br></div><div>Hey, sorry for not getting back to you sooner...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I'm using the clang libraries in one of my applications<br>

(called pet) to parse a C file, after which I extract<br>
some information from the generated AST.  Since I only<br>
need the parser, I'm using the frontend directly.<br></blockquote><div><br></div><div>Ok... is there any reason you don't use the driver at all? The driver is structured such that you can call into it as a library as well, and get it to reason about command line options.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">The sources I need to parse may include system headers<br>
and so clang should also look in system include paths.<br>
This used to work fine, but in revision 143822, the<br>
Linux header searching was moved from the frontend to<br>
the driver, leaving InitHeaderSearch::AddDefaultIncludePaths<br>
in the frontend to do nothing and system header files<br>
no longer getting found.<br></blockquote><div><br></div><div>Correct. The frontend should be in the business of parsing C++ code, not of inspecting your system to find various versions of libstdc++, etc. This was always a poor location for the logic... I didn't worry much about announcing that I was actually moving the logic because frankly, it was so broken that I doubted many people used it.</div>
<div><br></div><div>For reference, we use Clang in extremely similar ways, and have many tools in this space. However, the header search logic never really worked correctly in the frontend, so we have for a long time been rolling our own.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">How am I supposed to make the frontend look for system<br>
header files now?<br></blockquote><div><br></div><div>You can't directly make the frontend do this, but you can always use the driver to build up the arguments for your compiler invocation. Look at Driver::BuildCompilation, which accepts commandline args for a compile. You can then get the JobList out of the Compilation. It should have a single job in it, which is the command for running the Frontend CC1 layer, with system header search paths pre-filled. You can pull the ArgStringList directly out of the command and hand it to the Frontend APIs yourself if you need to avoid a subprocess.</div>
<div><br></div><div>I can sketch out the code to do this if it helps (as I said, we're doing it ourselves), but there's nothing really fancy to it. The interface is kinda gross and unpolished, but that's because this isn't a usecase that has been heavily polished in Clang.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Thanks,<br>
<br>
skimo<br>
</blockquote></div><br>