(buildinglibunwind)= # Building libunwind :::{contents} :local: true ::: (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 libunwind are: 1. Checkout LLVM, libunwind, and related projects: - `cd where-you-want-llvm-to-live` - `git clone https://github.com/llvm/llvm-project.git` 2. 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 -DLLVM_ENABLE_RUNTIMES=libunwind [options] /runtimes` For more information about configuring libunwind see [CMake Options](#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. 3. **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 (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_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**: ``OFF`` 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_INSTALL_LIBRARY_DIR:PATH **Default**: ``lib${LIBUNWIND_LIBDIR_SUFFIX}`` Path where built libunwind libraries should be installed. If a relative path, relative to ``CMAKE_INSTALL_PREFIX``. :::