mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
272 lines
8.7 KiB
HTML
272 lines
8.7 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|||
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<title>Building LLVM with CMake</title>
|
|||
|
<link rel="stylesheet" href="llvm.css" type="text/css">
|
|||
|
</head>
|
|||
|
|
|||
|
<div class="doc_title">
|
|||
|
Building LLVM with CMake
|
|||
|
</div>
|
|||
|
|
|||
|
<ul>
|
|||
|
<li><a href="#intro">Introduction</a></li>
|
|||
|
<li><a href="#quickstart">Quick start</a></li>
|
|||
|
<li><a href="#usage">Basic CMake usage</a>
|
|||
|
<li><a href="#options">Options and variables</a>
|
|||
|
<ul>
|
|||
|
<li><a href="#freccmake">Frequently-used CMake variables</a></li>
|
|||
|
<li><a href="#llvmvars">LLVM-specific variables</a></li>
|
|||
|
</ul></li>
|
|||
|
<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>
|
|||
|
|
|||
|
<div class="doc_author">
|
|||
|
<p>Written by <a href="mailto:ofv@wanadoo.es"><EFBFBD>scar Fuentes</a></p>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="intro">Introduction</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p><a href="http://www.cmake.org/">CMake</a> is a cross-platform
|
|||
|
build-generator tool. CMake does not build the project, it generates
|
|||
|
the files needed by your build tool (GNU make, Visual Studio, etc) for
|
|||
|
building LLVM.</p>
|
|||
|
|
|||
|
<p>If you are really anxious
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="quickstart">Quick start</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p> We use here the command-line, non-interactive CMake interface </p>
|
|||
|
|
|||
|
<ol>
|
|||
|
|
|||
|
<li><p><a href=http://www.cmake.org/cmake/resources/software.html>Download</a>
|
|||
|
and install CMake. Version 2.6.2 is the minimum required.</p>
|
|||
|
|
|||
|
<li><p>Open a shell. Your development tools must be reachable from this
|
|||
|
shell through the PATH environment variable.</p>
|
|||
|
|
|||
|
<li><p>Create a directory for containing the build. It is not
|
|||
|
supported to build LLVM on the source directory. cd to this
|
|||
|
directory:</p>
|
|||
|
<div class="doc_code">
|
|||
|
<p><tt>mkdir mybuilddir</tt></p>
|
|||
|
<p><tt>cd mybuilddir</tt></p>
|
|||
|
</div>
|
|||
|
|
|||
|
<li><p>Execute this command on the shell
|
|||
|
replacing <i>path/to/llvm/source/root</i> with the path to the
|
|||
|
root of your LLVM source tree:</p>
|
|||
|
<div class="doc_code">
|
|||
|
<p><tt>cmake path/to/llvm/source/root</tt></p>
|
|||
|
</div>
|
|||
|
|
|||
|
<p>CMake will detect your development environment, perform a
|
|||
|
series of test and generate the files required for building
|
|||
|
LLVM. CMake will use default values for all build
|
|||
|
parameters. See the <a href="#options">Options and variables</a>
|
|||
|
section for fine-tuning your build</p>
|
|||
|
|
|||
|
<p>This can fail if CMake can't detect your toolset, or if it
|
|||
|
thinks that the environment is not sane enough. On this case
|
|||
|
make sure that the toolset that you intend to use is the only
|
|||
|
one reachable from the shell and that the shell itself is the
|
|||
|
correct one for you development environment. CMake will refuse
|
|||
|
to build MinGW makefiles if you have a POSIX shell reachable
|
|||
|
through the PATH environment variable, for instance. You can
|
|||
|
force CMake to use a given build tool, see
|
|||
|
the <a href="#usage">Usage</a> section.</p>
|
|||
|
|
|||
|
</ol>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="usage">Basic CMake usage</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p>TODO</p>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="options">Options and variables</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p>Variables customize how the build will be generated. Options are
|
|||
|
boolean variables, with possible values ON/OFF. Options and
|
|||
|
variables are defined on the CMake command line like this:</p>
|
|||
|
|
|||
|
<div class="doc_code">
|
|||
|
<p><tt>cmake -DVARIABLE=value path/to/llvm/source</tt></p>
|
|||
|
</div>
|
|||
|
|
|||
|
<p>You can set a variable after the initial CMake invocation for
|
|||
|
changing its value. You can also undefine a variable:</p>
|
|||
|
|
|||
|
<div class="doc_code">
|
|||
|
<p><tt>cmake -UVARIABLE path/to/llvm/source</tt></p>
|
|||
|
</div>
|
|||
|
|
|||
|
<p>Variables are stored on the CMake cache. This is a file
|
|||
|
named <it>CMakeCache.txt</it> on the root of the build
|
|||
|
directory. Do not hand-edit it.</p>
|
|||
|
|
|||
|
<p>Variables are listed here appending its type after a colon. It is
|
|||
|
correct to write the variable and the type on the CMake command
|
|||
|
line:</p>
|
|||
|
|
|||
|
<div class="doc_code">
|
|||
|
<p><tt>cmake -DVARIABLE:TYPE=value path/to/llvm/source</tt></p>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- ======================================================================= -->
|
|||
|
<div class="doc_subsection">
|
|||
|
<a name="freccmake">Frequently-used CMake variables</a>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p>Here are listed some of the CMake variables that are used often,
|
|||
|
along with a brief explanation and LLVM-specific notes. For full
|
|||
|
documentation, check the CMake docs or execute <i>cmake
|
|||
|
--help-variable VARIABLE_NAME</i>.
|
|||
|
|
|||
|
<dl>
|
|||
|
<dt><b>CMAKE_BUILD_TYPE</b>:STRING</dt>
|
|||
|
|
|||
|
<dd>Sets the build type for <i>make</i> based generators. Possible
|
|||
|
values are Release, Debug, RelWithDebInfo and MiniSizeRel. On
|
|||
|
systems like Visual Studio the user sets the build type with the IDE
|
|||
|
settings.</dd>
|
|||
|
|
|||
|
<dt><b>CMAKE_INSTALL_PREFIX</b>:PATH</dt>
|
|||
|
<dd>Path where LLVM will be installed if "make install" is invoked
|
|||
|
or the "INSTALL" target is built.</dd>
|
|||
|
|
|||
|
<dt><b>BUILD_SHARED_LIBS</b>:BOOL</dt>
|
|||
|
<dd>Flag indicating is shared libraries will be built. Its default
|
|||
|
value is OFF. Shared libraries are not supported on Windows and
|
|||
|
not recommended in the other OSes.</dd>
|
|||
|
</dl>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- ======================================================================= -->
|
|||
|
<div class="doc_subsection">
|
|||
|
<a name="llvmvars">LLVM-specific variables</a>
|
|||
|
</div>
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<dl>
|
|||
|
<dt><b>LLVM_TARGETS_TO_BUILD</b>:STRING</dt>
|
|||
|
<dd>Semicolon-separated list of targets to build, or <i>all</i> for
|
|||
|
building all targets. Case-sensitive. For Visual C++ defaults
|
|||
|
to <i>X86</i>. On the other cases defaults to <i>all</i>. Example:
|
|||
|
<i>-DLLVM_TARGETS_TO_BUILD="X86;PowerPC;Alpha"</i>.</dd>
|
|||
|
|
|||
|
<dt><b>LLVM_ENABLE_THREADS</b>:BOOL</dt>
|
|||
|
<dd>Build with threads support, if available. Defaults to ON.</dd>
|
|||
|
|
|||
|
<dt><b>LLVM_ENABLE_PIC</b>:BOOL</dt>
|
|||
|
<dd>Add the <i>-fPIC</i> flag to the compiler command-line, if the
|
|||
|
compiler supports this flag. Some systems, like Windows, does not
|
|||
|
need this flag. Defaults to OFF.</dd>
|
|||
|
|
|||
|
<dt><b>LLVM_BUILD_32_BITS</b>:BOOL</dt>
|
|||
|
<dd>Build 32-bits executables and libraries on 64-bits systems. This
|
|||
|
option is available only on some 64-bits unix systems. Defaults to
|
|||
|
OFF.</dd>
|
|||
|
|
|||
|
<dt><b>LLVM_PLO_FLAGS</b>:STRING</dt>
|
|||
|
<dd>Extra flags for creating partially linked objects. Visual C++
|
|||
|
does not use this.</dd>
|
|||
|
|
|||
|
<dt><b>LLVM_TABLEGEN</b>:STRING</dt>
|
|||
|
<dd>Full path to a native TableGen executable (usually
|
|||
|
named <i>tblgen</i>). This is intented for cross-compiling: if the
|
|||
|
user sets this variable, no native TableGen will be created.</dd>
|
|||
|
</dl>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="testing">Executing the test suite</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p>TODO</p>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="cross">Cross compiling</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p>TODO</p>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
<div class="doc_section">
|
|||
|
<a name="embedding">Embedding LLVM in your project</a>
|
|||
|
</div>
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<div class="doc_text">
|
|||
|
|
|||
|
<p>TODO</p>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- *********************************************************************** -->
|
|||
|
|
|||
|
<hr>
|
|||
|
<address>
|
|||
|
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img
|
|||
|
src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
|
|||
|
<a href="http://validator.w3.org/check/referer"><img
|
|||
|
src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
|
|||
|
|
|||
|
<a href="mailto:ofv@wanadoo.es"><EFBFBD>scar Fuentes</a><br>
|
|||
|
<a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>
|
|||
|
Last modified: $Date: 2008-10-27 00:59:36 +0100 (Mon, 27 Oct 2008) $
|
|||
|
</address>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|