diff options
| author | Reid Spencer <rspencer@reidspencer.com> | 2006-08-07 23:12:15 +0000 |
|---|---|---|
| committer | Reid Spencer <rspencer@reidspencer.com> | 2006-08-07 23:12:15 +0000 |
| commit | 42fe455d3789b8e7913f463f85cd5606d7fb6efe (patch) | |
| tree | 39957f0730cc93b484282fff160d515f07e05769 /docs/MakefileGuide.html | |
| parent | a5682853b9921bbb0dd2ee175c9bd44142d4819e (diff) | |
For PR780:
1. Change the usage of LOADABLE_MODULE so that it implies all the things
necessary to make a loadable module. This reduces the user's burdern to
get a loadable module correctly built.
2. Document the usage of LOADABLE_MODULE in the MakefileGuide
3. Adjust the makefile for lib/Transforms/Hello to use the new specification
for building loadable modules
4. Adjust the sample project to not attempt to build a shared library for
its little library. This was just wasteful and not instructive at all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29551 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/MakefileGuide.html')
| -rw-r--r-- | docs/MakefileGuide.html | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/docs/MakefileGuide.html b/docs/MakefileGuide.html index ca19f5f23d..a1aa934fb8 100644 --- a/docs/MakefileGuide.html +++ b/docs/MakefileGuide.html @@ -30,7 +30,8 @@ <ol> <li><a href="#libraries">Libraries</a> <ol> - <li><a href="#Modules">Bytecode Modules</a></li> + <li><a href="#BCModules">Bytecode Modules</a></li> + <li><a href="#LoadableModules">Loadable Modules</a></li> </ol> </li> <li><a href="#tools">Tools</a> @@ -259,7 +260,7 @@ </div> <!-- ======================================================================= --> -<div class="doc_subsubsection"><a name="Modules">Bytecode Modules</a></div> +<div class="doc_subsubsection"><a name="BCModules">Bytecode Modules</a></div> <div class="doc_text"> <p>In some situations, it is desireable to build a single bytecode module from a variety of sources, instead of an archive, shared library, or bytecode @@ -280,6 +281,40 @@ </div> <!-- ======================================================================= --> +<div class="doc_subsubsection"> + <a name="LodableModules">Loadable Modules</a> +</div> +<div class="doc_text"> + <p>In some situations, you need to create a loadable module. Loadable modules + can be loaded into programs like <tt>opt</tt> or <tt>llc</tt> to specify + additional passes to run or targets to support. Loadable modules are also + useful for debugging a pass or providing a pass with another package if that + pass can't be included in LLVM.</p> + <p>LLVM provides complete support for building such a module. All you need to + do is use the LOADABLE_MODULE variable in your Makefile. For example, to + build a loadable module named <tt>MyMod</tt> that uses the LLVM libraries + <tt>LLVMSupport.a</tt> and <tt>LLVMSystem.a</tt>, you would specify:</p> + <pre><tt> + LIBRARYNAME := MyMod + LOADABLE_MODULE := 1 + USEDLIBS := LLVMSupport.a LLVMSystem.a + </tt></pre> + <p>Use of the <tt>LOADABLE_MODULE</tt> facility implies several things:</p> + <ol> + <li>There will be no "lib" prefix on the module. This differentiates it from + a standard shared library of the same name.</li> + <li>The <a href="#SHARED_LIBRARY">SHARED_LIBRARY</a> variable is turned + on.</li> + <li>The <a href="#LINK_LIBS_IN_SHARED">LINK_LIBS_IN_SHARED</a> variable + is turned on.</li> + <li>The <a href="#DONT_BUILD_RELINKED">DONT_BUILD_RELINKED</a> variable + is turned on.</li> + </ol> + <p>A loadable module is loaded by LLVM via the facilities of libtool's libltdl + library which is part of <tt>lib/System</tt> implementation.</p> +</div> + +<!-- ======================================================================= --> <div class="doc_subsection"><a name="tools">Tools</a></div> <div class="doc_text"> <p>For building executable programs (tools), you must provide the name of the |
