<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Erick,<div><br class="webkit-block-placeholder"></div><div>I see the problem. The llvm-config linker options are baked into the ocaml library, which is good. But for the execution engine, that link line includes the full paths to some .o files. Those paths come from llvm-config, and they vary before and after installation. (Before install, they point into the source tree as you're seeing.) You could theoretically get working .cma's by somehow building the bindings against an installed llvm-config.</div><div><br class="webkit-block-placeholder"></div><div>LLVMers, what's the advantage to building .o files instead of .a's for these libs?</div><div><br class="webkit-block-placeholder"></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">LLVMARM.o<br>LLVMAlpha.o<br>LLVMCBackend.o<br>LLVMCellSPU.o<br>LLVMExecutionEngine.o<br>LLVMIA64.o<br>LLVMInterpreter.o<br>LLVMJIT.o<br>LLVMMSIL.o<br>LLVMMips.o<br>LLVMPowerPC.o<br>LLVMSparc.o<br>LLVMX86.o</blockquote><div><div><div><br class="webkit-block-placeholder"></div><div>This wouldn't be a problem if these components used .a's instead, since ld's search paths are set up correctly.</div><div><br class="webkit-block-placeholder"></div><div>The options I see are:</div><div><br class="webkit-block-placeholder"></div><ul class="MailOutline"><li>Use archive libraries instead of objects for the above.</li><li>Link the above .o files into .a's just for the ocaml bindings. Kind of strange, but could be perfectly workable; ocaml already builds .a files for the bindings, a few more wouldn't hurt… much.</li><li>Recompile the bindings at install time just to change the baked-in link line.</li><li>Don't bake the link line into the bindings at all. Make ocaml users add the llvm-config invocation to their link lines by hand.</li><li>Fool ocamlc into invoking llvm-config from its link line? I do not believe this is possible—I doubt it launches a shell to run the linker.</li></ul><div><br class="webkit-block-placeholder"></div><div>Thanks,</div><div>Gordon</div></div><div><br class="webkit-block-placeholder"></div><div>P.S. — You shouldn't need to use llvm-config in conjunction with the ocaml bindings. Unless this gets resolved by the fourth option.</div><div><br class="webkit-block-placeholder"></div><div><div><div>On 2008-02-20, at 22:27, Erick Tryzelaar wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">I've run into a problem with the ocaml bindings and the jit. It builds<br>fine without the jit, but when I try to include it it tries to use the<br>c object files from the build location, instead of the install<br>location:<br><br><blockquote type="cite">llvm-config --libdir --libfiles engine<br></blockquote>/opt/local/lib<br>/opt/local/lib/LLVMX86.o /opt/local/lib/libLLVMSelectionDAG.a<br>/opt/local/lib/libLLVMCodeGen.a /opt/local/lib/libLLVMScalarOpts.a<br>/opt/local/lib/libLLVMTransformUtils.a /opt/local/lib/libLLVMipa.a<br>/opt/local/lib/libLLVMAnalysis.a /opt/local/lib/LLVMExecutionEngine.o<br>/opt/local/lib/LLVMJIT.o /opt/local/lib/libLLVMTarget.a<br>/opt/local/lib/libLLVMCore.a /opt/local/lib/libLLVMSupport.a<br>/opt/local/lib/libLLVMSystem.a<br><blockquote type="cite">ocamlc -g -cc g++ -I `llvm-config --libdir --libfiles engine` -o toy llvm.cma llvm_analysis.cma llvm_executionengine.cma lexer.cmo parser.cmo codegen.cmo main.ml<br></blockquote>i686-apple-darwin8-g++-4.0.1:<br>/opt/local/var/macports/build/_Users_Shared_erickt_Projects_macports_dports.git_lang_llvm/work/build/Release/lib/LLVMX86.o:<br>No such file or directory<br>i686-apple-darwin8-g++-4.0.1:<br>/opt/local/var/macports/build/_Users_Shared_erickt_Projects_macports_dports.git_lang_llvm/work/build/Release/lib/LLVMInterpreter.o:<br>No such file or directory<br>i686-apple-darwin8-g++-4.0.1:<br>/opt/local/var/macports/build/_Users_Shared_erickt_Projects_macports_dports.git_lang_llvm/work/build/Release/lib/LLVMExecutionEngine.o:<br>No such file or directory<br>i686-apple-darwin8-g++-4.0.1:<br>/opt/local/var/macports/build/_Users_Shared_erickt_Projects_macports_dports.git_lang_llvm/work/build/Release/lib/LLVMJIT.o:<br>No such file or directory<br>Error while building custom runtime system<br>make: *** [all] Error 2<br><br>Since it's just a temporary build, it obviously doesn't exist any more<br>:) Does anyone know how to fix this?<br><br>-e<br>_______________________________________________<br>LLVM Developers mailing list<br>LLVMdev@cs.uiuc.edu         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></blockquote></div><br><div> <span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><br class="Apple-interchange-newline"><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Trebuchet MS; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><br class="khtml-block-placeholder"></div>— Gordon<br class="Apple-interchange-newline"></span></span></span></span></span></div></span> </div><br></div></div></body></html>