So I decided to bundle up the small amount of work I've done on generating source-level debugging info into a DebugInfoBuilder class like I described earlier. 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 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> My .h file uses forward declarations for everything and needs no headers (yet). I need MachineMouleInfo.h to get LLVMDebugVersion, and I use Path to split the module directory name from the file name. Any ideas? Am I going to have to put my .cpp file in some library other than Support? -- Talin
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é
HyperQuantum wrote:> 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. >All right, then, which library should it go in to? I wanted it to go into "Support" because logically it is a sibling of IRBuilder - it does what IRBuilder does, only for source-level debugging info.> Regards, > Kevin André > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Reasonably Related Threads
- [LLVMdev] Question about circular dependency checker
- [LLVMdev] Question about circular dependency checker
- [LLVMdev] Question about circular dependency checker
- [LLVMdev] [RFC] CGContext skeleton implementation
- [LLVMdev] [RFC] CGContext skeleton implementation