[LLVMdev] making libraries depend on external libraries?

Nick Lewycky nicholas at mxc.ca
Sat Feb 14 21:05:05 PST 2009


Nick Lewycky wrote:
> How can I specify that LLVMInterpreter depends on 'libffi' in the 
> Makefile? Modifying LD.Flags in Interpreter/Makefile doesn't help since 
> llvm-config doesn't pick up on that, causing a linker error when 
> building lli. I'd like "llvm-config --libs interpreter" return -lffi 
> along with the LLVM libraries it lists.
> 
> You'd think there would be an example of this already, but I looked and 
> didn't find one.

So I dug through the code and it looks like we really don't support this.

What we do have is "llvm-config --ldflags" which lists all the system 
libraries we use, regardless of whether the tool you're compiling would 
really need them. The easiest thing for me to do would be to add -lffi 
in there. Sound reasonable for now?

Nick

PS. I looked into what it would take to do this properly. "llvm-config 
--libs" just rattles off the list of dependencies calculated by 
GenLibDeps, which in turn figures it out by running 'nm' over each llvm 
built library and seeing which library defines what symbol and builds a 
graph of using lib -> defining lib. I tried adding a switch to ask it to 
consider certain system libraries as defining some symbols, in the hopes 
that the rest of the calculation should just work as normal.

It turns out that a) we need some way to actually find the system 
library in order to run nm on it and Autoconf won't give us that. I used 
'gcc -print-file-name=libffi.so'. b) Makefile.rules makes the assumption 
that every library printed by llvm-config --libs is something that LLVM 
will build, and adds them as make dependencies for the tool being built. 
This is where I gave up.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-config-ffi.patch
Type: text/x-diff
Size: 7157 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090214/8a14e0b1/attachment.patch>


More information about the llvm-dev mailing list