forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			162 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
| .. _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, libunwind, and related projects:
 | |
| 
 | |
|    * ``cd where-you-want-llvm-to-live``
 | |
|    * ``git clone https://github.com/llvm/llvm-project.git``
 | |
| 
 | |
| #. 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_PROJECTS=libunwind [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
 |