Building libunwind¶
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-livesvn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
Checkout libunwind:
cd where-you-want-llvm-to-livecd llvm/runtimessvn 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 llvmmkdir buildcd buildcmake -G <generator> [options] <path to llvm sources>
For more information about configuring libunwind see 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_PREFIXto 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:
$ 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¶
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
makebased 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_BUILD_32_BITS:BOOL¶ Default: Same as LLVM_BUILD_32_BITS
Toggle whether libunwind should be built with -m32.
-
LIBUNWIND_ENABLE_ASSERTIONS:BOOL¶ Default:
ONToggle assertions independent of the build mode.
-
LIBUNWIND_ENABLE_PEDANTIC:BOOL¶ Default:
ONCompile with -Wpedantic.
-
LIBUNWIND_ENABLE_WERROR:BOOL¶ Default:
ONCompile with -Werror
Default:
ONBuild libunwind as a shared library.
-
LIBUNWIND_ENABLE_STATIC:BOOL¶ Default:
ONBuild libunwind as a static archive.
-
LIBUNWIND_ENABLE_CROSS_UNWINDING:BOOL¶ Default:
OFFEnable cross-platform unwinding support.
-
LIBUNWIND_ENABLE_ARM_WMMX:BOOL¶ Default:
OFFEnable unwinding support for ARM WMMX registers.
-
LIBUNWIND_ENABLE_THREADS:BOOL¶ Default:
ONBuild libunwind with threading support.
-
LIBUNWIND_TARGET_TRIPLE:STRING¶ Target triple for cross compiling
-
LIBUNWIND_GCC_TOOLCHAIN:PATH¶ GCC toolchain for cross compiling
-
LIBUNWIND_SYSROOT¶ Sysroot for cross compiling