.. _BuildingCompilerRT:

===============
Building Compiler-RT
===============

.. contents::
  :local:

.. _build instructions:

The instructions on this page are aimed at vendors who ship Compiler-RT as part of an
operating system distribution, a toolchain or similar shipping vehicules. If you
are a user merely trying to use Compiler-RT in your program, you most likely want to
refer to your vendor's documentation, or to the general documentation for using
LLVM, Clang, the various santizers, etc.

CMake Options
=============

Here are 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 ``cmake --help-variable VARIABLE_NAME``.

**CMAKE_BUILD_TYPE**:STRING
  Sets the build type for ``make`` based generators. Possible values are
  Release, Debug, RelWithDebInfo and MinSizeRel. On systems like Visual Studio
  the user sets the build type with the IDE settings.

**CMAKE_INSTALL_PREFIX**:PATH
  Path where LLVM will be installed if "make install" is invoked or the
  "INSTALL" target is built.

**CMAKE_CXX_COMPILER**:STRING
  The C++ compiler to use when building and testing Compiler-RT.


.. _compiler-rt-specific options:

Compiler-RT specific options
-----------------------

.. option:: COMPILER_RT_INSTALL_PATH:PATH

  **Default**: ```` (empty relative path)

  Prefix for directories where built Compiler-RT artifacts should be installed.
  Can be an absolute path, like the default empty string, in which case it is
  relative ``CMAKE_INSTALL_PREFIX``. If setting a relative path, make sure to
  include the ``:PATH`` with your ``-D``, i.e. use
  ``-DCOMPILER_RT_INSTALL_PATH:PATH=...`` not
  ``-DCOMPILER_RT_INSTALL_PATH=...``, otherwise CMake will convert the
  path to an absolute path.

.. option:: COMPILER_RT_INSTALL_LIBRARY_DIR:PATH

  **Default**: ``lib``

  Path where built Compiler-RT libraries should be installed. If a relative
  path, relative to ``COMPILER_RT_INSTALL_PATH``.

.. option:: COMPILER_RT_INSTALL_BINARY_DIR:PATH

  **Default**: ``bin``

  Path where built Compiler-RT executables should be installed. If a relative
  path, relative to ``COMPILER_RT_INSTALL_PATH``.

.. option:: COMPILER_RT_INSTALL_INCLUDE_DIR:PATH

  **Default**: ``include``

  Path where Compiler-RT headers should be installed. If a relative
  path, relative to ``COMPILER_RT_INSTALL_PATH``.

.. option:: COMPILER_RT_INSTALL_DATA_DIR:PATH

  **Default**: ``share``

  Path where Compiler-RT data should be installed. If a relative
  path, relative to ``COMPILER_RT_INSTALL_PATH``.

.. _LLVM-specific variables:

LLVM-specific options
---------------------

.. option:: LLVM_LIBDIR_SUFFIX:STRING

  Extra suffix to append to the directory where libraries are to be
  installed. On a 64-bit architecture, one could use ``-DLLVM_LIBDIR_SUFFIX=64``
  to install libraries to ``/usr/lib64``.
