summaryrefslogtreecommitdiff
path: root/docs/CMake.html
diff options
context:
space:
mode:
authorOscar Fuentes <ofv@wanadoo.es>2011-04-12 19:40:35 +0000
committerOscar Fuentes <ofv@wanadoo.es>2011-04-12 19:40:35 +0000
commit23ba1e4faa8317e762eb95aecd786e9600e9f834 (patch)
tree6a9e33e4ec71ed3e80c850249418bed6cb85d136 /docs/CMake.html
parentc6d8853dff22b57b81f3f0e901915965538d77d1 (diff)
downloadllvm-23ba1e4faa8317e762eb95aecd786e9600e9f834.tar.gz
llvm-23ba1e4faa8317e762eb95aecd786e9600e9f834.tar.bz2
llvm-23ba1e4faa8317e762eb95aecd786e9600e9f834.tar.xz
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
Diffstat (limited to 'docs/CMake.html')
-rw-r--r--docs/CMake.html58
1 files changed, 58 insertions, 0 deletions
diff --git a/docs/CMake.html b/docs/CMake.html
index 6778d6b731..73e6f440e3 100644
--- a/docs/CMake.html
+++ b/docs/CMake.html
@@ -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>
+ &lt;project dir&gt;/
+ |
+ CMakeLists.txt
+ &lt;pass name&gt;/
+ |
+ CMakeLists.txt
+ Pass.cpp
+ ...
+ </pre>
+ </div>
+
+ <p>Contents of &lt;project dir&gt;/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(&lt;pass name&gt;)
+ </pre>
+ </div>
+
+ <p>Contents of &lt;project dir&gt;/&lt;pass name&gt;/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 &lt;pass name&gt; folder into &lt;LLVM root&gt;/lib/Transform directory.<br>
+ 2. Adding "add_subdirectory(&lt;pass name&gt;)" line into &lt;LLVM root&gt;/lib/Transform/CMakeLists.txt</p>
+</div>
<!-- *********************************************************************** -->
<!-- *********************************************************************** -->