[cfe-dev] Builtin headers

Jacob Carlborg via cfe-dev cfe-dev at lists.llvm.org
Tue Feb 2 13:50:03 PST 2016


On 2016-02-02 16:57, Mikhail Ramalho via cfe-dev wrote:
> Hello all,
>
> I'm using clang as a frontend to parse C and C++ code, which I convert
> to an internal format that my tool understand.
>
> Since the beginning of the development, there was the problem including
> the builtin headers to the compilation which I kinda fix with a code to
> search for headers on the system.
>
> The problem is that we ship the binary, including static and dynamic
> versions, which requires that the users to have clang installed on their
> machines. It's OK for the dynamic version but for the static one it's a
> bad solution.
>
> So, right now I only found this two solutions:
>
> 1. Either the user must have clang installed in their machines (which I
> can't tell if there will be a problem about using headers from different
> versions of clang).
>
> 2. Ship all the builtin headers, even for the static version, and hard
> code a path for them from the binary (like clang does).
>
> Is it possible to implement a third solution: circumvent the requirement
> for all the builtin headers? I even tried to copy the builitin headers
> as virtualFiles, but it doesn't work.

In my tool, DStep [1], I've embedded the headers in the executable 
itself. The tool is built using libclang. I'm using an array of 
"CXUnsavedFile" [2] for the internal headers which is passed when 
parsing the translation unit [3][4].

Not sure if that helps since you're using the C++ API.

[1] https://github.com/jacob-carlborg/dstep

[2] https://github.com/jacob-carlborg/dstep/blob/master/clang/Compiler.d#L48

[3] 
https://github.com/jacob-carlborg/dstep/blob/master/dstep/driver/Application.d#L96

[4] 
https://github.com/jacob-carlborg/dstep/blob/master/clang/TranslationUnit.d#L35-L36

-- 
/Jacob Carlborg




More information about the cfe-dev mailing list