diff options
Diffstat (limited to 'docs/CMake.html')
-rw-r--r-- | docs/CMake.html | 170 |
1 files changed, 132 insertions, 38 deletions
diff --git a/docs/CMake.html b/docs/CMake.html index e303d132b590..0d8cf62e33c4 100644 --- a/docs/CMake.html +++ b/docs/CMake.html @@ -6,9 +6,9 @@ <link rel="stylesheet" href="llvm.css" type="text/css"> </head> -<div class="doc_title"> +<h1> Building LLVM with CMake -</div> +</h1> <ul> <li><a href="#intro">Introduction</a></li> @@ -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> @@ -33,12 +36,12 @@ </div> <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="intro">Introduction</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p><a href="http://www.cmake.org/">CMake</a> is a cross-platform build-generator tool. CMake does not build the project, it generates @@ -56,12 +59,12 @@ </div> <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="quickstart">Quick start</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p> We use here the command-line, non-interactive CMake interface </p> @@ -109,12 +112,12 @@ </div> <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="usage">Basic CMake usage</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p>This section explains basic aspects of CMake, mostly for explaining those options which you may need on your day-to-day @@ -157,12 +160,12 @@ </div> <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="options">Options and variables</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p>Variables customize how the build will be generated. Options are boolean variables, with possible values ON/OFF. Options and @@ -191,14 +194,12 @@ <p><tt>cmake -DVARIABLE:TYPE=value path/to/llvm/source</tt></p> </div> -</div> - <!-- ======================================================================= --> -<div class="doc_subsection"> +<h3> <a name="freccmake">Frequently-used CMake variables</a> -</div> +</h3> -<div class="doc_text"> +<div> <p>Here are listed some of the CMake variables that are used often, along with a brief explanation and LLVM-specific notes. For full @@ -237,11 +238,11 @@ </div> <!-- ======================================================================= --> -<div class="doc_subsection"> +<h3> <a name="llvmvars">LLVM-specific variables</a> -</div> +</h3> -<div class="doc_text"> +<div> <dl> <dt><b>LLVM_TARGETS_TO_BUILD</b>:STRING</dt> @@ -342,7 +343,7 @@ <dt><b>LLVM_LIT_TOOLS_DIR</b>:STRING</dt> <dd>The path to GnuWin32 tools for tests. Valid on Windows host. Defaults to "", then Lit seeks tools according to %PATH%. - Lit can find tools(eg. grep, sort, &c) on LLVM_LIT_TOOLS_DIR at first, + Lit can find tools(eg. grep, sort, &c) on LLVM_LIT_TOOLS_DIR at first, without specifying GnuWin32 to %PATH%.</dd> <dt><b>LLVM_ENABLE_FFI</b>:BOOL</dt> @@ -354,13 +355,15 @@ </div> +</div> + <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="testing">Executing the test suite</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p>Testing is performed when the <i>check</i> target is built. For instance, if you are using makefiles, execute this command while on @@ -375,12 +378,12 @@ </div> <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="cross">Cross compiling</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p>See <a href="http://www.vtk.org/Wiki/CMake_Cross_Compiling">this wiki page</a> for generic instructions on how to cross-compile @@ -396,12 +399,12 @@ </div> <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="embedding">Embedding LLVM in your project</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p>The most difficult part of adding LLVM to the build of a project is to determine the set of LLVM libraries corresponding to the set @@ -418,7 +421,7 @@ endif() <b># We incorporate the CMake features provided by LLVM:</b> set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LLVM_ROOT}/share/llvm/cmake") - include(LLVM) + include(LLVMConfig) <b># Now set the header and library paths:</b> include_directories( ${LLVM_ROOT}/include ) link_directories( ${LLVM_ROOT}/lib ) @@ -436,20 +439,111 @@ headers on the LLVM source directory (if we are building out-of-source.)</p> -</div> + <p>Alternativaly, you can utilize CMake's <i>find_package</i> + functionality. Here is an equivalent variant of snippet shown above:</p> + + <div class="doc_code"> + <pre> + find_package(LLVM) + + if( NOT LLVM_FOUND ) + message(FATAL_ERROR "LLVM package can't be found. Set CMAKE_PREFIX_PATH variable to LLVM's installation prefix.") + endif() + + include_directories( ${LLVM_INCLUDE_DIRS} ) + link_directories( ${LLVM_LIBRARY_DIRS} ) + + llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native) + + target_link_libraries(mycompiler ${REQ_LLVM_LIBRARIES}) + </pre> + </div> + +<!-- ======================================================================= --> +<h3> + <a name="passdev">Developing LLVM pass out of source</a> +</h3> + +<div> + <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> <!-- *********************************************************************** --> +</div> + <!-- *********************************************************************** --> -<div class="doc_section"> +<h2> <a name="specifics">Compiler/Platform specific topics</a> -</div> +</h2> <!-- *********************************************************************** --> -<div class="doc_text"> +<div> <p>Notes for specific compilers and/or platforms.</p> +<h3> + <a name="msvc">Microsoft Visual C++</a> +</h3> + +<div> + +<dl> + <dt><b>LLVM_COMPILER_JOBS</b>:STRING</dt> + <dd>Specifies the maximum number of parallell compiler jobs to use + per project when building with msbuild or Visual Studio. Only supported for + Visual Studio 2008 and Visual Studio 2010 CMake generators. 0 means use all + processors. Default is 0.</dd> +</dl> + +</div> + </div> <!-- *********************************************************************** --> @@ -462,7 +556,7 @@ src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a> <a href="mailto:ofv@wanadoo.es">Oscar Fuentes</a><br> - <a href="http://llvm.org">LLVM Compiler Infrastructure</a><br> + <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br> Last modified: $Date: 2010-08-09 03:59:36 +0100 (Mon, 9 Aug 2010) $ </address> |