Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / libunwind / docs / BuildingLibunwind.rst
blob79166b4769c617ad2f52e341b6ee78b48f435b50
1 .. _BuildingLibunwind:
3 ==================
4 Building libunwind
5 ==================
7 .. contents::
8   :local:
10 .. _build instructions:
12 Getting Started
13 ===============
15 On Mac OS, the easiest way to get this library is to link with -lSystem.
16 However if you want to build tip-of-trunk from here (getting the bleeding
17 edge), read on.
19 The basic steps needed to build libc++ are:
21 #. Checkout LLVM, libunwind, and related projects:
23    * ``cd where-you-want-llvm-to-live``
24    * ``git clone https://github.com/llvm/llvm-project.git``
26 #. Configure and build libunwind:
28    CMake is the only supported configuration system.
30    Clang is the preferred compiler when building and using libunwind.
32    * ``cd where you want to build llvm``
33    * ``mkdir build``
34    * ``cd build``
35    * ``cmake -G <generator> -DLLVM_ENABLE_RUNTIMES=libunwind [options] <llvm-monorepo>/runtimes``
37    For more information about configuring libunwind see :ref:`CMake Options`.
39    * ``make unwind`` --- will build libunwind.
40    * ``make check-unwind`` --- will run the test suite.
42    Shared and static libraries for libunwind should now be present in llvm/build/lib.
44 #. **Optional**: Install libunwind
46    If your system already provides an unwinder, it is important to be careful
47    not to replace it. Remember Use the CMake option ``CMAKE_INSTALL_PREFIX`` to
48    select a safe place to install libunwind.
50    * ``make install-unwind`` --- Will install the libraries and the headers
53 It is sometimes beneficial to build outside of the LLVM tree. An out-of-tree
54 build would look like this:
56 .. code-block:: bash
58   $ cd where-you-want-libunwind-to-live
59   $ # Check out llvm, and libunwind
60   $ ``svn co https://llvm.org/svn/llvm-project/llvm/trunk llvm``
61   $ ``svn co https://llvm.org/svn/llvm-project/libunwind/trunk libunwind``
62   $ cd where-you-want-to-build
63   $ mkdir build && cd build
64   $ export CC=clang CXX=clang++
65   $ cmake -DLLVM_PATH=path/to/llvm \
66           path/to/libunwind
67   $ make
70 .. _CMake Options:
72 CMake Options
73 =============
75 Here are some of the CMake variables that are used often, along with a
76 brief explanation and LLVM-specific notes. For full documentation, check the
77 CMake docs or execute ``cmake --help-variable VARIABLE_NAME``.
79 **CMAKE_BUILD_TYPE**:STRING
80   Sets the build type for ``make`` based generators. Possible values are
81   Release, Debug, RelWithDebInfo and MinSizeRel. On systems like Visual Studio
82   the user sets the build type with the IDE settings.
84 **CMAKE_INSTALL_PREFIX**:PATH
85   Path where LLVM will be installed if "make install" is invoked or the
86   "INSTALL" target is built.
88 **CMAKE_CXX_COMPILER**:STRING
89   The C++ compiler to use when building and testing libunwind.
92 .. _libunwind-specific options:
94 libunwind specific options
95 --------------------------
97 .. option:: LIBUNWIND_ENABLE_ASSERTIONS:BOOL
99   **Default**: ``ON``
101   Toggle assertions independent of the build mode.
103 .. option:: LIBUNWIND_ENABLE_PEDANTIC:BOOL
105   **Default**: ``ON``
107   Compile with -Wpedantic.
109 .. option:: LIBUNWIND_ENABLE_WERROR:BOOL
111   **Default**: ``ON``
113   Compile with -Werror
115 .. option:: LIBUNWIND_ENABLE_SHARED:BOOL
117   **Default**: ``ON``
119   Build libunwind as a shared library.
121 .. option:: LIBUNWIND_ENABLE_STATIC:BOOL
123   **Default**: ``ON``
125   Build libunwind as a static archive.
127 .. option:: LIBUNWIND_ENABLE_CROSS_UNWINDING:BOOL
129   **Default**: ``OFF``
131   Enable cross-platform unwinding support.
133 .. option:: LIBUNWIND_ENABLE_ARM_WMMX:BOOL
135   **Default**: ``OFF``
137   Enable unwinding support for ARM WMMX registers.
139 .. option:: LIBUNWIND_ENABLE_THREADS:BOOL
141   **Default**: ``ON``
143   Build libunwind with threading support.
145 .. option:: LIBUNWIND_INSTALL_LIBRARY_DIR:PATH
147   **Default**: ``lib${LIBUNWIND_LIBDIR_SUFFIX}``
149   Path where built libunwind libraries should be installed. If a relative path,
150   relative to ``CMAKE_INSTALL_PREFIX``.