mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
Document how to build a LLVM pass with CMake out of source.
Patch by arrowdodger! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129381 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c6d8853dff
commit
23ba1e4faa
@ -22,6 +22,9 @@
|
||||
<li><a href="#testing">Executing the test suite</a>
|
||||
<li><a href="#cross">Cross compiling</a>
|
||||
<li><a href="#embedding">Embedding LLVM in your project</a>
|
||||
<ul>
|
||||
<li><a href="#passdev">Developing LLVM pass out of source</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#specifics">Compiler/Platform specific topics</a>
|
||||
<ul>
|
||||
<li><a href="#msvc">Microsoft Visual C++</a></li>
|
||||
@ -458,6 +461,61 @@
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="passdev">Developing LLVM pass out of source</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>It is possible to develop LLVM passes against installed LLVM.
|
||||
An example of project layout provided below:</p>
|
||||
|
||||
<div class="doc_code">
|
||||
<pre>
|
||||
<project dir>/
|
||||
|
|
||||
CMakeLists.txt
|
||||
<pass name>/
|
||||
|
|
||||
CMakeLists.txt
|
||||
Pass.cpp
|
||||
...
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>Contents of <project dir>/CMakeLists.txt:</p>
|
||||
|
||||
<div class="doc_code">
|
||||
<pre>
|
||||
find_package(LLVM)
|
||||
|
||||
<b># Define add_llvm_* macro's.</b>
|
||||
include(AddLLVM)
|
||||
|
||||
add_definitions(${LLVM_DEFINITIONS})
|
||||
include_directories(${LLVM_INCLUDE_DIRS})
|
||||
link_directories(${LLVM_LIBRARY_DIRS})
|
||||
|
||||
add_subdirectory(<pass name>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>Contents of <project dir>/<pass name>/CMakeLists.txt:</p>
|
||||
|
||||
<div class="doc_code">
|
||||
<pre>
|
||||
add_llvm_loadable_module(LLVMPassname
|
||||
Pass.cpp
|
||||
)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>When you are done developing your pass, you may wish to integrate it
|
||||
into LLVM source tree. You can achieve it in two easy steps:<br>
|
||||
1. Copying <pass name> folder into <LLVM root>/lib/Transform directory.<br>
|
||||
2. Adding "add_subdirectory(<pass name>)" line into <LLVM root>/lib/Transform/CMakeLists.txt</p>
|
||||
</div>
|
||||
<!-- *********************************************************************** -->
|
||||
|
||||
<!-- *********************************************************************** -->
|
||||
|
@ -211,6 +211,9 @@ the <tt>opt</tt> or <tt>bugpoint</tt> tools via their <tt>-load</tt> options.
|
||||
If your operating system uses a suffix other than .so (such as windows or
|
||||
Mac OS/X), the appropriate extension will be used.</p>
|
||||
|
||||
<p>If you are used CMake to build LLVM, see
|
||||
<a href="CMake.html#passdev">Developing an LLVM pass with CMake</a>.</p>
|
||||
|
||||
<p>Now that we have the build scripts set up, we just need to write the code for
|
||||
the pass itself.</p>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user