[LLVMdev] Circular dependencies

Eric Kidd emk.lists at gmail.com
Wed Mar 22 06:26:12 PST 2006


On Mar 21, 2006, at 11:23 PM, Chris Lattner wrote:
>>>    LLVMCodeGen.o LLVMSelectionDAG.o libLLVMAnalysis.a  
>>> libLLVMTarget.a
>>>    libLLVMTransformUtils.a libLLVMipa.a
>
> CodeGen should depend on Target, but not the other way around.
> LLVMIPA should depend on LLVMAnalysis, but certainly nothing in the  
> list should depend on LLVMIPA.  If you knew what was pulling in IPA  
> that would probably be an easy tie to sever.
>
> Ideally, none of the above should depend on libLLVMTransformUtils.

Yeah, I'm definitely having headaches with LLVMTransformUtils, which  
needs to appear before  LLVMAnalysis and lLLVMTarget.

   -lLLVMTransformUtils -lLLVMAnalysis -lLLVMTarget

If I don't do this, I get link errors on:

   __ZN4llvm11BasicAAStubEv

I think, for now, the only portable workaround is for me to link all  
the *.a libraries in that loop twice, and hope we can clean up the  
dependencies later.

There's several places where llvm-config could be simplified quite a  
bit if we broke the unnecessary dependencies and merged the remaining  
loops into single *.a files. In some sense, parts of llvm-config are  
re-inventing the system linker. Depending on your point of view, this  
might be a bad thing. :-)

Many thanks to everyone who's helped sort this out!

Cheers,
Eric




More information about the llvm-dev mailing list