|  | .. _BuildingLibunwind: | 
|  |  | 
|  | ================== | 
|  | Building libunwind | 
|  | ================== | 
|  |  | 
|  | .. contents:: | 
|  | :local: | 
|  |  | 
|  | .. _build instructions: | 
|  |  | 
|  | Getting Started | 
|  | =============== | 
|  |  | 
|  | On Mac OS, the easiest way to get this library is to link with -lSystem. | 
|  | However if you want to build tip-of-trunk from here (getting the bleeding | 
|  | edge), read on. | 
|  |  | 
|  | The basic steps needed to build libc++ are: | 
|  |  | 
|  | #. Checkout LLVM: | 
|  |  | 
|  | * ``cd where-you-want-llvm-to-live`` | 
|  | * ``svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm`` | 
|  |  | 
|  | #. Checkout libunwind: | 
|  |  | 
|  | * ``cd where-you-want-llvm-to-live`` | 
|  | * ``cd llvm/runtimes`` | 
|  | * ``svn co http://llvm.org/svn/llvm-project/libunwind/trunk libunwind`` | 
|  |  | 
|  | #. Configure and build libunwind: | 
|  |  | 
|  | CMake is the only supported configuration system. | 
|  |  | 
|  | Clang is the preferred compiler when building and using libunwind. | 
|  |  | 
|  | * ``cd where you want to build llvm`` | 
|  | * ``mkdir build`` | 
|  | * ``cd build`` | 
|  | * ``cmake -G <generator> [options] <path to llvm sources>`` | 
|  |  | 
|  | For more information about configuring libunwind see :ref:`CMake Options`. | 
|  |  | 
|  | * ``make unwind`` --- will build libunwind. | 
|  | * ``make check-unwind`` --- will run the test suite. | 
|  |  | 
|  | Shared and static libraries for libunwind should now be present in llvm/build/lib. | 
|  |  | 
|  | #. **Optional**: Install libunwind | 
|  |  | 
|  | If your system already provides an unwinder, it is important to be careful | 
|  | not to replace it. Remember Use the CMake option ``CMAKE_INSTALL_PREFIX`` to | 
|  | select a safe place to install libunwind. | 
|  |  | 
|  | * ``make install-unwind`` --- Will install the libraries and the headers | 
|  |  | 
|  |  | 
|  | It is sometimes beneficial to build outside of the LLVM tree. An out-of-tree | 
|  | build would look like this: | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | $ cd where-you-want-libunwind-to-live | 
|  | $ # Check out llvm, and libunwind | 
|  | $ ``svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm`` | 
|  | $ ``svn co http://llvm.org/svn/llvm-project/libunwind/trunk libunwind`` | 
|  | $ cd where-you-want-to-build | 
|  | $ mkdir build && cd build | 
|  | $ export CC=clang CXX=clang++ | 
|  | $ cmake -DLLVM_PATH=path/to/llvm \ | 
|  | path/to/libunwind | 
|  | $ make | 
|  |  | 
|  |  | 
|  | .. _CMake Options: | 
|  |  | 
|  | 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 libunwind. | 
|  |  | 
|  |  | 
|  | .. _libunwind-specific options: | 
|  |  | 
|  | libunwind specific options | 
|  | -------------------------- | 
|  |  | 
|  | .. option:: LIBUNWIND_BUILD_32_BITS:BOOL | 
|  |  | 
|  | **Default**: Same as LLVM_BUILD_32_BITS | 
|  |  | 
|  | Toggle whether libunwind should be built with -m32. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_ASSERTIONS:BOOL | 
|  |  | 
|  | **Default**: ``ON`` | 
|  |  | 
|  | Toggle assertions independent of the build mode. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_PEDANTIC:BOOL | 
|  |  | 
|  | **Default**: ``ON`` | 
|  |  | 
|  | Compile with -Wpedantic. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_WERROR:BOOL | 
|  |  | 
|  | **Default**: ``ON`` | 
|  |  | 
|  | Compile with -Werror | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_SHARED:BOOL | 
|  |  | 
|  | **Default**: ``ON`` | 
|  |  | 
|  | Build libunwind as a shared library. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_STATIC:BOOL | 
|  |  | 
|  | **Default**: ``ON`` | 
|  |  | 
|  | Build libunwind as a static archive. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_CROSS_UNWINDING:BOOL | 
|  |  | 
|  | **Default**: ``OFF`` | 
|  |  | 
|  | Enable cross-platform unwinding support. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_ARM_WMMX:BOOL | 
|  |  | 
|  | **Default**: ``OFF`` | 
|  |  | 
|  | Enable unwinding support for ARM WMMX registers. | 
|  |  | 
|  | .. option:: LIBUNWIND_ENABLE_THREADS:BOOL | 
|  |  | 
|  | **Default**: ``ON`` | 
|  |  | 
|  | Build libunwind with threading support. | 
|  |  | 
|  | .. option:: LIBUNWIND_TARGET_TRIPLE:STRING | 
|  |  | 
|  | Target triple for cross compiling | 
|  |  | 
|  | .. option:: LIBUNWIND_GCC_TOOLCHAIN:PATH | 
|  |  | 
|  | GCC toolchain for cross compiling | 
|  |  | 
|  | .. option:: LIBUNWIND_SYSROOT | 
|  |  | 
|  | Sysroot for cross compiling |