[LLVMdev] Question about circular dependency checker

HyperQuantum hyperquantum at gmail.com
Wed Jun 4 03:05:43 PDT 2008


I'm not a LLVM developer, but I'll give it a try...

On Wed, Jun 4, 2008 at 9:12 AM, Talin <viridia at gmail.com> wrote:

> I went and added a new file to the "Support"
> directory (in include and lib). However, when I try to compile it, it
> complains of a circular dependency error between libCore and libSupport:
>
>    find-cycles.pl: Circular dependency between *.a files:
>    find-cycles.pl:   libLLVMCore.a libLLVMSupport.a
>
> The odd part is, that no other file in LLVM even references my header,
> so I'm not sure where the cycle is.

The problem is not other code depending on your files directly. The
"Support" library consists (AFAIK) of utility code that is used
everywhere in other LLVM libraries. So you cannot add code to the
"Support" library that calls code in other LLVM libraries on a higher
level, like "VMCore", without introducing a circular dependency
between the libraries.

> The headers that I am including in my .cpp file are:
>
>    #include <llvm/DerivedTypes.h>
>    #include <llvm/Constants.h>
>    #include <llvm/GlobalVariable.h>
>    #include <llvm/Module.h>
>    #include <llvm/CodeGen/MachineModuleInfo.h>
>    #include <llvm/Support/Dwarf.h>
>    #include <llvm/System/Path.h>

There's your problem.

> Any ideas? Am I going to have to put my .cpp file in some library other
> than Support?

If you need the includes, and you probably do, then you have no choice
but to put your code in another library.


Regards,
Kevin André




More information about the llvm-dev mailing list