<div dir="ltr">Could you please change back to Unix line endings?</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 28, 2016 at 10:59 AM, Mike Spertus via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: mps<br>
Date: Mon Mar 28 12:59:40 2016<br>
New Revision: 264602<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=264602&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=264602&view=rev</a><br>
Log:<br>
Forgot to commit this file in revision 264601<br>
<br>
<br>
Modified:<br>
    llvm/trunk/CMakeLists.txt<br>
<br>
Modified: llvm/trunk/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=264602&r1=264601&r2=264602&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=264602&r1=264601&r2=264602&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/CMakeLists.txt (original)<br>
+++ llvm/trunk/CMakeLists.txt Mon Mar 28 12:59:40 2016<br>
@@ -1,789 +1,800 @@<br>
-# See docs/CMake.html for instructions about how to build LLVM with CMake.<br>
-<br>
-cmake_minimum_required(VERSION 2.8.12.2)<br>
-<br>
-if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)<br>
-  message(STATUS "No build type selected, default to Debug")<br>
-  set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (default Debug)")<br>
-endif()<br>
-<br>
-if(POLICY CMP0022)<br>
-  cmake_policy(SET CMP0022 NEW) # automatic when 2.8.12 is required<br>
-endif()<br>
-<br>
-if (POLICY CMP0051)<br>
-  # CMake 3.1 and higher include generator expressions of the form<br>
-  # $<TARGETLIB:obj> in the SOURCES property.  These need to be<br>
-  # stripped everywhere that access the SOURCES property, so we just<br>
-  # defer to the OLD behavior of not including generator expressions<br>
-  # in the output for now.<br>
-  cmake_policy(SET CMP0051 OLD)<br>
-endif()<br>
-<br>
-if(CMAKE_VERSION VERSION_LESS 3.1.20141117)<br>
-  set(cmake_3_2_USES_TERMINAL)<br>
-else()<br>
-  set(cmake_3_2_USES_TERMINAL USES_TERMINAL)<br>
-endif()<br>
-<br>
-if(NOT DEFINED LLVM_VERSION_MAJOR)<br>
-  set(LLVM_VERSION_MAJOR 3)<br>
-endif()<br>
-if(NOT DEFINED LLVM_VERSION_MINOR)<br>
-  set(LLVM_VERSION_MINOR 9)<br>
-endif()<br>
-if(NOT DEFINED LLVM_VERSION_PATCH)<br>
-  set(LLVM_VERSION_PATCH 0)<br>
-endif()<br>
-if(NOT DEFINED LLVM_VERSION_SUFFIX)<br>
-  set(LLVM_VERSION_SUFFIX svn)<br>
-endif()<br>
-<br>
-if (POLICY CMP0048)<br>
-  cmake_policy(SET CMP0048 NEW)<br>
-  set(cmake_3_0_PROJ_VERSION<br>
-    VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})<br>
-  set(cmake_3_0_LANGUAGES LANGUAGES)<br>
-endif()<br>
-<br>
-if (NOT PACKAGE_VERSION)<br>
-  set(PACKAGE_VERSION<br>
-    "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}")<br>
-endif()<br>
-<br>
-project(LLVM<br>
-  ${cmake_3_0_PROJ_VERSION}<br>
-  ${cmake_3_0_LANGUAGES}<br>
-  C CXX ASM)<br>
-<br>
-# The following only works with the Ninja generator in CMake >= 3.0.<br>
-set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING<br>
-  "Define the maximum number of concurrent compilation jobs.")<br>
-if(LLVM_PARALLEL_COMPILE_JOBS)<br>
-  if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja")<br>
-    message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.")<br>
-  else()<br>
-    set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${LLVM_PARALLEL_COMPILE_JOBS})<br>
-    set(CMAKE_JOB_POOL_COMPILE compile_job_pool)<br>
-  endif()<br>
-endif()<br>
-<br>
-set(LLVM_BUILD_GLOBAL_ISEL OFF CACHE BOOL "Experimental: Build GlobalISel")<br>
-if(LLVM_BUILD_GLOBAL_ISEL)<br>
-  add_definitions(-DLLVM_BUILD_GLOBAL_ISEL)<br>
-endif()<br>
-<br>
-set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING<br>
-  "Define the maximum number of concurrent link jobs.")<br>
-if(LLVM_PARALLEL_LINK_JOBS)<br>
-  if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja")<br>
-    message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.")<br>
-  else()<br>
-    set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS})<br>
-    set(CMAKE_JOB_POOL_LINK link_job_pool)<br>
-  endif()<br>
-endif()<br>
-<br>
-# Add path for custom modules<br>
-set(CMAKE_MODULE_PATH<br>
-  ${CMAKE_MODULE_PATH}<br>
-  "${CMAKE_CURRENT_SOURCE_DIR}/cmake"<br>
-  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"<br>
-  )<br>
-<br>
-# Generate a CompilationDatabase (compile_commands.json file) for our build,<br>
-# for use by clang_complete, YouCompleteMe, etc.<br>
-set(CMAKE_EXPORT_COMPILE_COMMANDS 1)<br>
-<br>
-option(LLVM_INSTALL_UTILS "Include utility binaries in the 'install' target." OFF)<br>
-<br>
-option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)<br>
-<br>
-option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON)<br>
-if ( LLVM_USE_FOLDERS )<br>
-  set_property(GLOBAL PROPERTY USE_FOLDERS ON)<br>
-endif()<br>
-<br>
-include(VersionFromVCS)<br>
-<br>
-option(LLVM_APPEND_VC_REV<br>
-  "Append the version control system revision id to LLVM version" OFF)<br>
-<br>
-if( LLVM_APPEND_VC_REV )<br>
-  add_version_info_from_vcs(PACKAGE_VERSION)<br>
-endif()<br>
-<br>
-set(PACKAGE_NAME LLVM)<br>
-set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")<br>
-set(PACKAGE_BUGREPORT "<a href="http://llvm.org/bugs/" rel="noreferrer" target="_blank">http://llvm.org/bugs/</a>")<br>
-<br>
-set(BUG_REPORT_URL "${PACKAGE_BUGREPORT}" CACHE STRING<br>
-  "Default URL where bug reports are to be submitted.")<br>
-<br>
-# Configure CPack.<br>
-set(CPACK_PACKAGE_INSTALL_DIRECTORY "LLVM")<br>
-set(CPACK_PACKAGE_VENDOR "LLVM")<br>
-set(CPACK_PACKAGE_VERSION_MAJOR ${LLVM_VERSION_MAJOR})<br>
-set(CPACK_PACKAGE_VERSION_MINOR ${LLVM_VERSION_MINOR})<br>
-set(CPACK_PACKAGE_VERSION_PATCH ${LLVM_VERSION_PATCH})<br>
-set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})<br>
-set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")<br>
-set(CPACK_NSIS_COMPRESSOR "/SOLID lzma \r\n SetCompressorDictSize 32")<br>
-if(WIN32 AND NOT UNIX)<br>
-  set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "LLVM")<br>
-  set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_logo.bmp")<br>
-  set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")<br>
-  set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")<br>
-  set(CPACK_NSIS_MODIFY_PATH "ON")<br>
-  set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON")<br>
-  set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS<br>
-    "ExecWait '$INSTDIR/tools/msbuild/install.bat'")<br>
-  set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS<br>
-    "ExecWait '$INSTDIR/tools/msbuild/uninstall.bat'")<br>
-  if( CMAKE_CL_64 )<br>
-    set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")<br>
-  endif()<br>
-endif()<br>
-include(CPack)<br>
-<br>
-# Sanity check our source directory to make sure that we are not trying to<br>
-# generate an in-tree build (unless on MSVC_IDE, where it is ok), and to make<br>
-# sure that we don't have any stray generated files lying around in the tree<br>
-# (which would end up getting picked up by header search, instead of the correct<br>
-# versions).<br>
-if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )<br>
-  message(FATAL_ERROR "In-source builds are not allowed.<br>
-CMake would overwrite the makefiles distributed with LLVM.<br>
-Please create a directory and run cmake from there, passing the path<br>
-to this source directory as the last argument.<br>
-This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.<br>
-Please delete them.")<br>
-endif()<br>
-if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )<br>
-  file(GLOB_RECURSE<br>
-    tablegenned_files_on_include_dir<br>
-    "${CMAKE_CURRENT_SOURCE_DIR}/include/llvm/*.gen")<br>
-  file(GLOB_RECURSE<br>
-    tablegenned_files_on_lib_dir<br>
-    "${CMAKE_CURRENT_SOURCE_DIR}/lib/Target/*.inc")<br>
-  if( tablegenned_files_on_include_dir OR tablegenned_files_on_lib_dir)<br>
-    message(FATAL_ERROR "Apparently there is a previous in-source build,<br>
-probably as the result of running `configure' and `make' on<br>
-${CMAKE_CURRENT_SOURCE_DIR}.<br>
-This may cause problems. The suspicious files are:<br>
-${tablegenned_files_on_lib_dir}<br>
-${tablegenned_files_on_include_dir}<br>
-Please clean the source directory.")<br>
-  endif()<br>
-endif()<br>
-<br>
-string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)<br>
-<br>
-if (CMAKE_BUILD_TYPE AND<br>
-    NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)$")<br>
-  message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")<br>
-endif()<br>
-<br>
-set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )<br>
-<br>
-# They are used as destination of target generators.<br>
-set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)<br>
-set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})<br>
-if(WIN32 OR CYGWIN)<br>
-  # DLL platform -- put DLLs into bin.<br>
-  set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})<br>
-else()<br>
-  set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR})<br>
-endif()<br>
-<br>
-# Each of them corresponds to llvm-config's.<br>
-set(LLVM_TOOLS_BINARY_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) # --bindir<br>
-set(LLVM_LIBRARY_DIR      ${LLVM_LIBRARY_OUTPUT_INTDIR}) # --libdir<br>
-set(LLVM_MAIN_SRC_DIR     ${CMAKE_CURRENT_SOURCE_DIR}  ) # --src-root<br>
-set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_SRC_DIR}/include ) # --includedir<br>
-set(LLVM_BINARY_DIR       ${CMAKE_CURRENT_BINARY_DIR}  ) # --prefix<br>
-<br>
-set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)<br>
-set(LLVM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)<br>
-<br>
-set(LLVM_ALL_TARGETS<br>
-  AArch64<br>
-  AMDGPU<br>
-  ARM<br>
-  BPF<br>
-  CppBackend<br>
-  Hexagon<br>
-  Mips<br>
-  MSP430<br>
-  NVPTX<br>
-  PowerPC<br>
-  Sparc<br>
-  SystemZ<br>
-  X86<br>
-  XCore<br>
-  )<br>
-<br>
-# List of targets with JIT support:<br>
-set(LLVM_TARGETS_WITH_JIT X86 PowerPC AArch64 ARM Mips SystemZ)<br>
-<br>
-set(LLVM_TARGETS_TO_BUILD "all"<br>
-    CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")<br>
-<br>
-set(LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ""<br>
-  CACHE STRING "Semicolon-separated list of experimental targets to build.")<br>
-<br>
-option(BUILD_SHARED_LIBS<br>
-  "Build all libraries as shared libraries instead of static" OFF)<br>
-<br>
-option(LLVM_ENABLE_TIMESTAMPS "Enable embedding timestamp information in build" ON)<br>
-if(LLVM_ENABLE_TIMESTAMPS)<br>
-  set(ENABLE_TIMESTAMPS 1)<br>
-endif()<br>
-<br>
-option(LLVM_ENABLE_BACKTRACES "Enable embedding backtraces on crash." ON)<br>
-if(LLVM_ENABLE_BACKTRACES)<br>
-  set(ENABLE_BACKTRACES 1)<br>
-endif()<br>
-<br>
-option(LLVM_ENABLE_CRASH_OVERRIDES "Enable crash overrides." ON)<br>
-if(LLVM_ENABLE_CRASH_OVERRIDES)<br>
-  set(ENABLE_CRASH_OVERRIDES 1)<br>
-endif()<br>
-<br>
-option(LLVM_ENABLE_FFI "Use libffi to call external functions from the interpreter" OFF)<br>
-set(FFI_LIBRARY_DIR "" CACHE PATH "Additional directory, where CMake should search for libffi.so")<br>
-set(FFI_INCLUDE_DIR "" CACHE PATH "Additional directory, where CMake should search for ffi.h or ffi/ffi.h")<br>
-<br>
-set(LLVM_TARGET_ARCH "host"<br>
-  CACHE STRING "Set target to use for LLVM JIT or use \"host\" for automatic detection.")<br>
-<br>
-option(LLVM_ENABLE_TERMINFO "Use terminfo database if available." ON)<br>
-<br>
-option(LLVM_ENABLE_THREADS "Use threads if available." ON)<br>
-<br>
-option(LLVM_ENABLE_ZLIB "Use zlib for compression/decompression if available." ON)<br>
-<br>
-if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )<br>
-  set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )<br>
-endif()<br>
-<br>
-set(LLVM_TARGETS_TO_BUILD<br>
-   ${LLVM_TARGETS_TO_BUILD}<br>
-   ${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD})<br>
-list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)<br>
-<br>
-include(AddLLVMDefinitions)<br>
-<br>
-option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON)<br>
-option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)<br>
-option(LLVM_ENABLE_MODULES "Compile with C++ modules enabled." OFF)<br>
-option(LLVM_ENABLE_CXX1Y "Compile with C++1y enabled." OFF)<br>
-option(LLVM_ENABLE_LIBCXX "Use libc++ if available." OFF)<br>
-option(LLVM_ENABLE_LIBCXXABI "Use libc++abi when using libc++." OFF)<br>
-option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)<br>
-option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)<br>
-<br>
-if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" )<br>
-  option(LLVM_ENABLE_ASSERTIONS "Enable assertions" OFF)<br>
-else()<br>
-  option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON)<br>
-endif()<br>
-<br>
-set(LLVM_ABI_BREAKING_CHECKS "WITH_ASSERTS" CACHE STRING<br>
-  "Enable abi-breaking checks.  Can be WITH_ASSERTS, FORCE_ON or FORCE_OFF.")<br>
-<br>
-option(LLVM_FORCE_USE_OLD_HOST_TOOLCHAIN<br>
-       "Set to ON to force using an old, unsupported host toolchain." OFF)<br>
-<br>
-option(LLVM_USE_INTEL_JITEVENTS<br>
-  "Use Intel JIT API to inform Intel(R) VTune(TM) Amplifier XE 2011 about JIT code"<br>
-  OFF)<br>
-<br>
-if( LLVM_USE_INTEL_JITEVENTS )<br>
-  # Verify we are on a supported platform<br>
-  if( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" AND NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )<br>
-    message(FATAL_ERROR<br>
-      "Intel JIT API support is available on Linux and Windows only.")<br>
-  endif()<br>
-endif( LLVM_USE_INTEL_JITEVENTS )<br>
-<br>
-option(LLVM_USE_OPROFILE<br>
-  "Use opagent JIT interface to inform OProfile about JIT code" OFF)<br>
-<br>
-option(LLVM_EXTERNALIZE_DEBUGINFO<br>
-  "Generate dSYM files and strip executables and libraries (Darwin Only)" OFF)<br>
-<br>
-# If enabled, verify we are on a platform that supports oprofile.<br>
-if( LLVM_USE_OPROFILE )<br>
-  if( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )<br>
-    message(FATAL_ERROR "OProfile support is available on Linux only.")<br>
-  endif( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )<br>
-endif( LLVM_USE_OPROFILE )<br>
-<br>
-set(LLVM_USE_SANITIZER "" CACHE STRING<br>
-  "Define the sanitizer used to build binaries and tests.")<br>
-<br>
-option(LLVM_USE_SPLIT_DWARF<br>
-  "Use -gsplit-dwarf when compiling llvm." OFF)<br>
-<br>
-option(WITH_POLLY "Build LLVM with Polly" ON)<br>
-option(LINK_POLLY_INTO_TOOLS "Static link Polly into tools" OFF)<br>
-<br>
-# Define an option controlling whether we should build for 32-bit on 64-bit<br>
-# platforms, where supported.<br>
-if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )<br>
-  # TODO: support other platforms and toolchains.<br>
-  option(LLVM_BUILD_32_BITS "Build 32 bits executables and libraries." OFF)<br>
-endif()<br>
-<br>
-# Define the default arguments to use with 'lit', and an option for the user to<br>
-# override.<br>
-set(LIT_ARGS_DEFAULT "-sv")<br>
-if (MSVC_IDE OR XCODE)<br>
-  set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")<br>
-endif()<br>
-set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")<br>
-<br>
-# On Win32 hosts, provide an option to specify the path to the GnuWin32 tools.<br>
-if( WIN32 AND NOT CYGWIN )<br>
-  set(LLVM_LIT_TOOLS_DIR "" CACHE PATH "Path to GnuWin32 tools")<br>
-endif()<br>
-<br>
-# Define options to control the inclusion and default build behavior for<br>
-# components which may not strictly be necessary (tools, examples, and tests).<br>
-#<br>
-# This is primarily to support building smaller or faster project files.<br>
-option(LLVM_INCLUDE_TOOLS "Generate build targets for the LLVM tools." ON)<br>
-option(LLVM_BUILD_TOOLS<br>
-  "Build the LLVM tools. If OFF, just generate build targets." ON)<br>
-<br>
-option(LLVM_INCLUDE_UTILS "Generate build targets for the LLVM utils." ON)<br>
-<br>
-option(LLVM_BUILD_RUNTIME<br>
-  "Build the LLVM runtime libraries." ON)<br>
-option(LLVM_BUILD_EXAMPLES<br>
-  "Build the LLVM example programs. If OFF, just generate build targets." OFF)<br>
-option(LLVM_INCLUDE_EXAMPLES "Generate build targets for the LLVM examples" ON)<br>
-<br>
-option(LLVM_BUILD_TESTS<br>
-  "Build LLVM unit tests. If OFF, just generate build targets." OFF)<br>
-option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)<br>
-option(LLVM_INCLUDE_GO_TESTS "Include the Go bindings tests in test build targets." ON)<br>
-<br>
-option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)<br>
-option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)<br>
-option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API documentation." OFF)<br>
-option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)<br>
-<br>
-option (LLVM_BUILD_EXTERNAL_COMPILER_RT<br>
-  "Build compiler-rt as an external project." OFF)<br>
-<br>
-# You can configure which libraries from LLVM you want to include in the<br>
-# shared library by setting LLVM_DYLIB_COMPONENTS to a semi-colon delimited<br>
-# list of LLVM components. All component names handled by llvm-config are valid.<br>
-if(NOT DEFINED LLVM_DYLIB_COMPONENTS)<br>
-  set(LLVM_DYLIB_COMPONENTS "all" CACHE STRING<br>
-    "Semicolon-separated list of components to include in libLLVM, or \"all\".")<br>
-endif()<br>
-option(LLVM_LINK_LLVM_DYLIB "Link tools against the libllvm dynamic library" OFF)<br>
-option(LLVM_BUILD_LLVM_C_DYLIB "Build libllvm-c re-export library (Darwin Only)" OFF)<br>
-set(LLVM_BUILD_LLVM_DYLIB_default OFF)<br>
-if(LLVM_LINK_LLVM_DYLIB OR LLVM_BUILD_LLVM_C_DYLIB)<br>
-  set(LLVM_BUILD_LLVM_DYLIB_default ON)<br>
-endif()<br>
-option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" ${LLVM_BUILD_LLVM_DYLIB_default})<br>
-<br>
-option(LLVM_OPTIMIZED_TABLEGEN "Force TableGen to be built with optimization" OFF)<br>
-if(CMAKE_CROSSCOMPILING OR (LLVM_OPTIMIZED_TABLEGEN AND LLVM_ENABLE_ASSERTIONS))<br>
-  set(LLVM_USE_HOST_TOOLS ON)<br>
-endif()<br>
-<br>
-# All options referred to from HandleLLVMOptions have to be specified<br>
-# BEFORE this include, otherwise options will not be correctly set on<br>
-# first cmake run<br>
-include(config-ix)<br>
-<br>
-string(REPLACE "Native" ${LLVM_NATIVE_ARCH}<br>
-  LLVM_TARGETS_TO_BUILD "${LLVM_TARGETS_TO_BUILD}")<br>
-list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)<br>
-<br>
-# By default, we target the host, but this can be overridden at CMake<br>
-# invocation time.<br>
-set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING<br>
-  "Default target for which LLVM will generate code." )<br>
-set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")<br>
-<br>
-include(HandleLLVMOptions)<br>
-<br>
-# Verify that we can find a Python 2 interpreter.  Python 3 is unsupported.<br>
-# FIXME: We should support systems with only Python 3, but that requires work<br>
-# on LLDB.<br>
-set(Python_ADDITIONAL_VERSIONS 2.7)<br>
-include(FindPythonInterp)<br>
-if( NOT PYTHONINTERP_FOUND )<br>
-  message(FATAL_ERROR<br>
-"Unable to find Python interpreter, required for builds and testing.<br>
-<br>
-Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")<br>
-endif()<br>
-<br>
-if( ${PYTHON_VERSION_STRING} VERSION_LESS 2.7 )<br>
-  message(FATAL_ERROR "Python 2.7 or newer is required")<br>
-endif()<br>
-<br>
-######<br>
-# LLVMBuild Integration<br>
-#<br>
-# We use llvm-build to generate all the data required by the CMake based<br>
-# build system in one swoop:<br>
-#<br>
-#  - We generate a file (a CMake fragment) in the object root which contains<br>
-#    all the definitions that are required by CMake.<br>
-#<br>
-#  - We generate the library table used by llvm-config.<br>
-#<br>
-#  - We generate the dependencies for the CMake fragment, so that we will<br>
-#    automatically reconfigure outselves.<br>
-<br>
-set(LLVMBUILDTOOL "${LLVM_MAIN_SRC_DIR}/utils/llvm-build/llvm-build")<br>
-set(LLVMCONFIGLIBRARYDEPENDENCIESINC<br>
-  "${LLVM_BINARY_DIR}/tools/llvm-config/LibraryDependencies.inc")<br>
-set(LLVMBUILDCMAKEFRAG<br>
-  "${LLVM_BINARY_DIR}/LLVMBuild.cmake")<br>
-<br>
-# Create the list of optional components that are enabled<br>
-if (LLVM_USE_INTEL_JITEVENTS)<br>
-  set(LLVMOPTIONALCOMPONENTS IntelJITEvents)<br>
-endif (LLVM_USE_INTEL_JITEVENTS)<br>
-if (LLVM_USE_OPROFILE)<br>
-  set(LLVMOPTIONALCOMPONENTS ${LLVMOPTIONALCOMPONENTS} OProfileJIT)<br>
-endif (LLVM_USE_OPROFILE)<br>
-<br>
-message(STATUS "Constructing LLVMBuild project information")<br>
-execute_process(<br>
-  COMMAND ${PYTHON_EXECUTABLE} ${LLVMBUILDTOOL}<br>
-            --native-target "${LLVM_NATIVE_ARCH}"<br>
-            --enable-targets "${LLVM_TARGETS_TO_BUILD}"<br>
-            --enable-optional-components "${LLVMOPTIONALCOMPONENTS}"<br>
-            --write-library-table ${LLVMCONFIGLIBRARYDEPENDENCIESINC}<br>
-            --write-cmake-fragment ${LLVMBUILDCMAKEFRAG}<br>
-            OUTPUT_VARIABLE LLVMBUILDOUTPUT<br>
-            ERROR_VARIABLE LLVMBUILDERRORS<br>
-            OUTPUT_STRIP_TRAILING_WHITESPACE<br>
-            ERROR_STRIP_TRAILING_WHITESPACE<br>
-  RESULT_VARIABLE LLVMBUILDRESULT)<br>
-<br>
-# On Win32, CMake doesn't properly handle piping the default output/error<br>
-# streams into the GUI console. So, we explicitly catch and report them.<br>
-if( NOT "${LLVMBUILDOUTPUT}" STREQUAL "")<br>
-  message(STATUS "llvm-build output: ${LLVMBUILDOUTPUT}")<br>
-endif()<br>
-if( NOT "${LLVMBUILDRESULT}" STREQUAL "0" )<br>
-  message(FATAL_ERROR<br>
-    "Unexpected failure executing llvm-build: ${LLVMBUILDERRORS}")<br>
-endif()<br>
-<br>
-# Include the generated CMake fragment. This will define properties from the<br>
-# LLVMBuild files in a format which is easy to consume from CMake, and will add<br>
-# the dependencies so that CMake will reconfigure properly when the LLVMBuild<br>
-# files change.<br>
-include(${LLVMBUILDCMAKEFRAG})<br>
-<br>
-######<br>
-<br>
-# Configure all of the various header file fragments LLVM uses which depend on<br>
-# configuration variables.<br>
-set(LLVM_ENUM_TARGETS "")<br>
-set(LLVM_ENUM_ASM_PRINTERS "")<br>
-set(LLVM_ENUM_ASM_PARSERS "")<br>
-set(LLVM_ENUM_DISASSEMBLERS "")<br>
-foreach(t ${LLVM_TARGETS_TO_BUILD})<br>
-  set( td ${LLVM_MAIN_SRC_DIR}/lib/Target/${t} )<br>
-<br>
-  list(FIND LLVM_ALL_TARGETS ${t} idx)<br>
-  list(FIND LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ${t} idy)<br>
-  if( idx LESS 0 AND idy LESS 0 )<br>
-    message(FATAL_ERROR "The target `${t}' does not exist.<br>
-    It should be one of\n${LLVM_ALL_TARGETS}")<br>
-  else()<br>
-    set(LLVM_ENUM_TARGETS "${LLVM_ENUM_TARGETS}LLVM_TARGET(${t})\n")<br>
-  endif()<br>
-<br>
-  file(GLOB asmp_file "${td}/*AsmPrinter.cpp")<br>
-  if( asmp_file )<br>
-    set(LLVM_ENUM_ASM_PRINTERS<br>
-      "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")<br>
-  endif()<br>
-  if( EXISTS ${td}/AsmParser/CMakeLists.txt )<br>
-    set(LLVM_ENUM_ASM_PARSERS<br>
-      "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n")<br>
-  endif()<br>
-  if( EXISTS ${td}/Disassembler/CMakeLists.txt )<br>
-    set(LLVM_ENUM_DISASSEMBLERS<br>
-      "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n")<br>
-  endif()<br>
-endforeach(t)<br>
-<br>
-# Produce the target definition files, which provide a way for clients to easily<br>
-# include various classes of targets.<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://AsmPrinters.def.in" rel="noreferrer" target="_blank">AsmPrinters.def.in</a><br>
-  ${LLVM_INCLUDE_DIR}/llvm/Config/AsmPrinters.def<br>
-  )<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://AsmParsers.def.in" rel="noreferrer" target="_blank">AsmParsers.def.in</a><br>
-  ${LLVM_INCLUDE_DIR}/llvm/Config/AsmParsers.def<br>
-  )<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://Disassemblers.def.in" rel="noreferrer" target="_blank">Disassemblers.def.in</a><br>
-  ${LLVM_INCLUDE_DIR}/llvm/Config/Disassemblers.def<br>
-  )<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://Targets.def.in" rel="noreferrer" target="_blank">Targets.def.in</a><br>
-  ${LLVM_INCLUDE_DIR}/llvm/Config/Targets.def<br>
-  )<br>
-<br>
-# Configure the three LLVM configuration header files.<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake<br>
-  ${LLVM_INCLUDE_DIR}/llvm/Config/config.h)<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/llvm-config.h.cmake<br>
-  ${LLVM_INCLUDE_DIR}/llvm/Config/llvm-config.h)<br>
-configure_file(<br>
-  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/DataTypes.h.cmake<br>
-  ${LLVM_INCLUDE_DIR}/llvm/Support/DataTypes.h)<br>
-<br>
-# They are not referenced. See set_output_directory().<br>
-set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin )<br>
-set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )<br>
-set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )<br>
-<br>
-set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)<br>
-if (APPLE)<br>
-  set(CMAKE_INSTALL_NAME_DIR "@rpath")<br>
-  set(CMAKE_INSTALL_RPATH "@executable_path/../lib")<br>
-else(UNIX)<br>
-  if(NOT DEFINED CMAKE_INSTALL_RPATH)<br>
-    set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")<br>
-    if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")<br>
-      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin")<br>
-      set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin")<br>
-    endif()<br>
-  endif(NOT DEFINED CMAKE_INSTALL_RPATH)<br>
-endif()<br>
-<br>
-if(APPLE AND DARWIN_LTO_LIBRARY)<br>
-  set(CMAKE_EXE_LINKER_FLAGS<br>
-    "${CMAKE_EXE_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}")<br>
-  set(CMAKE_SHARED_LINKER_FLAGS<br>
-    "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}")<br>
-  set(CMAKE_MODULE_LINKER_FLAGS<br>
-    "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}")<br>
-endif()<br>
-<br>
-# Work around a broken bfd ld behavior. When linking a binary with a<br>
-# foo.so library, it will try to find any library that foo.so uses and<br>
-# check its symbols. This is wasteful (the check was done when foo.so<br>
-# was created) and can fail since it is not the dynamic linker and<br>
-# doesn't know how to handle search paths correctly.<br>
-if (UNIX AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")<br>
-  set(CMAKE_EXE_LINKER_FLAGS<br>
-      "${CMAKE_EXE_LINKER_FLAGS} -Wl,-allow-shlib-undefined")<br>
-endif()<br>
-<br>
-set(CMAKE_INCLUDE_CURRENT_DIR ON)<br>
-<br>
-include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})<br>
-<br>
-# when crosscompiling import the executable targets from a file<br>
-if(LLVM_USE_HOST_TOOLS)<br>
-  include(CrossCompile)<br>
-endif(LLVM_USE_HOST_TOOLS)<br>
-if(LLVM_TARGET_IS_CROSSCOMPILE_HOST)<br>
-# Dummy use to avoid CMake Wraning: Manually-specified variables were not used<br>
-# (this is a variable that CrossCompile sets on recursive invocations)<br>
-endif()<br>
-<br>
-if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")<br>
-  # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM<br>
-  # with libxml2, iconv.h, etc., we must add /usr/local paths.<br>
-  include_directories("/usr/local/include")<br>
-  link_directories("/usr/local/lib")<br>
-endif(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")<br>
-<br>
-if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )<br>
-   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include llvm/Support/Solaris.h")<br>
-endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )<br>
-<br>
-# Make sure we don't get -rdynamic in every binary. For those that need it,<br>
-# use export_executable_symbols(target).<br>
-set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")<br>
-<br>
-set(LLVM_PROFDATA_FILE "" CACHE FILEPATH<br>
-  "Profiling data file to use when compiling in order to improve runtime performance.")<br>
-<br>
-if(LLVM_PROFDATA_FILE AND EXISTS ${LLVM_PROFDATA_FILE})<br>
-  if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )<br>
-    add_definitions("-fprofile-instr-use=${LLVM_PROFDATA_FILE}")<br>
-  else()<br>
-    message(FATAL_ERROR "LLVM_PROFDATA_FILE can only be specified when compiling with clang")<br>
-  endif()<br>
-endif()<br>
-<br>
-include(AddLLVM)<br>
-include(TableGen)<br>
-<br>
-if( MINGW )<br>
-  # People report that -O3 is unreliable on MinGW. The traditional<br>
-  # build also uses -O2 for that reason:<br>
-  llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")<br>
-endif()<br>
-<br>
-# Put this before tblgen. Else we have a circular dependence.<br>
-add_subdirectory(lib/Support)<br>
-add_subdirectory(lib/TableGen)<br>
-<br>
-add_subdirectory(utils/TableGen)<br>
-<br>
-add_subdirectory(include/llvm)<br>
-<br>
-add_subdirectory(lib)<br>
-<br>
-if( LLVM_INCLUDE_UTILS )<br>
-  add_subdirectory(utils/FileCheck)<br>
-  add_subdirectory(utils/PerfectShuffle)<br>
-  add_subdirectory(utils/count)<br>
-  add_subdirectory(utils/not)<br>
-  add_subdirectory(utils/llvm-lit)<br>
-  add_subdirectory(utils/yaml-bench)<br>
-else()<br>
-  if ( LLVM_INCLUDE_TESTS )<br>
-    message(FATAL_ERROR "Including tests when not building utils will not work.<br>
-    Either set LLVM_INCLUDE_UTILS to On, or set LLVM_INCLDE_TESTS to Off.")<br>
-  endif()<br>
-endif()<br>
-<br>
-if(LLVM_INCLUDE_TESTS)<br>
-  add_subdirectory(utils/unittest)<br>
-endif()<br>
-<br>
-foreach( binding ${LLVM_BINDINGS_LIST} )<br>
-  if( EXISTS "${LLVM_MAIN_SRC_DIR}/bindings/${binding}/CMakeLists.txt" )<br>
-    add_subdirectory(bindings/${binding})<br>
-  endif()<br>
-endforeach()<br>
-<br>
-add_subdirectory(projects)<br>
-<br>
-if(WITH_POLLY)<br>
-  if(NOT EXISTS ${LLVM_MAIN_SRC_DIR}/tools/polly/CMakeLists.txt)<br>
-    set(WITH_POLLY OFF)<br>
-  endif()<br>
-endif(WITH_POLLY)<br>
-<br>
-if( LLVM_INCLUDE_TOOLS )<br>
-  add_subdirectory(tools)<br>
-endif()<br>
-<br>
-if( LLVM_INCLUDE_EXAMPLES )<br>
-  add_subdirectory(examples)<br>
-endif()<br>
-<br>
-if( LLVM_INCLUDE_TESTS )<br>
-  if(EXISTS ${LLVM_MAIN_SRC_DIR}/projects/test-suite AND TARGET clang)<br>
-    include(LLVMExternalProjectUtils)<br>
-    llvm_ExternalProject_Add(test-suite ${LLVM_MAIN_SRC_DIR}/projects/test-suite<br>
-      USE_TOOLCHAIN<br>
-      EXCLUDE_FROM_ALL<br>
-      NO_INSTALL)<br>
-  endif()<br>
-  add_subdirectory(test)<br>
-  add_subdirectory(unittests)<br>
-  if (MSVC)<br>
-    # This utility is used to prevent crashing tests from calling Dr. Watson on<br>
-    # Windows.<br>
-    add_subdirectory(utils/KillTheDoctor)<br>
-  endif()<br>
-<br>
-  # Add a global check rule now that all subdirectories have been traversed<br>
-  # and we know the total set of lit testsuites.<br>
-  get_property(LLVM_LIT_TESTSUITES GLOBAL PROPERTY LLVM_LIT_TESTSUITES)<br>
-  get_property(LLVM_LIT_PARAMS GLOBAL PROPERTY LLVM_LIT_PARAMS)<br>
-  get_property(LLVM_LIT_DEPENDS GLOBAL PROPERTY LLVM_LIT_DEPENDS)<br>
-  get_property(LLVM_LIT_EXTRA_ARGS GLOBAL PROPERTY LLVM_LIT_EXTRA_ARGS)<br>
-  add_lit_target(check-all<br>
-    "Running all regression tests"<br>
-    ${LLVM_LIT_TESTSUITES}<br>
-    PARAMS ${LLVM_LIT_PARAMS}<br>
-    DEPENDS ${LLVM_LIT_DEPENDS}<br>
-    ARGS ${LLVM_LIT_EXTRA_ARGS}<br>
-    )<br>
-  add_custom_target(test-depends DEPENDS ${LLVM_LIT_DEPENDS})<br>
-endif()<br>
-<br>
-if (LLVM_INCLUDE_DOCS)<br>
-  add_subdirectory(docs)<br>
-endif()<br>
-<br>
-add_subdirectory(cmake/modules)<br>
-<br>
-if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)<br>
-  install(DIRECTORY include/llvm include/llvm-c<br>
-    DESTINATION include<br>
-    COMPONENT llvm-headers<br>
-    FILES_MATCHING<br>
-    PATTERN "*.def"<br>
-    PATTERN "*.h"<br>
-    PATTERN "*.td"<br>
-    PATTERN "*.inc"<br>
-    PATTERN "LICENSE.TXT"<br>
-    PATTERN ".svn" EXCLUDE<br>
-    )<br>
-<br>
-  install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm<br>
-    DESTINATION include<br>
-    COMPONENT llvm-headers<br>
-    FILES_MATCHING<br>
-    PATTERN "*.def"<br>
-    PATTERN "*.h"<br>
-    PATTERN "*.gen"<br>
-    PATTERN "*.inc"<br>
-    # Exclude include/llvm/CMakeFiles/intrinsics_gen.dir, matched by "*.def"<br>
-    PATTERN "CMakeFiles" EXCLUDE<br>
-    PATTERN "config.h" EXCLUDE<br>
-    PATTERN ".svn" EXCLUDE<br>
-    )<br>
-<br>
-  if (NOT CMAKE_CONFIGURATION_TYPES)<br>
-    add_custom_target(installhdrs<br>
-                      DEPENDS ${name}<br>
-                      COMMAND "${CMAKE_COMMAND}"<br>
-                              -DCMAKE_INSTALL_COMPONENT=llvm-headers<br>
-                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")<br>
-  endif()<br>
-endif()<br>
-<br>
-# This must be at the end of the LLVM root CMakeLists file because it must run<br>
-# after all targets are created.<br>
-if(LLVM_DISTRIBUTION_COMPONENTS)<br>
-  if(CMAKE_CONFIGURATION_TYPES)<br>
-    message(FATAL_ERROR "LLVM_DISTRIBUTION_COMPONENTS cannot be specified with multi-configuration generators (i.e. Xcode or Visual Studio)")<br>
-  endif()<br>
-<br>
-  add_custom_target(distribution)<br>
-  add_custom_target(install-distribution)<br>
-  foreach(target ${LLVM_DISTRIBUTION_COMPONENTS})<br>
-    if(TARGET ${target})<br>
-      add_dependencies(distribution ${target})<br>
-    else()<br>
-      message(FATAL_ERROR "Specified distribution component '${target}' doesn't have a target")<br>
-    endif()<br>
-<br>
-    if(TARGET install-${target})<br>
-      add_dependencies(install-distribution install-${target})<br>
-    else()<br>
-      message(FATAL_ERROR "Specified distribution component '${target}' doesn't have an install target")<br>
-    endif()<br>
-  endforeach()<br>
-endif()<br>
+# See docs/CMake.html for instructions about how to build LLVM with CMake.<br>
+<br>
+cmake_minimum_required(VERSION 2.8.12.2)<br>
+<br>
+if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)<br>
+  message(STATUS "No build type selected, default to Debug")<br>
+  set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (default Debug)")<br>
+endif()<br>
+<br>
+if(POLICY CMP0022)<br>
+  cmake_policy(SET CMP0022 NEW) # automatic when 2.8.12 is required<br>
+endif()<br>
+<br>
+if (POLICY CMP0051)<br>
+  # CMake 3.1 and higher include generator expressions of the form<br>
+  # $<TARGETLIB:obj> in the SOURCES property.  These need to be<br>
+  # stripped everywhere that access the SOURCES property, so we just<br>
+  # defer to the OLD behavior of not including generator expressions<br>
+  # in the output for now.<br>
+  cmake_policy(SET CMP0051 OLD)<br>
+endif()<br>
+<br>
+if(CMAKE_VERSION VERSION_LESS 3.1.20141117)<br>
+  set(cmake_3_2_USES_TERMINAL)<br>
+else()<br>
+  set(cmake_3_2_USES_TERMINAL USES_TERMINAL)<br>
+endif()<br>
+<br>
+if(NOT DEFINED LLVM_VERSION_MAJOR)<br>
+  set(LLVM_VERSION_MAJOR 3)<br>
+endif()<br>
+if(NOT DEFINED LLVM_VERSION_MINOR)<br>
+  set(LLVM_VERSION_MINOR 9)<br>
+endif()<br>
+if(NOT DEFINED LLVM_VERSION_PATCH)<br>
+  set(LLVM_VERSION_PATCH 0)<br>
+endif()<br>
+if(NOT DEFINED LLVM_VERSION_SUFFIX)<br>
+  set(LLVM_VERSION_SUFFIX svn)<br>
+endif()<br>
+<br>
+if (POLICY CMP0048)<br>
+  cmake_policy(SET CMP0048 NEW)<br>
+  set(cmake_3_0_PROJ_VERSION<br>
+    VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})<br>
+  set(cmake_3_0_LANGUAGES LANGUAGES)<br>
+endif()<br>
+<br>
+if (NOT PACKAGE_VERSION)<br>
+  set(PACKAGE_VERSION<br>
+    "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}")<br>
+endif()<br>
+<br>
+project(LLVM<br>
+  ${cmake_3_0_PROJ_VERSION}<br>
+  ${cmake_3_0_LANGUAGES}<br>
+  C CXX ASM)<br>
+<br>
+# The following only works with the Ninja generator in CMake >= 3.0.<br>
+set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING<br>
+  "Define the maximum number of concurrent compilation jobs.")<br>
+if(LLVM_PARALLEL_COMPILE_JOBS)<br>
+  if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja")<br>
+    message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.")<br>
+  else()<br>
+    set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${LLVM_PARALLEL_COMPILE_JOBS})<br>
+    set(CMAKE_JOB_POOL_COMPILE compile_job_pool)<br>
+  endif()<br>
+endif()<br>
+<br>
+set(LLVM_BUILD_GLOBAL_ISEL OFF CACHE BOOL "Experimental: Build GlobalISel")<br>
+if(LLVM_BUILD_GLOBAL_ISEL)<br>
+  add_definitions(-DLLVM_BUILD_GLOBAL_ISEL)<br>
+endif()<br>
+<br>
+set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING<br>
+  "Define the maximum number of concurrent link jobs.")<br>
+if(LLVM_PARALLEL_LINK_JOBS)<br>
+  if(CMAKE_VERSION VERSION_LESS 3.0 OR NOT CMAKE_MAKE_PROGRAM MATCHES "ninja")<br>
+    message(WARNING "Job pooling is only available with Ninja generators and CMake 3.0 and later.")<br>
+  else()<br>
+    set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS})<br>
+    set(CMAKE_JOB_POOL_LINK link_job_pool)<br>
+  endif()<br>
+endif()<br>
+<br>
+# Add path for custom modules<br>
+set(CMAKE_MODULE_PATH<br>
+  ${CMAKE_MODULE_PATH}<br>
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake"<br>
+  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules"<br>
+  )<br>
+<br>
+# Generate a CompilationDatabase (compile_commands.json file) for our build,<br>
+# for use by clang_complete, YouCompleteMe, etc.<br>
+set(CMAKE_EXPORT_COMPILE_COMMANDS 1)<br>
+<br>
+option(LLVM_INSTALL_UTILS "Include utility binaries in the 'install' target." OFF)<br>
+<br>
+option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF)<br>
+<br>
+option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON)<br>
+if ( LLVM_USE_FOLDERS )<br>
+  set_property(GLOBAL PROPERTY USE_FOLDERS ON)<br>
+endif()<br>
+<br>
+include(VersionFromVCS)<br>
+<br>
+option(LLVM_APPEND_VC_REV<br>
+  "Append the version control system revision id to LLVM version" OFF)<br>
+<br>
+if( LLVM_APPEND_VC_REV )<br>
+  add_version_info_from_vcs(PACKAGE_VERSION)<br>
+endif()<br>
+<br>
+set(PACKAGE_NAME LLVM)<br>
+set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")<br>
+set(PACKAGE_BUGREPORT "<a href="http://llvm.org/bugs/" rel="noreferrer" target="_blank">http://llvm.org/bugs/</a>")<br>
+<br>
+set(BUG_REPORT_URL "${PACKAGE_BUGREPORT}" CACHE STRING<br>
+  "Default URL where bug reports are to be submitted.")<br>
+<br>
+# Configure CPack.<br>
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "LLVM")<br>
+set(CPACK_PACKAGE_VENDOR "LLVM")<br>
+set(CPACK_PACKAGE_VERSION_MAJOR ${LLVM_VERSION_MAJOR})<br>
+set(CPACK_PACKAGE_VERSION_MINOR ${LLVM_VERSION_MINOR})<br>
+set(CPACK_PACKAGE_VERSION_PATCH ${LLVM_VERSION_PATCH})<br>
+set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION})<br>
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT")<br>
+set(CPACK_NSIS_COMPRESSOR "/SOLID lzma \r\n SetCompressorDictSize 32")<br>
+if(WIN32 AND NOT UNIX)<br>
+  set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "LLVM")<br>
+  set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_logo.bmp")<br>
+  set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")<br>
+  set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_icon.ico")<br>
+  set(CPACK_NSIS_MODIFY_PATH "ON")<br>
+  set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON")<br>
+  set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS<br>
+    "ExecWait '$INSTDIR/tools/msbuild/install.bat'")<br>
+  set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS<br>
+    "ExecWait '$INSTDIR/tools/msbuild/uninstall.bat'")<br>
+  if( CMAKE_CL_64 )<br>
+    set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")<br>
+  endif()<br>
+endif()<br>
+include(CPack)<br>
+<br>
+# Sanity check our source directory to make sure that we are not trying to<br>
+# generate an in-tree build (unless on MSVC_IDE, where it is ok), and to make<br>
+# sure that we don't have any stray generated files lying around in the tree<br>
+# (which would end up getting picked up by header search, instead of the correct<br>
+# versions).<br>
+if( CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT MSVC_IDE )<br>
+  message(FATAL_ERROR "In-source builds are not allowed.<br>
+CMake would overwrite the makefiles distributed with LLVM.<br>
+Please create a directory and run cmake from there, passing the path<br>
+to this source directory as the last argument.<br>
+This process created the file `CMakeCache.txt' and the directory `CMakeFiles'.<br>
+Please delete them.")<br>
+endif()<br>
+if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )<br>
+  file(GLOB_RECURSE<br>
+    tablegenned_files_on_include_dir<br>
+    "${CMAKE_CURRENT_SOURCE_DIR}/include/llvm/*.gen")<br>
+  file(GLOB_RECURSE<br>
+    tablegenned_files_on_lib_dir<br>
+    "${CMAKE_CURRENT_SOURCE_DIR}/lib/Target/*.inc")<br>
+  if( tablegenned_files_on_include_dir OR tablegenned_files_on_lib_dir)<br>
+    message(FATAL_ERROR "Apparently there is a previous in-source build,<br>
+probably as the result of running `configure' and `make' on<br>
+${CMAKE_CURRENT_SOURCE_DIR}.<br>
+This may cause problems. The suspicious files are:<br>
+${tablegenned_files_on_lib_dir}<br>
+${tablegenned_files_on_include_dir}<br>
+Please clean the source directory.")<br>
+  endif()<br>
+endif()<br>
+<br>
+string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)<br>
+<br>
+if (CMAKE_BUILD_TYPE AND<br>
+    NOT uppercase_CMAKE_BUILD_TYPE MATCHES "^(DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL)$")<br>
+  message(FATAL_ERROR "Invalid value for CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")<br>
+endif()<br>
+<br>
+set(LLVM_LIBDIR_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" )<br>
+<br>
+# They are used as destination of target generators.<br>
+set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)<br>
+set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})<br>
+if(WIN32 OR CYGWIN)<br>
+  # DLL platform -- put DLLs into bin.<br>
+  set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_RUNTIME_OUTPUT_INTDIR})<br>
+else()<br>
+  set(LLVM_SHLIB_OUTPUT_INTDIR ${LLVM_LIBRARY_OUTPUT_INTDIR})<br>
+endif()<br>
+<br>
+# Each of them corresponds to llvm-config's.<br>
+set(LLVM_TOOLS_BINARY_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) # --bindir<br>
+set(LLVM_LIBRARY_DIR      ${LLVM_LIBRARY_OUTPUT_INTDIR}) # --libdir<br>
+set(LLVM_MAIN_SRC_DIR     ${CMAKE_CURRENT_SOURCE_DIR}  ) # --src-root<br>
+set(LLVM_MAIN_INCLUDE_DIR ${LLVM_MAIN_SRC_DIR}/include ) # --includedir<br>
+set(LLVM_BINARY_DIR       ${CMAKE_CURRENT_BINARY_DIR}  ) # --prefix<br>
+<br>
+set(LLVM_EXAMPLES_BINARY_DIR ${LLVM_BINARY_DIR}/examples)<br>
+set(LLVM_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)<br>
+<br>
+set(LLVM_ALL_TARGETS<br>
+  AArch64<br>
+  AMDGPU<br>
+  ARM<br>
+  BPF<br>
+  CppBackend<br>
+  Hexagon<br>
+  Mips<br>
+  MSP430<br>
+  NVPTX<br>
+  PowerPC<br>
+  Sparc<br>
+  SystemZ<br>
+  X86<br>
+  XCore<br>
+  )<br>
+<br>
+# List of targets with JIT support:<br>
+set(LLVM_TARGETS_WITH_JIT X86 PowerPC AArch64 ARM Mips SystemZ)<br>
+<br>
+set(LLVM_TARGETS_TO_BUILD "all"<br>
+    CACHE STRING "Semicolon-separated list of targets to build, or \"all\".")<br>
+<br>
+set(LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ""<br>
+  CACHE STRING "Semicolon-separated list of experimental targets to build.")<br>
+<br>
+option(BUILD_SHARED_LIBS<br>
+  "Build all libraries as shared libraries instead of static" OFF)<br>
+<br>
+option(LLVM_ENABLE_TIMESTAMPS "Enable embedding timestamp information in build" ON)<br>
+if(LLVM_ENABLE_TIMESTAMPS)<br>
+  set(ENABLE_TIMESTAMPS 1)<br>
+endif()<br>
+<br>
+option(LLVM_ENABLE_BACKTRACES "Enable embedding backtraces on crash." ON)<br>
+if(LLVM_ENABLE_BACKTRACES)<br>
+  set(ENABLE_BACKTRACES 1)<br>
+endif()<br>
+<br>
+option(LLVM_ENABLE_CRASH_OVERRIDES "Enable crash overrides." ON)<br>
+if(LLVM_ENABLE_CRASH_OVERRIDES)<br>
+  set(ENABLE_CRASH_OVERRIDES 1)<br>
+endif()<br>
+<br>
+option(LLVM_ENABLE_FFI "Use libffi to call external functions from the interpreter" OFF)<br>
+set(FFI_LIBRARY_DIR "" CACHE PATH "Additional directory, where CMake should search for libffi.so")<br>
+set(FFI_INCLUDE_DIR "" CACHE PATH "Additional directory, where CMake should search for ffi.h or ffi/ffi.h")<br>
+<br>
+set(LLVM_TARGET_ARCH "host"<br>
+  CACHE STRING "Set target to use for LLVM JIT or use \"host\" for automatic detection.")<br>
+<br>
+option(LLVM_ENABLE_TERMINFO "Use terminfo database if available." ON)<br>
+<br>
+option(LLVM_ENABLE_THREADS "Use threads if available." ON)<br>
+<br>
+option(LLVM_ENABLE_ZLIB "Use zlib for compression/decompression if available." ON)<br>
+<br>
+if( LLVM_TARGETS_TO_BUILD STREQUAL "all" )<br>
+  set( LLVM_TARGETS_TO_BUILD ${LLVM_ALL_TARGETS} )<br>
+endif()<br>
+<br>
+set(LLVM_TARGETS_TO_BUILD<br>
+   ${LLVM_TARGETS_TO_BUILD}<br>
+   ${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD})<br>
+list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)<br>
+<br>
+include(AddLLVMDefinitions)<br>
+<br>
+option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON)<br>
+option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON)<br>
+option(LLVM_ENABLE_MODULES "Compile with C++ modules enabled." OFF)<br>
+option(LLVM_ENABLE_CXX1Y "Compile with C++1y enabled." OFF)<br>
+option(LLVM_ENABLE_LIBCXX "Use libc++ if available." OFF)<br>
+option(LLVM_ENABLE_LIBCXXABI "Use libc++abi when using libc++." OFF)<br>
+option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON)<br>
+option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF)<br>
+<br>
+if( NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" )<br>
+  option(LLVM_ENABLE_ASSERTIONS "Enable assertions" OFF)<br>
+else()<br>
+  option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON)<br>
+endif()<br>
+<br>
+set(LLVM_ABI_BREAKING_CHECKS "WITH_ASSERTS" CACHE STRING<br>
+  "Enable abi-breaking checks.  Can be WITH_ASSERTS, FORCE_ON or FORCE_OFF.")<br>
+<br>
+option(LLVM_FORCE_USE_OLD_HOST_TOOLCHAIN<br>
+       "Set to ON to force using an old, unsupported host toolchain." OFF)<br>
+<br>
+option(LLVM_USE_INTEL_JITEVENTS<br>
+  "Use Intel JIT API to inform Intel(R) VTune(TM) Amplifier XE 2011 about JIT code"<br>
+  OFF)<br>
+<br>
+if( LLVM_USE_INTEL_JITEVENTS )<br>
+  # Verify we are on a supported platform<br>
+  if( NOT CMAKE_SYSTEM_NAME MATCHES "Windows" AND NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )<br>
+    message(FATAL_ERROR<br>
+      "Intel JIT API support is available on Linux and Windows only.")<br>
+  endif()<br>
+endif( LLVM_USE_INTEL_JITEVENTS )<br>
+<br>
+option(LLVM_USE_OPROFILE<br>
+  "Use opagent JIT interface to inform OProfile about JIT code" OFF)<br>
+<br>
+option(LLVM_EXTERNALIZE_DEBUGINFO<br>
+  "Generate dSYM files and strip executables and libraries (Darwin Only)" OFF)<br>
+<br>
+# If enabled, verify we are on a platform that supports oprofile.<br>
+if( LLVM_USE_OPROFILE )<br>
+  if( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )<br>
+    message(FATAL_ERROR "OProfile support is available on Linux only.")<br>
+  endif( NOT CMAKE_SYSTEM_NAME MATCHES "Linux" )<br>
+endif( LLVM_USE_OPROFILE )<br>
+<br>
+set(LLVM_USE_SANITIZER "" CACHE STRING<br>
+  "Define the sanitizer used to build binaries and tests.")<br>
+<br>
+option(LLVM_USE_SPLIT_DWARF<br>
+  "Use -gsplit-dwarf when compiling llvm." OFF)<br>
+<br>
+option(WITH_POLLY "Build LLVM with Polly" ON)<br>
+option(LINK_POLLY_INTO_TOOLS "Static link Polly into tools" OFF)<br>
+<br>
+# Define an option controlling whether we should build for 32-bit on 64-bit<br>
+# platforms, where supported.<br>
+if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32 )<br>
+  # TODO: support other platforms and toolchains.<br>
+  option(LLVM_BUILD_32_BITS "Build 32 bits executables and libraries." OFF)<br>
+endif()<br>
+<br>
+# Define the default arguments to use with 'lit', and an option for the user to<br>
+# override.<br>
+set(LIT_ARGS_DEFAULT "-sv")<br>
+if (MSVC_IDE OR XCODE)<br>
+  set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")<br>
+endif()<br>
+set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default options for lit")<br>
+<br>
+# On Win32 hosts, provide an option to specify the path to the GnuWin32 tools.<br>
+if( WIN32 AND NOT CYGWIN )<br>
+  set(LLVM_LIT_TOOLS_DIR "" CACHE PATH "Path to GnuWin32 tools")<br>
+endif()<br>
+<br>
+# Define options to control the inclusion and default build behavior for<br>
+# components which may not strictly be necessary (tools, examples, and tests).<br>
+#<br>
+# This is primarily to support building smaller or faster project files.<br>
+option(LLVM_INCLUDE_TOOLS "Generate build targets for the LLVM tools." ON)<br>
+option(LLVM_BUILD_TOOLS<br>
+  "Build the LLVM tools. If OFF, just generate build targets." ON)<br>
+<br>
+option(LLVM_INCLUDE_UTILS "Generate build targets for the LLVM utils." ON)<br>
+<br>
+option(LLVM_BUILD_RUNTIME<br>
+  "Build the LLVM runtime libraries." ON)<br>
+option(LLVM_BUILD_EXAMPLES<br>
+  "Build the LLVM example programs. If OFF, just generate build targets." OFF)<br>
+option(LLVM_INCLUDE_EXAMPLES "Generate build targets for the LLVM examples" ON)<br>
+<br>
+option(LLVM_BUILD_TESTS<br>
+  "Build LLVM unit tests. If OFF, just generate build targets." OFF)<br>
+option(LLVM_INCLUDE_TESTS "Generate build targets for the LLVM unit tests." ON)<br>
+option(LLVM_INCLUDE_GO_TESTS "Include the Go bindings tests in test build targets." ON)<br>
+<br>
+option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)<br>
+option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)<br>
+option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API documentation." OFF)<br>
+option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF)<br>
+<br>
+option (LLVM_BUILD_EXTERNAL_COMPILER_RT<br>
+  "Build compiler-rt as an external project." OFF)<br>
+<br>
+# You can configure which libraries from LLVM you want to include in the<br>
+# shared library by setting LLVM_DYLIB_COMPONENTS to a semi-colon delimited<br>
+# list of LLVM components. All component names handled by llvm-config are valid.<br>
+if(NOT DEFINED LLVM_DYLIB_COMPONENTS)<br>
+  set(LLVM_DYLIB_COMPONENTS "all" CACHE STRING<br>
+    "Semicolon-separated list of components to include in libLLVM, or \"all\".")<br>
+endif()<br>
+option(LLVM_LINK_LLVM_DYLIB "Link tools against the libllvm dynamic library" OFF)<br>
+option(LLVM_BUILD_LLVM_C_DYLIB "Build libllvm-c re-export library (Darwin Only)" OFF)<br>
+set(LLVM_BUILD_LLVM_DYLIB_default OFF)<br>
+if(LLVM_LINK_LLVM_DYLIB OR LLVM_BUILD_LLVM_C_DYLIB)<br>
+  set(LLVM_BUILD_LLVM_DYLIB_default ON)<br>
+endif()<br>
+option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" ${LLVM_BUILD_LLVM_DYLIB_default})<br>
+<br>
+option(LLVM_OPTIMIZED_TABLEGEN "Force TableGen to be built with optimization" OFF)<br>
+if(CMAKE_CROSSCOMPILING OR (LLVM_OPTIMIZED_TABLEGEN AND LLVM_ENABLE_ASSERTIONS))<br>
+  set(LLVM_USE_HOST_TOOLS ON)<br>
+endif()<br>
+<br>
+if (MSVC_IDE AND NOT (MSVC_VERSION LESS 1900))<br>
+  option(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION "Configure project to use Visual Studio native visualizers" TRUE)<br>
+else()<br>
+  set(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION FALSE CACHE INTERNAL "For Visual Studio 2013, manually copy natvis files to Documents\\Visual Studio 2013\\Visualizers" FORCE)<br>
+endif()<br>
+<br>
+# All options referred to from HandleLLVMOptions have to be specified<br>
+# BEFORE this include, otherwise options will not be correctly set on<br>
+# first cmake run<br>
+include(config-ix)<br>
+<br>
+string(REPLACE "Native" ${LLVM_NATIVE_ARCH}<br>
+  LLVM_TARGETS_TO_BUILD "${LLVM_TARGETS_TO_BUILD}")<br>
+list(REMOVE_DUPLICATES LLVM_TARGETS_TO_BUILD)<br>
+<br>
+# By default, we target the host, but this can be overridden at CMake<br>
+# invocation time.<br>
+set(LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_HOST_TRIPLE}" CACHE STRING<br>
+  "Default target for which LLVM will generate code." )<br>
+set(TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}")<br>
+<br>
+include(HandleLLVMOptions)<br>
+<br>
+# Verify that we can find a Python 2 interpreter.  Python 3 is unsupported.<br>
+# FIXME: We should support systems with only Python 3, but that requires work<br>
+# on LLDB.<br>
+set(Python_ADDITIONAL_VERSIONS 2.7)<br>
+include(FindPythonInterp)<br>
+if( NOT PYTHONINTERP_FOUND )<br>
+  message(FATAL_ERROR<br>
+"Unable to find Python interpreter, required for builds and testing.<br>
+<br>
+Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")<br>
+endif()<br>
+<br>
+if( ${PYTHON_VERSION_STRING} VERSION_LESS 2.7 )<br>
+  message(FATAL_ERROR "Python 2.7 or newer is required")<br>
+endif()<br>
+<br>
+######<br>
+# LLVMBuild Integration<br>
+#<br>
+# We use llvm-build to generate all the data required by the CMake based<br>
+# build system in one swoop:<br>
+#<br>
+#  - We generate a file (a CMake fragment) in the object root which contains<br>
+#    all the definitions that are required by CMake.<br>
+#<br>
+#  - We generate the library table used by llvm-config.<br>
+#<br>
+#  - We generate the dependencies for the CMake fragment, so that we will<br>
+#    automatically reconfigure outselves.<br>
+<br>
+set(LLVMBUILDTOOL "${LLVM_MAIN_SRC_DIR}/utils/llvm-build/llvm-build")<br>
+set(LLVMCONFIGLIBRARYDEPENDENCIESINC<br>
+  "${LLVM_BINARY_DIR}/tools/llvm-config/LibraryDependencies.inc")<br>
+set(LLVMBUILDCMAKEFRAG<br>
+  "${LLVM_BINARY_DIR}/LLVMBuild.cmake")<br>
+<br>
+# Create the list of optional components that are enabled<br>
+if (LLVM_USE_INTEL_JITEVENTS)<br>
+  set(LLVMOPTIONALCOMPONENTS IntelJITEvents)<br>
+endif (LLVM_USE_INTEL_JITEVENTS)<br>
+if (LLVM_USE_OPROFILE)<br>
+  set(LLVMOPTIONALCOMPONENTS ${LLVMOPTIONALCOMPONENTS} OProfileJIT)<br>
+endif (LLVM_USE_OPROFILE)<br>
+<br>
+message(STATUS "Constructing LLVMBuild project information")<br>
+execute_process(<br>
+  COMMAND ${PYTHON_EXECUTABLE} ${LLVMBUILDTOOL}<br>
+            --native-target "${LLVM_NATIVE_ARCH}"<br>
+            --enable-targets "${LLVM_TARGETS_TO_BUILD}"<br>
+            --enable-optional-components "${LLVMOPTIONALCOMPONENTS}"<br>
+            --write-library-table ${LLVMCONFIGLIBRARYDEPENDENCIESINC}<br>
+            --write-cmake-fragment ${LLVMBUILDCMAKEFRAG}<br>
+            OUTPUT_VARIABLE LLVMBUILDOUTPUT<br>
+            ERROR_VARIABLE LLVMBUILDERRORS<br>
+            OUTPUT_STRIP_TRAILING_WHITESPACE<br>
+            ERROR_STRIP_TRAILING_WHITESPACE<br>
+  RESULT_VARIABLE LLVMBUILDRESULT)<br>
+<br>
+# On Win32, CMake doesn't properly handle piping the default output/error<br>
+# streams into the GUI console. So, we explicitly catch and report them.<br>
+if( NOT "${LLVMBUILDOUTPUT}" STREQUAL "")<br>
+  message(STATUS "llvm-build output: ${LLVMBUILDOUTPUT}")<br>
+endif()<br>
+if( NOT "${LLVMBUILDRESULT}" STREQUAL "0" )<br>
+  message(FATAL_ERROR<br>
+    "Unexpected failure executing llvm-build: ${LLVMBUILDERRORS}")<br>
+endif()<br>
+<br>
+# Include the generated CMake fragment. This will define properties from the<br>
+# LLVMBuild files in a format which is easy to consume from CMake, and will add<br>
+# the dependencies so that CMake will reconfigure properly when the LLVMBuild<br>
+# files change.<br>
+include(${LLVMBUILDCMAKEFRAG})<br>
+<br>
+######<br>
+<br>
+# Configure all of the various header file fragments LLVM uses which depend on<br>
+# configuration variables.<br>
+set(LLVM_ENUM_TARGETS "")<br>
+set(LLVM_ENUM_ASM_PRINTERS "")<br>
+set(LLVM_ENUM_ASM_PARSERS "")<br>
+set(LLVM_ENUM_DISASSEMBLERS "")<br>
+foreach(t ${LLVM_TARGETS_TO_BUILD})<br>
+  set( td ${LLVM_MAIN_SRC_DIR}/lib/Target/${t} )<br>
+<br>
+  list(FIND LLVM_ALL_TARGETS ${t} idx)<br>
+  list(FIND LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ${t} idy)<br>
+  if( idx LESS 0 AND idy LESS 0 )<br>
+    message(FATAL_ERROR "The target `${t}' does not exist.<br>
+    It should be one of\n${LLVM_ALL_TARGETS}")<br>
+  else()<br>
+    set(LLVM_ENUM_TARGETS "${LLVM_ENUM_TARGETS}LLVM_TARGET(${t})\n")<br>
+  endif()<br>
+<br>
+  file(GLOB asmp_file "${td}/*AsmPrinter.cpp")<br>
+  if( asmp_file )<br>
+    set(LLVM_ENUM_ASM_PRINTERS<br>
+      "${LLVM_ENUM_ASM_PRINTERS}LLVM_ASM_PRINTER(${t})\n")<br>
+  endif()<br>
+  if( EXISTS ${td}/AsmParser/CMakeLists.txt )<br>
+    set(LLVM_ENUM_ASM_PARSERS<br>
+      "${LLVM_ENUM_ASM_PARSERS}LLVM_ASM_PARSER(${t})\n")<br>
+  endif()<br>
+  if( EXISTS ${td}/Disassembler/CMakeLists.txt )<br>
+    set(LLVM_ENUM_DISASSEMBLERS<br>
+      "${LLVM_ENUM_DISASSEMBLERS}LLVM_DISASSEMBLER(${t})\n")<br>
+  endif()<br>
+endforeach(t)<br>
+<br>
+# Produce the target definition files, which provide a way for clients to easily<br>
+# include various classes of targets.<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://AsmPrinters.def.in" rel="noreferrer" target="_blank">AsmPrinters.def.in</a><br>
+  ${LLVM_INCLUDE_DIR}/llvm/Config/AsmPrinters.def<br>
+  )<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://AsmParsers.def.in" rel="noreferrer" target="_blank">AsmParsers.def.in</a><br>
+  ${LLVM_INCLUDE_DIR}/llvm/Config/AsmParsers.def<br>
+  )<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://Disassemblers.def.in" rel="noreferrer" target="_blank">Disassemblers.def.in</a><br>
+  ${LLVM_INCLUDE_DIR}/llvm/Config/Disassemblers.def<br>
+  )<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/<a href="http://Targets.def.in" rel="noreferrer" target="_blank">Targets.def.in</a><br>
+  ${LLVM_INCLUDE_DIR}/llvm/Config/Targets.def<br>
+  )<br>
+<br>
+# Configure the three LLVM configuration header files.<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/config.h.cmake<br>
+  ${LLVM_INCLUDE_DIR}/llvm/Config/config.h)<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Config/llvm-config.h.cmake<br>
+  ${LLVM_INCLUDE_DIR}/llvm/Config/llvm-config.h)<br>
+configure_file(<br>
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/DataTypes.h.cmake<br>
+  ${LLVM_INCLUDE_DIR}/llvm/Support/DataTypes.h)<br>
+<br>
+# They are not referenced. See set_output_directory().<br>
+set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/bin )<br>
+set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )<br>
+set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX} )<br>
+<br>
+set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)<br>
+if (APPLE)<br>
+  set(CMAKE_INSTALL_NAME_DIR "@rpath")<br>
+  set(CMAKE_INSTALL_RPATH "@executable_path/../lib")<br>
+else(UNIX)<br>
+  if(NOT DEFINED CMAKE_INSTALL_RPATH)<br>
+    set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib${LLVM_LIBDIR_SUFFIX}")<br>
+    if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")<br>
+      set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,origin")<br>
+      set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,origin")<br>
+    endif()<br>
+  endif(NOT DEFINED CMAKE_INSTALL_RPATH)<br>
+endif()<br>
+<br>
+if(APPLE AND DARWIN_LTO_LIBRARY)<br>
+  set(CMAKE_EXE_LINKER_FLAGS<br>
+    "${CMAKE_EXE_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}")<br>
+  set(CMAKE_SHARED_LINKER_FLAGS<br>
+    "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}")<br>
+  set(CMAKE_MODULE_LINKER_FLAGS<br>
+    "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-lto_library -Wl,${DARWIN_LTO_LIBRARY}")<br>
+endif()<br>
+<br>
+# Work around a broken bfd ld behavior. When linking a binary with a<br>
+# foo.so library, it will try to find any library that foo.so uses and<br>
+# check its symbols. This is wasteful (the check was done when foo.so<br>
+# was created) and can fail since it is not the dynamic linker and<br>
+# doesn't know how to handle search paths correctly.<br>
+if (UNIX AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS")<br>
+  set(CMAKE_EXE_LINKER_FLAGS<br>
+      "${CMAKE_EXE_LINKER_FLAGS} -Wl,-allow-shlib-undefined")<br>
+endif()<br>
+<br>
+set(CMAKE_INCLUDE_CURRENT_DIR ON)<br>
+<br>
+include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})<br>
+<br>
+# when crosscompiling import the executable targets from a file<br>
+if(LLVM_USE_HOST_TOOLS)<br>
+  include(CrossCompile)<br>
+endif(LLVM_USE_HOST_TOOLS)<br>
+if(LLVM_TARGET_IS_CROSSCOMPILE_HOST)<br>
+# Dummy use to avoid CMake Wraning: Manually-specified variables were not used<br>
+# (this is a variable that CrossCompile sets on recursive invocations)<br>
+endif()<br>
+<br>
+if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")<br>
+  # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM<br>
+  # with libxml2, iconv.h, etc., we must add /usr/local paths.<br>
+  include_directories("/usr/local/include")<br>
+  link_directories("/usr/local/lib")<br>
+endif(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)")<br>
+<br>
+if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )<br>
+   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include llvm/Support/Solaris.h")<br>
+endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS )<br>
+<br>
+# Make sure we don't get -rdynamic in every binary. For those that need it,<br>
+# use export_executable_symbols(target).<br>
+set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")<br>
+<br>
+set(LLVM_PROFDATA_FILE "" CACHE FILEPATH<br>
+  "Profiling data file to use when compiling in order to improve runtime performance.")<br>
+<br>
+if(LLVM_PROFDATA_FILE AND EXISTS ${LLVM_PROFDATA_FILE})<br>
+  if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )<br>
+    add_definitions("-fprofile-instr-use=${LLVM_PROFDATA_FILE}")<br>
+  else()<br>
+    message(FATAL_ERROR "LLVM_PROFDATA_FILE can only be specified when compiling with clang")<br>
+  endif()<br>
+endif()<br>
+<br>
+include(AddLLVM)<br>
+include(TableGen)<br>
+<br>
+if( MINGW )<br>
+  # People report that -O3 is unreliable on MinGW. The traditional<br>
+  # build also uses -O2 for that reason:<br>
+  llvm_replace_compiler_option(CMAKE_CXX_FLAGS_RELEASE "-O3" "-O2")<br>
+endif()<br>
+<br>
+# Put this before tblgen. Else we have a circular dependence.<br>
+add_subdirectory(lib/Support)<br>
+add_subdirectory(lib/TableGen)<br>
+<br>
+add_subdirectory(utils/TableGen)<br>
+<br>
+add_subdirectory(include/llvm)<br>
+<br>
+add_subdirectory(lib)<br>
+<br>
+if( LLVM_INCLUDE_UTILS )<br>
+  add_subdirectory(utils/FileCheck)<br>
+  add_subdirectory(utils/PerfectShuffle)<br>
+  add_subdirectory(utils/count)<br>
+  add_subdirectory(utils/not)<br>
+  add_subdirectory(utils/llvm-lit)<br>
+  add_subdirectory(utils/yaml-bench)<br>
+else()<br>
+  if ( LLVM_INCLUDE_TESTS )<br>
+    message(FATAL_ERROR "Including tests when not building utils will not work.<br>
+    Either set LLVM_INCLUDE_UTILS to On, or set LLVM_INCLDE_TESTS to Off.")<br>
+  endif()<br>
+endif()<br>
+<br>
+# Use LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION instead of LLVM_INCLUDE_UTILS because it is not really a util<br>
+if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION)<br>
+  add_subdirectory(utils/LLVMVisualizers)<br>
+endif()<br>
+<br>
+if(LLVM_INCLUDE_TESTS)<br>
+  add_subdirectory(utils/unittest)<br>
+endif()<br>
+<br>
+foreach( binding ${LLVM_BINDINGS_LIST} )<br>
+  if( EXISTS "${LLVM_MAIN_SRC_DIR}/bindings/${binding}/CMakeLists.txt" )<br>
+    add_subdirectory(bindings/${binding})<br>
+  endif()<br>
+endforeach()<br>
+<br>
+add_subdirectory(projects)<br>
+<br>
+if(WITH_POLLY)<br>
+  if(NOT EXISTS ${LLVM_MAIN_SRC_DIR}/tools/polly/CMakeLists.txt)<br>
+    set(WITH_POLLY OFF)<br>
+  endif()<br>
+endif(WITH_POLLY)<br>
+<br>
+if( LLVM_INCLUDE_TOOLS )<br>
+  add_subdirectory(tools)<br>
+endif()<br>
+<br>
+if( LLVM_INCLUDE_EXAMPLES )<br>
+  add_subdirectory(examples)<br>
+endif()<br>
+<br>
+if( LLVM_INCLUDE_TESTS )<br>
+  if(EXISTS ${LLVM_MAIN_SRC_DIR}/projects/test-suite AND TARGET clang)<br>
+    include(LLVMExternalProjectUtils)<br>
+    llvm_ExternalProject_Add(test-suite ${LLVM_MAIN_SRC_DIR}/projects/test-suite<br>
+      USE_TOOLCHAIN<br>
+      EXCLUDE_FROM_ALL<br>
+      NO_INSTALL)<br>
+  endif()<br>
+  add_subdirectory(test)<br>
+  add_subdirectory(unittests)<br>
+  if (MSVC)<br>
+    # This utility is used to prevent crashing tests from calling Dr. Watson on<br>
+    # Windows.<br>
+    add_subdirectory(utils/KillTheDoctor)<br>
+  endif()<br>
+<br>
+  # Add a global check rule now that all subdirectories have been traversed<br>
+  # and we know the total set of lit testsuites.<br>
+  get_property(LLVM_LIT_TESTSUITES GLOBAL PROPERTY LLVM_LIT_TESTSUITES)<br>
+  get_property(LLVM_LIT_PARAMS GLOBAL PROPERTY LLVM_LIT_PARAMS)<br>
+  get_property(LLVM_LIT_DEPENDS GLOBAL PROPERTY LLVM_LIT_DEPENDS)<br>
+  get_property(LLVM_LIT_EXTRA_ARGS GLOBAL PROPERTY LLVM_LIT_EXTRA_ARGS)<br>
+  add_lit_target(check-all<br>
+    "Running all regression tests"<br>
+    ${LLVM_LIT_TESTSUITES}<br>
+    PARAMS ${LLVM_LIT_PARAMS}<br>
+    DEPENDS ${LLVM_LIT_DEPENDS}<br>
+    ARGS ${LLVM_LIT_EXTRA_ARGS}<br>
+    )<br>
+  add_custom_target(test-depends DEPENDS ${LLVM_LIT_DEPENDS})<br>
+endif()<br>
+<br>
+if (LLVM_INCLUDE_DOCS)<br>
+  add_subdirectory(docs)<br>
+endif()<br>
+<br>
+add_subdirectory(cmake/modules)<br>
+<br>
+if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)<br>
+  install(DIRECTORY include/llvm include/llvm-c<br>
+    DESTINATION include<br>
+    COMPONENT llvm-headers<br>
+    FILES_MATCHING<br>
+    PATTERN "*.def"<br>
+    PATTERN "*.h"<br>
+    PATTERN "*.td"<br>
+    PATTERN "*.inc"<br>
+    PATTERN "LICENSE.TXT"<br>
+    PATTERN ".svn" EXCLUDE<br>
+    )<br>
+<br>
+  install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm<br>
+    DESTINATION include<br>
+    COMPONENT llvm-headers<br>
+    FILES_MATCHING<br>
+    PATTERN "*.def"<br>
+    PATTERN "*.h"<br>
+    PATTERN "*.gen"<br>
+    PATTERN "*.inc"<br>
+    # Exclude include/llvm/CMakeFiles/intrinsics_gen.dir, matched by "*.def"<br>
+    PATTERN "CMakeFiles" EXCLUDE<br>
+    PATTERN "config.h" EXCLUDE<br>
+    PATTERN ".svn" EXCLUDE<br>
+    )<br>
+<br>
+  if (NOT CMAKE_CONFIGURATION_TYPES)<br>
+    add_custom_target(installhdrs<br>
+                      DEPENDS ${name}<br>
+                      COMMAND "${CMAKE_COMMAND}"<br>
+                              -DCMAKE_INSTALL_COMPONENT=llvm-headers<br>
+                              -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")<br>
+  endif()<br>
+endif()<br>
+<br>
+# This must be at the end of the LLVM root CMakeLists file because it must run<br>
+# after all targets are created.<br>
+if(LLVM_DISTRIBUTION_COMPONENTS)<br>
+  if(CMAKE_CONFIGURATION_TYPES)<br>
+    message(FATAL_ERROR "LLVM_DISTRIBUTION_COMPONENTS cannot be specified with multi-configuration generators (i.e. Xcode or Visual Studio)")<br>
+  endif()<br>
+<br>
+  add_custom_target(distribution)<br>
+  add_custom_target(install-distribution)<br>
+  foreach(target ${LLVM_DISTRIBUTION_COMPONENTS})<br>
+    if(TARGET ${target})<br>
+      add_dependencies(distribution ${target})<br>
+    else()<br>
+      message(FATAL_ERROR "Specified distribution component '${target}' doesn't have a target")<br>
+    endif()<br>
+<br>
+    if(TARGET install-${target})<br>
+      add_dependencies(install-distribution install-${target})<br>
+    else()<br>
+      message(FATAL_ERROR "Specified distribution component '${target}' doesn't have an install target")<br>
+    endif()<br>
+  endforeach()<br>
+endif()<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>