[llvm-dev] Include all the things

Zachary Turner via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 9 09:58:25 PST 2015


On Wed, Dec 9, 2015 at 7:58 AM David Blaikie <dblaikie at gmail.com> wrote:

> On Wed, Dec 9, 2015 at 7:11 AM, Russell Wallace via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Rather than including llvm header files piecemeal on an ongoing basis,
>> I'm looking for a way to include all such header files once and for all.
>>
>
> That's really going to hurt your compile time, btw... if you're interested
> in building a tool to help here, a tool that uses Clang to find and suggest
> headers to include (or to remove, to keep the include set minimal to avoid
> bloating compile time) would probably be good & I know there are some
> people working on such a thing. But it is more work, of course. (& may
> benefit from/need C++ modules support)
>
>
>> To that end, I wrote a Python script to generate include directives for
>> all .h files in llvm/include and its subdirectories. This almost works, but
>> getting two error messages:
>>
>> In file included from src\main.cpp:1:
>> In file included from src/../llvm.h:254:
>> In file included from
>> \llvm\include\llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h:13:
>> In file included from
>> \llvm\include\llvm/DebugInfo/PDB/IPDBEnumChildren.h:13:
>> \llvm\include\llvm/DebugInfo/PDB/PDBTypes.h(444,3) :  error: redefinition
>> of enumerator 'Unknown'
>>   Unknown,
>>   ^
>> \llvm\include\llvm/CodeGen/CallingConvLower.h(189,16) :  note: previous
>> definition is here
>> typedef enum { Unknown, Prologue, Call } ParmContext;
>>
> Try changing PDB_VariantType to be enum class instead of enum.  Everything
else in that file is an enum class, it's possible this one just ended up as
an enum by accident.


>                ^
>> In file included from src\main.cpp:1:
>> In file included from src/../llvm.h:298:
>> In file included from
>> \llvm\include\llvm/DebugInfo/PDB/DIA/DIADataStream.h:13:
>> \llvm\include\llvm/DebugInfo/PDB/DIA/DIASupport.h(30,10) :  fatal error:
>> 'cvconst.h' file not found
>> #include <cvconst.h>
>>
>> Are there known fixes for these, or is there something I should be doing
>> differently?
>>
>
> The first one's probably an outright ODR violation (Zach - perhaps you
> could take a look at that)
>
> The second is probably because you're including a header that's only
> conditionally usable, when you have the right 3rd party package installed
> (at least I assume that's the case - Zach?)
>
> Did we actually install that header onto a system without the package
> available? Or are you pointing your build at an LLVM source tree?
>

I'm not sure how the source tarball works, but did you run CMake yourself
or does the source tarball come with pre-generated CMake build files?  It's
only supposed to compile the DIA stuff if it finds DIA is installed on your
machine at CMake gen time.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151209/41884a51/attachment.html>


More information about the llvm-dev mailing list