Changed option name from inline-threshold to basic-inline-threshold because
[oota-llvm.git] / docs / CMake.html
index ef50f5279eb66c5dcda5371e5c547ba8a4d7c2ce..27ec88ec94788b253f5b07fa4551e9e29d9865fc 100644 (file)
   <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>
+    <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>
+  <li><a href="#specifics">Compiler/Platform specific topics</a>
+    <ul>
+    <li><a href="#msvc">Microsoft Visual C++</a></li>
+  </ul></li>
 </ul>
 
 <div class="doc_author">
-<p>Written by <a href="mailto:ofv@wanadoo.es">Óscar Fuentes</a></p>
+<p>Written by <a href="mailto:ofv@wanadoo.es">Oscar Fuentes</a></p>
 </div>
 
 <!-- *********************************************************************** -->
     the files needed by your build tool (GNU make, Visual Studio, etc) for
     building LLVM.</p>
 
-  <p>If you are really anxious
+  <p>If you are really anxious about getting a functional LLVM build,
+    go to the <a href="#quickstart">Quick start</a> section. If you
+    are a CMake novice, start on <a href="#usage">Basic CMake
+      usage</a> and then go back to the <a href="#quickstart">Quick
+      start</a> once you know what you are
+    doing. The <a href="#options">Options and variables</a> section
+    is a reference for customizing your build. If you already have
+    experience with CMake, this is the recommended starting point.
 </div>
 
 <!-- *********************************************************************** -->
 
 <div class="doc_text">
 
-<p>TODO</p>
+  <p>This section explains basic aspects of CMake, mostly for
+    explaining those options which you may need on your day-to-day
+    usage.</p>
+
+  <p>CMake comes with extensive documentation in the form of html
+    files and on the cmake executable itself. Execute <i>cmake
+    --help</i> for further help options.</p>
+
+  <p>CMake requires to know for which build tool it shall generate
+    files (GNU make, Visual Studio, Xcode, etc). If not specified on
+    the command line, it tries to guess it based on you
+    environment. Once identified the build tool, CMake uses the
+    corresponding <i>Generator</i> for creating files for your build
+    tool. You can explicitly specify the generator with the command
+    line option <i>-G "Name of the generator"</i>. For knowing the
+    available generators on your platform, execute</p>
+
+    <div class="doc_code">
+      <p><tt>cmake --help</tt></p>
+    </div>
+
+    <p>This will list the generator's names at the end of the help
+      text. Generator's names are case-sensitive. Example:</p>
+
+    <div class="doc_code">
+      <p><tt>cmake -G "Visual Studio 8 2005" path/to/llvm/source/root</tt></p>
+    </div>
+
+    <p>For a given development platform there can be more than one
+      adequate generator. If you use Visual Studio "NMake Makefiles"
+      is a generator you can use for building with NMake. By default,
+      CMake chooses the more specific generator supported by your
+      development environment. If you want an alternative generator,
+      you must tell this to CMake with the <i>-G</i> option.</p>
+
+    <p>TODO: explain variables and cache. Move explanation here from
+      #options section.</p>
 
 </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
   documentation, check the CMake docs or execute <i>cmake
-  --help-variable VARIABLE_NAME</i>.
+  --help-variable VARIABLE_NAME</i>.</p>
 
 <dl>
   <dt><b>CMAKE_BUILD_TYPE</b>:STRING</dt>
   <dd>Path where LLVM will be installed if "make install" is invoked
     or the "INSTALL" target is built.</dd>
 
+  <dt><b>CMAKE_C_FLAGS</b>:STRING</dt>
+  <dd>Extra flags to use when compiling C source files.</dd>
+
+  <dt><b>CMAKE_CXX_FLAGS</b>:STRING</dt>
+  <dd>Extra flags to use when compiling C++ source files.</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
 
 <div class="doc_text">
 
+<p>LLVM testing is not supported on Visual Studio.</p>
+
 <p>TODO</p>
 
 </div>
 
 <!-- *********************************************************************** -->
 
+<!-- *********************************************************************** -->
+<div class="doc_section">
+  <a name="specifics">Compiler/Platform specific topics</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="doc_text">
+
+<p>Notes for specific compilers and/or platforms.</p>
+
+</div>
+
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="msvc">Microsoft Visual C++</a>
+</div>
+
+<div class="doc_text">
+
+  <p>For linking the JIT into your executable, add</p>
+
+  <div class="doc_code">
+    <p><tt>/INCLUDE:_X86TargetMachineModule</tt></p>
+  </div>
+
+  <p>to your linker options. This is required for adding the relevant
+    LLVM object code to the executable. Not doing this will result on
+    some methods returning NULL (<i>ExecutionEngine::create</i>, for
+    instance).</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>
+  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" 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>
+  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
 
-  <a href="mailto:ofv@wanadoo.es">Óscar Fuentes</a><br>
+  <a href="mailto:ofv@wanadoo.es">Oscar 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) $
+  Last modified: $Date: 2008-12-31 03:59:36 +0100 (Wed, 31 Dec 2008) $
 </address>
 
 </body>