+<!-- ======================================================================= -->
+<div class="doc_section"><a name="dependencies"></a>Using llvm-config</div>
+<div class="doc_text">
+ <p>The <tt>llvm-config</tt> tool is a perl script that produces on its output
+ various kinds of information. For example, the source or object directories
+ used to build LLVM can be accessed by passing options to <tt>llvm-config</tt>.
+ For complete details on this tool, please see the
+ <a href="CommandGuide/html/llvm-config.html">manual page</a>.</p>
+ <p>To understand the relationships between libraries, the <tt>llvm-config</tt>
+ can be very useful. If all you know is that you want certain libraries to
+ be available, you can generate the complete set of libraries to link with
+ using one of four options, as below:</p>
+ <ol>
+ <li><tt>--ldflags</tt>. This generates the command line options necessary to
+ be passed to the <tt>ld</tt> tool in order to link with LLVM. Most notably,
+ the <tt>-L</tt> option is provided to specify a library search directory
+ that contains the LLVM libraries.</li>
+ <li><tt>--libs</tt>. This generates command line options suitable for
+ use with a gcc-style linker. That is, libraries are given with a -l option
+ and object files are given with a full path.</li>
+ <li><tt>--libnames</tt>. This generates a list of just the library file
+ names. If you know the directory in which these files reside (see --ldflags)
+ then you can find the libraries there.</li>
+ <li><tt>--libfiles</tt>. This generates the full path names of the
+ LLVM library files.</li>
+ </ol>
+ <p>If you wish to delve further into how <tt>llvm-config</tt> generates the
+ correct order (based on library dependencies), please see the tool named
+ <tt>GenLibDeps.pl</tt> in the <tt>utils</tt> source directory of LLVM.</p>
+
+ <!-- =======NOTE: =========================================================-->
+ <!-- === The following graphs and <dl> list are generated automatically ===-->
+ <!-- === by the util named GenLibDeps.pl in the llvm/utils directory. ===-->
+ <!-- === This should be updated whenever new libraries are added, ===-->
+ <!-- === removed, or changed ===-->
+ <!-- =======NOTE: =========================================================-->
+ <h2>Dependency Relationships Of Libraries</h2>
+ <p>This graph shows the dependency of archive libraries on other archive
+ libraries or objects. Where a library has both archive and object forms, only
+ the archive form is shown.</p>
+ <img src="img/libdeps.gif" alt="Library Dependencies"/>
+ <h2>Dependency Relationships Of Object Files</h2>
+ <p>This graph shows the dependency of object files on archive libraries or
+ other objects. Where a library has both object and archive forms, only the
+ dependency to the archive form is shown.</p>
+ <img src="img/objdeps.gif" alt="Object File Dependencies"/>
+ <p>The following list shows the dependency relationships between libraries in
+ textual form. The information is the same as shown on the graphs but arranged
+ alphabetically.</p>
+<dl>
+ <dt><b>libLLVMAnalysis.a</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>libLLVMArchive.a</b</dt><dd><ul>
+ <li>libLLVMBCReader.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMAsmParser.a</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMBCReader.a</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMBCWriter.a</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMCodeGen.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMScalarOpts.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMTransformUtils.a</li>
+ </ul></dd>
+ <dt><b>libLLVMCore.a</b</dt><dd><ul>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMDebugger.a</b</dt><dd><ul>
+ <li>libLLVMBCReader.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMInstrumentation.a</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMScalarOpts.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMTransformUtils.a</li>
+ </ul></dd>
+ <dt><b>libLLVMLinker.a</b</dt><dd><ul>
+ <li>libLLVMArchive.a</li>
+ <li>libLLVMBCReader.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMScalarOpts.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMTransformUtils.a</li>
+ </ul></dd>
+ <dt><b>libLLVMSelectionDAG.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMTransformUtils.a</li>
+ </ul></dd>
+ <dt><b>libLLVMSupport.a</b</dt><dd><ul>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMbzip2.a</li>
+ </ul></dd>
+ <dt><b>libLLVMSystem.a</b</dt><dd><ul>
+ </ul></dd>
+ <dt><b>libLLVMTarget.a</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMTransformUtils.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMipa.a</li>
+ </ul></dd>
+ <dt><b>libLLVMbzip2.a</b</dt><dd><ul>
+ </ul></dd>
+ <dt><b>libLLVMipa.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ </ul></dd>
+ <dt><b>libLLVMipo.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMTransformUtils.a</li>
+ <li>libLLVMipa.a</li>
+ </ul></dd>
+ <dt><b>libLLVMlto.a</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMBCReader.a</li>
+ <li>libLLVMBCWriter.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMLinker.a</li>
+ <li>libLLVMScalarOpts.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMipa.a</li>
+ <li>libLLVMipo.a</li>
+ </ul></dd>
+ <dt><b>LLVMARM.o</b</dt><dd><ul>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSelectionDAG.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMAlpha.o</b</dt><dd><ul>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSelectionDAG.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMCBackend.o</b</dt><dd><ul>
+ <li>libLLVMAnalysis.a</li>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMScalarOpts.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ <li>libLLVMTransformUtils.a</li>
+ <li>libLLVMipa.a</li>
+ </ul></dd>
+ <dt><b>LLVMExecutionEngine.o</b</dt><dd><ul>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMIA64.o</b</dt><dd><ul>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSelectionDAG.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMInterpreter.o</b</dt><dd><ul>
+ <li>LLVMExecutionEngine.o</li>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMJIT.o</b</dt><dd><ul>
+ <li>LLVMExecutionEngine.o</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMPowerPC.o</b</dt><dd><ul>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSelectionDAG.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMSparc.o</b</dt><dd><ul>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSelectionDAG.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+ <dt><b>LLVMX86.o</b</dt><dd><ul>
+ <li>libLLVMCodeGen.a</li>
+ <li>libLLVMCore.a</li>
+ <li>libLLVMSelectionDAG.a</li>
+ <li>libLLVMSupport.a</li>
+ <li>libLLVMSystem.a</li>
+ <li>libLLVMTarget.a</li>
+ </ul></dd>
+</dl>
+</div>
+