blob: 7287eb0f901b73b8cb184c72d7098e86c522c687 [file] [view] [edit]
(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 <generator> -DLLVM_ENABLE_RUNTIMES=libunwind [options] <llvm-monorepo>/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``.
:::