[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cfe-commits
Subject:    Re: [libcxx] r243574 - Recommit r243503 "[libcxx] Cleanup CMake configuration and integrate with LLV
From:       Kostya Serebryany <kcc () google ! com>
Date:       2015-07-29 23:40:41
Message-ID: CAN=P9ph-+WeLJESmF8wxEz8ggM05a9pbU2Ze9RiP68TM5SqnTg () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


I still see the failures with r243591

On Wed, Jul 29, 2015 at 4:24 PM, Eric Fiselier <eric@efcs.ca> wrote:

> I just pushed a possible fix to libc++. Let me know ASAP if that
> doesn't fix the issue. I'll revert if r243591 doesn't work.
> 
> /Eric
> 
> On Wed, Jul 29, 2015 at 6:44 PM, Alexey Samsonov <vonosmas@gmail.com>
> wrote:
> > Eric,
> > 
> > Looks like it breaks the build of compiler-rt on Linux, and we can't fix
> it
> > instantly, sorry =/
> > Could you please revert it again?
> > 
> > The problem is that when I pass correct -DLLVM_CONFIG= value when
> > configuring standalone libcxx with
> > just-built Clang, libcxx invokes
> llvm/cmake/modules/HandleLLVMOptions.cmake,
> > and it fails with an error
> > "Host Clang version must be at least 3.1!",
> > because CMake is unable to properly determine the compiler version of
> > just-built Clang as 3.8.0 for
> > some reason(?!) I'm now looking into this issue, and will provide a
> patch to
> > compiler-rt that should accompany
> > re-land of libcxx CMake changes.
> > 
> > On Wed, Jul 29, 2015 at 3:05 PM, Eric Fiselier <eric@efcs.ca> wrote:
> > > 
> > > Libc++ standalone builds now require that libc++ can find the LLVM
> source
> > > directory. If you specify the LLVM source root using
> > > "-DLLVM_PATH=path/to/llvm" then the command should work?
> > > 
> > > Does this new requirement work for you?
> > > 
> > > On Jul 29, 2015 6:03 PM, "Alexey Samsonov" <samsonov@google.com> wrote:
> > > > 
> > > > I'm looking into the fix now, it probably should go to compiler-rt
> > > > anyway, so I don't think we should revert libcxx part now.
> > > > 
> > > > On Wed, Jul 29, 2015 at 2:59 PM, Kostya Serebryany <kcc@google.com>
> > > > wrote:
> > > > > 
> > > > > Eric,
> > > > > If there is no quick fix, will you be able to revert this, please?
> > > > > 
> > > > > On Wed, Jul 29, 2015 at 2:56 PM, Evgenii Stepanov
> > > > > <eugeni.stepanov@gmail.com> wrote:
> > > > > > 
> > > > > > And the log says:
> > > > > > 
> > > > > > CMake Error at cmake/Modules/FindLLVM.cmake:41 (message):
> > > > > > llvm-config not found and LLVM_MAIN_SRC_DIR not defined.
> Reconfigure
> > > > > > with
> > > > > > -DLLVM_CONFIG=path/to/llvm-config or
> > > > > > -DLLVM_PATH=path/to/llvm-source-root.
> > > > > > Call Stack (most recent call first):
> > > > > > CMakeLists.txt:37 (include)
> > > > > > 
> > > > > > On Wed, Jul 29, 2015 at 2:49 PM, Kostya Serebryany <kcc@google.com>
> > > > > > wrote:
> > > > > > > I am seeing build failure when trying to run "ninja check-msan":
> > > > > > > 
> > > > > > > [39/58] Performing configure step for 'libcxx_msan-with-call'
> > > > > > > FAILED: cd
> > > > > > > 
> > > > > > > 
> /usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/libcxx_msan-with-call/src/libcxx_msan-with-call-build
> 
> > > > > > > && /usr/bin/cmake -P
> > > > > > > 
> > > > > > > 
> /usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../lib \
> cxx_msan-with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure.cmake
> 
> > > > > > > && /usr/bin/cmake -E touch
> > > > > > > 
> > > > > > > 
> /usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../lib \
> cxx_msan-with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure
> > > > > > > CMake Error at
> > > > > > > 
> > > > > > > 
> /usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/libcxx_msan- \
> with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure.cmake:16
> > > > > > > (message):
> > > > > > > Command failed: 1
> > > > > > > 
> > > > > > > '/usr/bin/cmake'
> > > > > > > 
> > > > > > > 
> '-DCMAKE_C_COMPILER=/usr/local/google/home/kcc/llvm-gcc-build/./bin/clang'
> > > > > > > 
> > > > > > > 
> '-DCMAKE_CXX_COMPILER=/usr/local/google/home/kcc/llvm-gcc-build/./bin/clang'
> > > > > > > '-DCMAKE_C_FLAGS= -fsanitize=memory -fsanitize-memory-track-origins
> > > > > > > -Wno-pedantic -fsanitize=memory -fsanitize-memory-track-origins
> > > > > > > -Wno-pedantic -mllvm -msan-instrumentation-with-call-threshold=0'
> > > > > > > '-DCMAKE_CXX_FLAGS= -fsanitize=memory
> -fsanitize-memory-track-origins
> > > > > > > -Wno-pedantic -fsanitize=memory -fsanitize-memory-track-origins
> > > > > > > -Wno-pedantic -mllvm -msan-instrumentation-with-call-threshold=0'
> > > > > > > '-DCMAKE_BUILD_TYPE=Release'
> > > > > > > 
> > > > > > > 
> '-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../libcxx_msan-with-call'
> 
> > > > > > > '-GNinja' '/usr/local/google/home/kcc/llvm/projects/libcxx'
> > > > > > > 
> > > > > > > See also
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > 
> /usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../lib \
> cxx_msan-with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure-*.log
> 
> > > > > > > 
> > > > > > > 
> > > > > > > Looks like this is the only change that might have caused this.
> > > > > > > 
> > > > > > > On Wed, Jul 29, 2015 at 2:07 PM, Eric Fiselier <eric@efcs.ca>
> wrote:
> > > > > > > > 
> > > > > > > > Author: ericwf
> > > > > > > > Date: Wed Jul 29 16:07:28 2015
> > > > > > > > New Revision: 243574
> > > > > > > > 
> > > > > > > > URL: http://llvm.org/viewvc/llvm-project?rev=243574&view=rev
> > > > > > > > Log:
> > > > > > > > Recommit r243503 "[libcxx] Cleanup CMake configuration and
> integrate
> > > > > > > > with
> > > > > > > > LLVM"
> > > > > > > > 
> > > > > > > > This change was reverted in r243550 because it broke clang-format
> > > > > > > > builds
> > > > > > > > (see PR24306).
> > > > > > > > 
> > > > > > > > This patch recommits a fixed version of the original.
> > > > > > > > 
> > > > > > > > Added:
> > > > > > > > libcxx/trunk/cmake/Modules/FindLLVM.cmake
> > > > > > > > libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake
> > > > > > > > Modified:
> > > > > > > > libcxx/trunk/CMakeLists.txt
> > > > > > > > libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake
> > > > > > > > libcxx/trunk/cmake/config-ix.cmake
> > > > > > > > libcxx/trunk/lib/CMakeLists.txt
> > > > > > > > libcxx/trunk/test/CMakeLists.txt
> > > > > > > > libcxx/trunk/test/lit.site.cfg.in
> > > > > > > > libcxx/trunk/www/index.html
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/CMakeLists.txt
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/CMakeLists.txt?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/CMakeLists.txt (original)
> > > > > > > > +++ libcxx/trunk/CMakeLists.txt Wed Jul 29 16:07:28 2015
> > > > > > > > @@ -3,13 +3,16 @@
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > # Setup Project
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > -
> > > > > > > > -project(libcxx CXX C)
> > > > > > > > cmake_minimum_required(VERSION 2.8)
> > > > > > > > 
> > > > > > > > if(POLICY CMP0042)
> > > > > > > > cmake_policy(SET CMP0042 NEW) # Set MACOSX_RPATH=YES by default
> > > > > > > > endif()
> > > > > > > > +if(POLICY CMP0022)
> > > > > > > > +  cmake_policy(SET CMP0022 NEW) # Required when interacting with
> > > > > > > > LLVM and
> > > > > > > > Clang
> > > > > > > > +endif()
> > > > > > > > +
> > > > > > > > +project(libcxx CXX C)
> > > > > > > > 
> > > > > > > > set(PACKAGE_NAME libcxx)
> > > > > > > > set(PACKAGE_VERSION trunk-svn)
> > > > > > > > @@ -30,52 +33,90 @@ MACRO_ENSURE_OUT_OF_SOURCE_BUILD(
> > > > > > > > build directory and run 'cmake /path/to/${PROJECT_NAME}
> [options]'
> > > > > > > > there."
> > > > > > > > )
> > > > > > > > 
> > > > > > > > -if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
> > > > > > > > -  set(LIBCXX_LIBDIR_SUFFIX "" CACHE STRING
> > > > > > > > -      "Define suffix of library directory name (32/64)")
> > > > > > > > -
> > > > > > > > -  set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
> > > > > > > > ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
> > > > > > > > -  set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
> > > > > > > > ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
> > > > > > > > -
> > > > > > > > -  set(LIBCXX_BUILT_STANDALONE 1)
> > > > > > > > -else()
> > > > > > > > -  set(LIBCXX_LIBDIR_SUFFIX ${LLVM_LIBDIR_SUFFIX})
> > > > > > > > -endif()
> > > > > > > > +# Find the required bits of LLVM
> > > > > > > > +include(FindLLVM)
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > # Setup CMake Options
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > 
> > > > > > > > -# Define options.
> > > > > > > > -option(LIBCXX_ENABLE_EXCEPTIONS "Use exceptions." ON)
> > > > > > > > -option(LIBCXX_ENABLE_RTTI "Use run time type information." ON)
> > > > > > > > +# Basic options
> > > > > > > > ---------------------------------------------------------------
> > > > > > > > option(LIBCXX_ENABLE_ASSERTIONS "Enable assertions independent of
> > > > > > > > build
> > > > > > > > mode." ON)
> > > > > > > > -option(LIBCXX_ENABLE_PEDANTIC "Compile with pedantic enabled."
> ON)
> > > > > > > > -option(LIBCXX_ENABLE_WERROR "Fail and stop if a warning is
> > > > > > > > triggered."
> > > > > > > > OFF)
> > > > > > > > -option(LIBCXX_ENABLE_CXX1Y "Enable -std=c++1y and use of c++1y
> > > > > > > > language
> > > > > > > > features if the compiler supports it." OFF)
> > > > > > > > option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library."
> ON)
> > > > > > > > +
> > > > > > > > +set(LIBCXX_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE STRING
> > > > > > > > +    "Define suffix of library directory name (32/64)")
> > > > > > > > +option(LIBCXX_INSTALL_HEADERS "Install the libc++ headers." ON)
> > > > > > > > +option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support
> > > > > > > > headers."
> > > > > > > > ON)
> > > > > > > > +
> > > > > > > > +# ABI Library options
> > > > > > > > ---------------------------------------------------------
> > > > > > > > +set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING
> > > > > > > > +    "Specify C++ ABI library to use." FORCE)
> > > > > > > > +set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++)
> > > > > > > > +set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})
> > > > > > > > +
> > > > > > > > +option(LIBCXX_ENABLE_STATIC_ABI_LIBRARY "Statically link the ABI
> > > > > > > > library"
> > > > > > > > OFF)
> > > > > > > > +
> > > > > > > > +# Build libc++abi with libunwind. We need this option to
> determine
> > > > > > > > whether to
> > > > > > > > +# link with libunwind or libgcc_s while running the test cases.
> > > > > > > > +option(LIBCXXABI_USE_LLVM_UNWINDER "Build and use the LLVM
> > > > > > > > unwinder."
> > > > > > > > OFF)
> > > > > > > > +
> > > > > > > > +# Target options
> > > > > > > > --------------------------------------------------------------
> > > > > > > > +option(LIBCXX_BUILD_32_BITS "Build 32 bit libc++." OFF)
> > > > > > > > +set(LIBCXX_SYSROOT "" CACHE STRING "Use alternate sysroot.")
> > > > > > > > +set(LIBCXX_GCC_TOOLCHAIN "" CACHE STRING "Use alternate GCC
> > > > > > > > toolchain.")
> > > > > > > > +
> > > > > > > > +# Feature options
> > > > > > > > -------------------------------------------------------------
> > > > > > > > +option(LIBCXX_ENABLE_EXCEPTIONS "Use exceptions." ON)
> > > > > > > > +option(LIBCXX_ENABLE_RTTI "Use run time type information." ON)
> > > > > > > > option(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE "Build libc++
> with
> > > > > > > > support for the global filesystem namespace." ON)
> > > > > > > > option(LIBCXX_ENABLE_STDIN "Build libc++ with support for
> > > > > > > > stdin/std::cin." ON)
> > > > > > > > option(LIBCXX_ENABLE_STDOUT "Build libc++ with support for
> > > > > > > > stdout/std::cout." ON)
> > > > > > > > option(LIBCXX_ENABLE_THREADS "Build libc++ with support for
> > > > > > > > threads." ON)
> > > > > > > > option(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS "Build libc++ with
> > > > > > > > support
> > > > > > > > for thread-unsafe C functions" ON)
> > > > > > > > -option(LIBCXX_BUILD_32_BITS "Build 32 bit libc++" OFF)
> > > > > > > > option(LIBCXX_ENABLE_MONOTONIC_CLOCK
> > > > > > > > "Build libc++ with support for a monotonic clock.
> > > > > > > > This option may only be used when LIBCXX_ENABLE_THREADS=OFF."
> > > > > > > > ON)
> > > > > > > > -option(LIBCXX_INSTALL_HEADERS "Install the libc++ headers." ON)
> > > > > > > > -option(LIBCXX_INSTALL_SUPPORT_HEADERS "Install libc++ support
> > > > > > > > headers."
> > > > > > > > ON)
> > > > > > > > +
> > > > > > > > +# Misc options
> > > > > > > > ----------------------------------------------------------------
> > > > > > > > +option(LIBCXX_ENABLE_PEDANTIC "Compile with pedantic enabled."
> ON)
> > > > > > > > +option(LIBCXX_ENABLE_WERROR "Fail and stop if a warning is
> > > > > > > > triggered."
> > > > > > > > OFF)
> > > > > > > > +
> > > > > > > > option(LIBCXX_GENERATE_COVERAGE "Enable generating code
> coverage."
> > > > > > > > OFF)
> > > > > > > > set(LIBCXX_COVERAGE_LIBRARY "" CACHE STRING
> > > > > > > > -       "The Profile-rt library used to build with code coverage")
> > > > > > > > -option(LIBCXX_ENABLE_STATIC_ABI_LIBRARY "Statically link the ABI
> > > > > > > > library"
> > > > > > > > OFF)
> > > > > > > > -set(LIBCXX_SYSROOT "" CACHE STRING "Use alternate sysroot.")
> > > > > > > > -set(LIBCXX_GCC_TOOLCHAIN "" CACHE STRING "Use alternate GCC
> > > > > > > > toolchain.")
> > > > > > > > -if (LIBCXX_BUILT_STANDALONE)
> > > > > > > > -  set(LLVM_USE_SANITIZER "" CACHE STRING
> > > > > > > > -      "Define the sanitizer used to build the library and tests")
> > > > > > > > +    "The Profile-rt library used to build with code coverage")
> > > > > > > > +
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> +#===============================================================================
> > > > > > > > +# Check option configurations
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> +#===============================================================================
> > > > > > > > +
> > > > > > > > +# Ensure LIBCXX_ENABLE_MONOTONIC_CLOCK is set to ON only when
> > > > > > > > +# LIBCXX_ENABLE_THREADS is on.
> > > > > > > > +if(LIBCXX_ENABLE_THREADS AND NOT LIBCXX_ENABLE_MONOTONIC_CLOCK)
> > > > > > > > +  message(FATAL_ERROR "LIBCXX_ENABLE_MONOTONIC_CLOCK can only be
> > > > > > > > set to
> > > > > > > > OFF"
> > > > > > > > +                      " when LIBCXX_ENABLE_THREADS is also set to
> > > > > > > > OFF.")
> > > > > > > > +endif()
> > > > > > > > +
> > > > > > > > +# Ensure LLVM_USE_SANITIZER is not specified when
> > > > > > > > LIBCXX_GENERATE_COVERAGE
> > > > > > > > +# is ON.
> > > > > > > > +if (LLVM_USE_SANITIZER AND LIBCXX_GENERATE_COVERAGE)
> > > > > > > > +  message(FATAL_ERROR "LLVM_USE_SANITIZER cannot be used with
> > > > > > > > LIBCXX_GENERATE_COVERAGE")
> > > > > > > > +endif()
> > > > > > > > +
> > > > > > > > +# Set LIBCXX_BUILD_32_BITS to (LIBCXX_BUILD_32_BITS OR
> > > > > > > > LLVM_BUILD_32_BITS)
> > > > > > > > +# and check that we can build with 32 bits if requested.
> > > > > > > > +if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32)
> > > > > > > > +  if (LIBCXX_BUILD_32_BITS OR LLVM_BUILD_32_BITS)
> > > > > > > > +    if (NOT LLVM_BUILD_32_BITS) # Don't duplicate the output from
> > > > > > > > LLVM
> > > > > > > > +      message(STATUS "Building 32 bits executables and
> libraries.")
> > > > > > > > +    endif()
> > > > > > > > +    set(LIBCXX_BUILD_32_BITS ON CACHE BOOL "" FORCE)
> > > > > > > > +  endif()
> > > > > > > > +elseif(LIBCXX_BUILD_32_BITS)
> > > > > > > > +  message(FATAL_ERROR "LIBCXX_BUILD_32_BITS=ON is not supported
> on
> > > > > > > > this
> > > > > > > > platform.")
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > +# Check that this option is not enabled on Apple and emit a usage
> > > > > > > > warning.
> > > > > > > > if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
> > > > > > > > if (APPLE)
> > > > > > > > message(FATAL_ERROR "LIBCXX_ENABLE_STATIC_ABI_LIBRARY is not
> > > > > > > > supported on OS X")
> > > > > > > > @@ -84,27 +125,6 @@ if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
> > > > > > > > endif()
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -set(CXXABIS none libcxxabi libcxxrt libstdc++ libsupc++)
> > > > > > > > -if (NOT LIBCXX_CXX_ABI)
> > > > > > > > -  if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND
> > > > > > > > -      IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi")
> > > > > > > > -    set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi")
> > > > > > > > -    set(LIBCXX_CXX_ABI_INCLUDE_PATHS
> > > > > > > > "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include")
> > > > > > > > -    set(LIBCXX_CXX_ABI_INTREE 1)
> > > > > > > > -  else ()
> > > > > > > > -    set(LIBCXX_CXX_ABI_LIBNAME "none")
> > > > > > > > -  endif ()
> > > > > > > > -else ()
> > > > > > > > -  set(LIBCXX_CXX_ABI_LIBNAME "${LIBCXX_CXX_ABI}")
> > > > > > > > -endif ()
> > > > > > > > -set(LIBCXX_CXX_ABI "${LIBCXX_CXX_ABI}" CACHE STRING
> > > > > > > > -    "Specify C++ ABI library to use." FORCE)
> > > > > > > > -set_property(CACHE LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})
> > > > > > > > -
> > > > > > > > -# Build libc++abi with libunwind. We need this option to
> determine
> > > > > > > > whether to
> > > > > > > > -# link with libunwind or libgcc_s while running the test cases.
> > > > > > > > -option(LIBCXXABI_USE_LLVM_UNWINDER "Build and use the LLVM
> > > > > > > > unwinder."
> > > > > > > > OFF)
> > > > > > > > -
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > # Configure System
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > @@ -114,234 +134,113 @@ set(LIBCXX_SOURCE_DIR  ${CMAKE_CURRENT_S
> > > > > > > > set(LIBCXX_BINARY_DIR  ${CMAKE_CURRENT_BINARY_DIR})
> > > > > > > > set(LIBCXX_LIBRARY_DIR
> > > > > > > > ${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})
> > > > > > > > 
> > > > > > > > +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBCXX_LIBRARY_DIR})
> > > > > > > > +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBCXX_LIBRARY_DIR})
> > > > > > > > +
> > > > > > > > # Declare libc++ configuration variables.
> > > > > > > > # They are intended for use as follows:
> > > > > > > > # LIBCXX_CXX_FLAGS: General flags for both the compiler and
> linker.
> > > > > > > > # LIBCXX_COMPILE_FLAGS: Compile only flags.
> > > > > > > > # LIBCXX_LINK_FLAGS: Linker only flags.
> > > > > > > > -set(LIBCXX_CXX_FLAGS "")
> > > > > > > > set(LIBCXX_COMPILE_FLAGS "")
> > > > > > > > set(LIBCXX_LINK_FLAGS "")
> > > > > > > > +set(LIBCXX_LIBRARIES "")
> > > > > > > > 
> > > > > > > > # Configure compiler.
> > > > > > > > include(config-ix)
> > > > > > > > -# Configure ABI library
> > > > > > > > -include(HandleLibCXXABI)
> > > > > > > > +
> > > > > > > > # Configure coverage options.
> > > > > > > > if (LIBCXX_GENERATE_COVERAGE)
> > > > > > > > include(CodeCoverage)
> > > > > > > > set(CMAKE_BUILD_TYPE "COVERAGE" CACHE STRING "" FORCE)
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > +string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
> > > > > > > > +
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > # Setup Compiler Flags
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > 
> > > > > > > > -# Get required flags.
> > > > > > > > -# On all systems the system c++ standard library headers need to
> be
> > > > > > > > excluded.
> > > > > > > > -if (MSVC)
> > > > > > > > -  # MSVC only has -X, which disables all default includes;
> > > > > > > > including the
> > > > > > > > crt.
> > > > > > > > -  # Thus, we do nothing and hope we don't accidentally include
> any
> > > > > > > > of the
> > > > > > > > C++
> > > > > > > > -  # headers.
> > > > > > > > -else()
> > > > > > > > -  if (LIBCXX_HAS_NOSTDINCXX_FLAG)
> > > > > > > > -    list(APPEND LIBCXX_COMPILE_FLAGS -nostdinc++)
> > > > > > > > -    string(REPLACE "-stdlib=libc++" "" CMAKE_CXX_FLAGS
> > > > > > > > "${CMAKE_CXX_FLAGS}")
> > > > > > > > -    string(REPLACE "-stdlib=libstdc++" "" CMAKE_CXX_FLAGS
> > > > > > > > "${CMAKE_CXX_FLAGS}")
> > > > > > > > -  endif()
> > > > > > > > -  # If c++1y has been enabled then attempt to use it. Fail if it
> is
> > > > > > > > no
> > > > > > > > supported
> > > > > > > > -  # by the compiler. Otherwise choose c++11 and ensure the
> compiler
> > > > > > > > supports it.
> > > > > > > > -  if (LIBCXX_ENABLE_CXX1Y)
> > > > > > > > -    if (LIBCXX_HAS_STDCXX1Y_FLAG)
> > > > > > > > -      set(LIBCXX_STD_VERSION c++1y)
> > > > > > > > -    else()
> > > > > > > > -      message(FATAL_ERROR "c++1y was enabled but the compiler
> does
> > > > > > > > not
> > > > > > > > support it.")
> > > > > > > > -    endif()
> > > > > > > > -  else()
> > > > > > > > -    if (LIBCXX_HAS_STDCXX11_FLAG)
> > > > > > > > -      set(LIBCXX_STD_VERSION c++11)
> > > > > > > > -    else()
> > > > > > > > -      message(FATAL_ERROR "c++11 is required by libc++ but is not
> > > > > > > > supported by the compiler")
> > > > > > > > -    endif()
> > > > > > > > -  endif()
> > > > > > > > -  # LIBCXX_STD_VERSION should always be set at this point.
> > > > > > > > -  list(APPEND LIBCXX_CXX_FLAGS "-std=${LIBCXX_STD_VERSION}")
> > > > > > > > -endif()
> > > > > > > > +include(HandleLibCXXABI) # Steup the ABI library flags
> > > > > > > > 
> > > > > > > > -macro(append_if list condition var)
> > > > > > > > -  if (${condition})
> > > > > > > > -    list(APPEND ${list} ${var})
> > > > > > > > -  endif()
> > > > > > > > -endmacro()
> > > > > > > > +# Include macros for adding and removing libc++ flags.
> > > > > > > > +include(HandleLibcxxFlags)
> > > > > > > > 
> > > > > > > > -# Get warning flags
> > > > > > > > -# Disable the system header pragma.
> > > > > > > > -add_definitions(-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
> > > > > > > > -if (NOT MSVC)
> > > > > > > > -  append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WALL_FLAG -Wall)
> > > > > > > > -  list(APPEND LIBCXX_COMPILE_FLAGS -Werror=return-type)
> > > > > > > > +# Remove flags that may have snuck in.
> > > > > > > > +remove_flags(-DNDEBUG -UNDEBUG -D_DEBUG
> > > > > > > > +             -stdlib=libc++ -stdlib=libstdc++ -lc++abi -m32)
> > > > > > > > +
> > > > > > > > +# Required flags
> > > > > > > > ==============================================================
> > > > > > > > +add_compile_flags_if_supported(-std=c++11)
> > > > > > > > +if (NOT MSVC AND NOT LIBCXX_SUPPORTS_STD_EQ_CXX11_FLAG)
> > > > > > > > +  message(FATAL_ERROR "C++11 is required but the compiler does
> not
> > > > > > > > support -std=c++11")
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_W_FLAG -W)
> > > > > > > > -append_if(LIBCXX_COMPILE_FLAGS
> LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG
> > > > > > > > -Wno-unused-parameter)
> > > > > > > > -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WWRITE_STRINGS_FLAG
> > > > > > > > -Wwrite-strings)
> > > > > > > > -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WNO_LONG_LONG_FLAG
> > > > > > > > -Wno-long-long)
> > > > > > > > +# On all systems the system c++ standard library headers need to
> be
> > > > > > > > excluded.
> > > > > > > > +# MSVC only has -X, which disables all default includes;
> including
> > > > > > > > the
> > > > > > > > crt.
> > > > > > > > +# Thus, we do nothing and hope we don't accidentally include any
> of
> > > > > > > > the
> > > > > > > > C++
> > > > > > > > +# headers
> > > > > > > > +add_compile_flags_if_supported(-nostdinc++)
> > > > > > > > +
> > > > > > > > +# Target flags
> > > > > > > > ================================================================
> > > > > > > > +add_flags_if(LIBCXX_BUILD_32_BITS -m32)
> > > > > > > > +add_flags_if(LIBCXX_TARGET_TRIPLE "-target
> > > > > > > > ${LIBCXX_TARGET_TRIPLE}")
> > > > > > > > +add_flags_if(LIBCXX_SYSROOT "--sysroot ${LIBCXX_SYSROOT}")
> > > > > > > > +add_flags_if(LIBCXX_GCC_TOOLCHAIN "-gcc-toolchain
> > > > > > > > ${LIBCXX_GCC_TOOLCHAIN}")
> > > > > > > > +
> > > > > > > > +# Warning flags
> > > > > > > > ===============================================================
> > > > > > > > +add_definitions(-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
> > > > > > > > +add_compile_flags_if_supported(
> > > > > > > > +    -Wall -W -Wwrite-strings
> > > > > > > > +    -Wno-unused-parameter -Wno-long-long
> > > > > > > > +    -Werror=return-type)
> > > > > > > > if (LIBCXX_ENABLE_WERROR)
> > > > > > > > -  append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WERROR_FLAG -Werror)
> > > > > > > > -  append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WX_FLAG -WX)
> > > > > > > > -else()
> > > > > > > > -  append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WNO_ERROR_FLAG
> > > > > > > > -Wno-error)
> > > > > > > > -  append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_NO_WX_FLAG -WX-)
> > > > > > > > +  add_compile_flags_if_supported(-Werror)
> > > > > > > > +  add_compile_flags_if_supported(-WX)
> > > > > > > > endif()
> > > > > > > > if (LIBCXX_ENABLE_PEDANTIC)
> > > > > > > > -  append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_PEDANTIC_FLAG
> > > > > > > > -pedantic)
> > > > > > > > +  add_compile_flags_if_supported(-pedantic)
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -# Get feature flags.
> > > > > > > > -# Exceptions
> > > > > > > > +# Exception flags
> > > > > > > > =============================================================
> > > > > > > > if (LIBCXX_ENABLE_EXCEPTIONS)
> > > > > > > > # Catches C++ exceptions only and tells the compiler to assume
> > > > > > > > that
> > > > > > > > extern C
> > > > > > > > # functions never throw a C++ exception.
> > > > > > > > -  append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_EHSC_FLAG -EHsc)
> > > > > > > > +  add_compile_flags_if_supported(-EHsc)
> > > > > > > > else()
> > > > > > > > -  list(APPEND LIBCXX_CXX_FLAGS -D_LIBCPP_NO_EXCEPTIONS)
> > > > > > > > -  append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_EHS_FLAG -EHs-)
> > > > > > > > -  append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_EHA_FLAG -EHa-)
> > > > > > > > -  append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_FNO_EXCEPTIONS_FLAG
> > > > > > > > -fno-exceptions)
> > > > > > > > +  add_definitions(-D_LIBCPP_NO_EXCEPTIONS)
> > > > > > > > +  add_compile_flags_if_supported(-EHs- -EHa-)
> > > > > > > > +  add_compile_flags_if_supported(-fno-exceptions)
> > > > > > > > endif()
> > > > > > > > -# RTTI
> > > > > > > > +
> > > > > > > > +# RTTI flags
> > > > > > > > ==================================================================
> > > > > > > > if (NOT LIBCXX_ENABLE_RTTI)
> > > > > > > > -  list(APPEND LIBCXX_CXX_FLAGS -D_LIBCPP_NO_RTTI)
> > > > > > > > -  append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_GR_FLAG -GR-)
> > > > > > > > -  append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_FNO_RTTI_FLAG -fno-rtti)
> > > > > > > > +  add_definitions(-D_LIBCPP_NO_RTTI)
> > > > > > > > +  add_compile_flags_if_supported(-GR-)
> > > > > > > > +  add_compile_flags_if_supported(-fno-rtti)
> > > > > > > > endif()
> > > > > > > > -# Assert
> > > > > > > > -string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
> > > > > > > > +
> > > > > > > > +# Assertion flags
> > > > > > > > =============================================================
> > > > > > > > +define_if(LIBCXX_ENABLE_ASSERTIONS -UNDEBUG)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_ASSERTIONS -DNDEBUG)
> > > > > > > > if (LIBCXX_ENABLE_ASSERTIONS)
> > > > > > > > # MSVC doesn't like _DEBUG on release builds. See PR 4379.
> > > > > > > > -  if (NOT MSVC)
> > > > > > > > -    list(APPEND LIBCXX_COMPILE_FLAGS -D_DEBUG)
> > > > > > > > -  endif()
> > > > > > > > -  # On Release builds cmake automatically defines NDEBUG, so we
> > > > > > > > -  # explicitly undefine it:
> > > > > > > > -  if (uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE")
> > > > > > > > -    list(APPEND LIBCXX_COMPILE_FLAGS -UNDEBUG)
> > > > > > > > -  endif()
> > > > > > > > -else()
> > > > > > > > -  if (NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELEASE")
> > > > > > > > -    list(APPEND LIBCXX_COMPILE_FLAGS -DNDEBUG)
> > > > > > > > -  endif()
> > > > > > > > -endif()
> > > > > > > > -# Static library
> > > > > > > > -if (NOT LIBCXX_ENABLE_SHARED)
> > > > > > > > -  list(APPEND LIBCXX_COMPILE_FLAGS -D_LIBCPP_BUILD_STATIC)
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32)
> > > > > > > > -  if (LIBCXX_BUILD_32_BITS)
> > > > > > > > -    message(STATUS "Building 32 bits executables and libraries.")
> > > > > > > > -    list(APPEND LIBCXX_CXX_FLAGS "-m32")
> > > > > > > > -  endif()
> > > > > > > > -elseif(LIBCXX_BUILD_32_BITS)
> > > > > > > > -  message(FATAL_ERROR "LIBCXX_BUILD_32_BITS=ON is not supported
> on
> > > > > > > > this
> > > > > > > > platform.")
> > > > > > > > -endif()
> > > > > > > > -# This is the _ONLY_ place where add_definitions is called.
> > > > > > > > -if (MSVC)
> > > > > > > > -  add_definitions(-D_CRT_SECURE_NO_WARNINGS)
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -# LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE configuration
> > > > > > > > -if (NOT LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE)
> > > > > > > > -  add_definitions(-D_LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE)
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -# LIBCXX_ENABLE_STDIN configuration
> > > > > > > > -if (NOT LIBCXX_ENABLE_STDIN)
> > > > > > > > -  add_definitions(-D_LIBCPP_HAS_NO_STDIN)
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -# LIBCXX_ENABLE_STDOUT configuration
> > > > > > > > -if (NOT LIBCXX_ENABLE_STDOUT)
> > > > > > > > -  add_definitions(-D_LIBCPP_HAS_NO_STDOUT)
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -# LIBCXX_ENABLE_THREADS configuration
> > > > > > > > -if (NOT LIBCXX_ENABLE_THREADS)
> > > > > > > > -  add_definitions(-D_LIBCPP_HAS_NO_THREADS)
> > > > > > > > -  if (NOT LIBCXX_ENABLE_MONOTONIC_CLOCK)
> > > > > > > > -    add_definitions(-D_LIBCPP_HAS_NO_MONOTONIC_CLOCK)
> > > > > > > > -  endif()
> > > > > > > > -# Ensure LIBCXX_ENABLE_MONOTONIC_CLOCK is set to ON.
> > > > > > > > -elseif(NOT LIBCXX_ENABLE_MONOTONIC_CLOCK)
> > > > > > > > -  message(FATAL_ERROR "LIBCXX_ENABLE_MONOTONIC_CLOCK can only be
> > > > > > > > set to
> > > > > > > > OFF"
> > > > > > > > -                      " when LIBCXX_ENABLE_THREADS is also set to
> > > > > > > > OFF.")
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -# LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS configuration
> > > > > > > > -if (NOT LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS)
> > > > > > > > -  add_definitions(-D_LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS)
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -# Configure for sanitizers. If LIBCXX_BUILT_STANDALONE then we
> have
> > > > > > > > to do
> > > > > > > > -# the flag translation ourselves. Othewise LLVM's CMakeList.txt
> > > > > > > > will
> > > > > > > > handle it.
> > > > > > > > -if (LIBCXX_BUILT_STANDALONE)
> > > > > > > > -  # NOTE: LLVM_USE_SANITIZER checks for a UNIX like system
> instead
> > > > > > > > of
> > > > > > > > MSVC.
> > > > > > > > -  # But we don't have LLVM_ON_UNIX so checking for MSVC is the
> best
> > > > > > > > we
> > > > > > > > can do.
> > > > > > > > -  if (LLVM_USE_SANITIZER AND NOT MSVC)
> > > > > > > > -    append_if(LIBCXX_CXX_FLAGS
> > > > > > > > LIBCXX_HAS_FNO_OMIT_FRAME_POINTER_FLAG
> > > > > > > > -              "-fno-omit-frame-pointer")
> > > > > > > > -    if (NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" AND
> > > > > > > > -        NOT uppercase_CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO")
> > > > > > > > -      append_if(LIBCXX_CXX_FLAGS
> LIBCXX_HAS_GLINE_TABLES_ONLY_FLAG
> > > > > > > > -                "-gline-tables-only")
> > > > > > > > -    endif()
> > > > > > > > -    if (LLVM_USE_SANITIZER STREQUAL "Address")
> > > > > > > > -      list(APPEND LIBCXX_CXX_FLAGS "-fsanitize=address")
> > > > > > > > -    elseif (LLVM_USE_SANITIZER MATCHES "Memory(WithOrigins)?")
> > > > > > > > -      list(APPEND LIBCXX_CXX_FLAGS "-fsanitize=memory")
> > > > > > > > -      if (LLVM_USE_SANITIZER STREQUAL "MemoryWithOrigins")
> > > > > > > > -        list(APPEND LIBCXX_CXX_FLAGS
> > > > > > > > "-fsanitize-memory-track-origins")
> > > > > > > > -      endif()
> > > > > > > > -    elseif (LLVM_USE_SANITIZER STREQUAL "Undefined")
> > > > > > > > -      list(APPEND LIBCXX_CXX_FLAGS
> > > > > > > > -          "-fsanitize=undefined -fno-sanitize=vptr,function
> > > > > > > > -fno-sanitize-recover")
> > > > > > > > -    elseif (LLVM_USE_SANITIZER STREQUAL "Thread")
> > > > > > > > -      list(APPEND LIBCXX_CXX_FLAGS "-fsanitize=thread")
> > > > > > > > -    else()
> > > > > > > > -      message(WARNING "Unsupported value of LLVM_USE_SANITIZER:
> > > > > > > > ${LLVM_USE_SANITIZER}")
> > > > > > > > -    endif()
> > > > > > > > -  elseif(MSVC)
> > > > > > > > -    message(WARNING "LLVM_USE_SANITIZER is not supported with
> > > > > > > > MSVC")
> > > > > > > > -  endif()
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -append_if(LIBCXX_CXX_FLAGS LIBCXX_TARGET_TRIPLE
> > > > > > > > -          "-target ${LIBCXX_TARGET_TRIPLE}")
> > > > > > > > -
> > > > > > > > -append_if(LIBCXX_CXX_FLAGS LIBCXX_SYSROOT "--sysroot
> > > > > > > > ${LIBCXX_SYSROOT}")
> > > > > > > > -append_if(LIBCXX_CXX_FLAGS LIBCXX_GCC_TOOLCHAIN
> > > > > > > > -          "-gcc-toolchain ${LIBCXX_GCC_TOOLCHAIN}")
> > > > > > > > -
> > > > > > > > -if (LLVM_USE_SANITIZER AND LIBCXX_GENERATE_COVERAGE)
> > > > > > > > -  message(FATAL_ERROR "LLVM_USE_SANITIZER cannot be used with
> > > > > > > > LIBCXX_GENERATE_COVERAGE")
> > > > > > > > +  define_if_not(MSVC -D_DEBUG)
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -string(REPLACE ";" " " LIBCXX_CXX_FLAGS "${LIBCXX_CXX_FLAGS}")
> > > > > > > > -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBCXX_CXX_FLAGS}")
> > > > > > > > +# Feature flags
> > > > > > > > ===============================================================
> > > > > > > > +define_if(MSVC -D_CRT_SECURE_NO_WARNINGS)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE
> > > > > > > > -D_LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_STDIN -D_LIBCPP_HAS_NO_STDIN)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_STDOUT -D_LIBCPP_HAS_NO_STDOUT)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_THREADS -D_LIBCPP_HAS_NO_THREADS)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_MONOTONIC_CLOCK
> > > > > > > > -D_LIBCPP_HAS_NO_MONOTONIC_CLOCK)
> > > > > > > > +define_if_not(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS
> > > > > > > > -D_LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS)
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > -# Setup Source Code
> > > > > > > > +# Setup Source Code And Tests
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> #===============================================================================
> > > > > > > > -
> > > > > > > > include_directories(include)
> > > > > > > > add_subdirectory(include)
> > > > > > > > -
> > > > > > > > -# Add source code. This also contains all of the logic for
> deciding
> > > > > > > > linker flags
> > > > > > > > -# soname, etc...
> > > > > > > > add_subdirectory(lib)
> > > > > > > > -
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> -#===============================================================================
> > > > > > > > -# Setup Tests
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> -#===============================================================================
> > > > > > > > -
> > > > > > > > add_subdirectory(test)
> > > > > > > > 
> > > > > > > > Added: libcxx/trunk/cmake/Modules/FindLLVM.cmake
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/FindLLVM.cmake?rev=243574&view=auto
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/cmake/Modules/FindLLVM.cmake (added)
> > > > > > > > +++ libcxx/trunk/cmake/Modules/FindLLVM.cmake Wed Jul 29 16:07:28
> > > > > > > > 2015
> > > > > > > > @@ -0,0 +1,81 @@
> > > > > > > > +
> > > > > > > > +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
> > > > > > > > +  # Rely on llvm-config.
> > > > > > > > +  set(CONFIG_OUTPUT)
> > > > > > > > +  find_program(LLVM_CONFIG "llvm-config")
> > > > > > > > +  if(DEFINED LLVM_PATH)
> > > > > > > > +    set(LLVM_INCLUDE_DIR ${LLVM_INCLUDE_DIR} CACHE PATH "Path to
> > > > > > > > llvm/include")
> > > > > > > > +    set(LLVM_PATH ${LLVM_PATH} CACHE PATH "Path to LLVM source
> > > > > > > > tree")
> > > > > > > > +    set(LLVM_MAIN_SRC_DIR ${LLVM_PATH})
> > > > > > > > +    set(LLVM_CMAKE_PATH "${LLVM_PATH}/cmake/modules")
> > > > > > > > +  elseif(LLVM_CONFIG)
> > > > > > > > +    message(STATUS "Found LLVM_CONFIG as ${LLVM_CONFIG}")
> > > > > > > > +    set(CONFIG_COMMAND ${LLVM_CONFIG}
> > > > > > > > +      "--includedir"
> > > > > > > > +      "--prefix"
> > > > > > > > +      "--src-root")
> > > > > > > > +    execute_process(
> > > > > > > > +      COMMAND ${CONFIG_COMMAND}
> > > > > > > > +      RESULT_VARIABLE HAD_ERROR
> > > > > > > > +      OUTPUT_VARIABLE CONFIG_OUTPUT
> > > > > > > > +    )
> > > > > > > > +    if(NOT HAD_ERROR)
> > > > > > > > +      string(REGEX REPLACE
> > > > > > > > +        "[ \t]*[\r\n]+[ \t]*" ";"
> > > > > > > > +        CONFIG_OUTPUT ${CONFIG_OUTPUT})
> > > > > > > > +    else()
> > > > > > > > +      string(REPLACE ";" " " CONFIG_COMMAND_STR
> > > > > > > > "${CONFIG_COMMAND}")
> > > > > > > > +      message(STATUS "${CONFIG_COMMAND_STR}")
> > > > > > > > +      message(FATAL_ERROR "llvm-config failed with status
> > > > > > > > ${HAD_ERROR}")
> > > > > > > > +    endif()
> > > > > > > > +
> > > > > > > > +    list(GET CONFIG_OUTPUT 0 INCLUDE_DIR)
> > > > > > > > +    list(GET CONFIG_OUTPUT 1 LLVM_OBJ_ROOT)
> > > > > > > > +    list(GET CONFIG_OUTPUT 2 MAIN_SRC_DIR)
> > > > > > > > +
> > > > > > > > +    set(LLVM_INCLUDE_DIR ${INCLUDE_DIR} CACHE PATH "Path to
> > > > > > > > llvm/include")
> > > > > > > > +    set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH "Path to LLVM
> > > > > > > > build
> > > > > > > > tree")
> > > > > > > > +    set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to
> LLVM
> > > > > > > > source
> > > > > > > > tree")
> > > > > > > > +    set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/share/llvm/cmake")
> > > > > > > > +  else()
> > > > > > > > +    message(FATAL_ERROR "llvm-config not found and
> > > > > > > > LLVM_MAIN_SRC_DIR not
> > > > > > > > defined. "
> > > > > > > > +                        "Reconfigure with
> > > > > > > > -DLLVM_CONFIG=path/to/llvm-config "
> > > > > > > > +                        "or
> -DLLVM_PATH=path/to/llvm-source-root.")
> > > > > > > > +  endif()
> > > > > > > > +
> > > > > > > > +  if (NOT EXISTS ${LLVM_MAIN_SRC_DIR})
> > > > > > > > +    message(FATAL_ERROR "Not found: ${LLVM_MAIN_SRC_DIR}")
> > > > > > > > +  endif()
> > > > > > > > +
> > > > > > > > +  if(NOT EXISTS ${LLVM_CMAKE_PATH})
> > > > > > > > +    message(FATAL_ERROR "Not found: ${LLVM_CMAKE_PATH}")
> > > > > > > > +  endif()
> > > > > > > > +
> > > > > > > > +  list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
> > > > > > > > +  list(APPEND CMAKE_MODULE_PATH
> > > > > > > > "${LLVM_MAIN_SRC_DIR}/cmake/modules")
> > > > > > > > +
> > > > > > > > +
> > > > > > > > +  if(LLVM_LIT)
> > > > > > > > +    # Define the default arguments to use with 'lit', and an
> option
> > > > > > > > for
> > > > > > > > the user
> > > > > > > > +    # to override.
> > > > > > > > +    set(LIT_ARGS_DEFAULT "-sv --show-xfail --show-unsupported")
> > > > > > > > +    if (MSVC OR XCODE)
> > > > > > > > +      set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT}
> --no-progress-bar")
> > > > > > > > +    endif()
> > > > > > > > +    set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}" CACHE STRING "Default
> > > > > > > > options
> > > > > > > > for lit")
> > > > > > > > +
> > > > > > > > +    # On Win32 hosts, provide an option to specify the path to
> the
> > > > > > > > GnuWin32 tools.
> > > > > > > > +    if( WIN32 AND NOT CYGWIN )
> > > > > > > > +      set(LLVM_LIT_TOOLS_DIR "" CACHE PATH "Path to GnuWin32
> > > > > > > > tools")
> > > > > > > > +    endif()
> > > > > > > > +  else()
> > > > > > > > +    set(LLVM_INCLUDE_TESTS OFF)
> > > > > > > > +  endif()
> > > > > > > > +
> > > > > > > > +  include(AddLLVM) # Include the LLVM CMake functions.
> > > > > > > > +  include(HandleLLVMOptions)
> > > > > > > > +  set(LIBCXX_BUILT_STANDALONE 1)
> > > > > > > > +else()
> > > > > > > > +  set(LLVM_MAIN_SRC_DIR "${CMAKE_SOURCE_DIR}" CACHE PATH "Path to
> > > > > > > > LLVM
> > > > > > > > source tree")
> > > > > > > > +  set(LLVM_LIT "${CMAKE_SOURCE_DIR}/utils/lit/lit.py")
> > > > > > > > +endif()
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake (original)
> > > > > > > > +++ libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake Wed Jul 29
> > > > > > > > 16:07:28
> > > > > > > > 2015
> > > > > > > > @@ -58,6 +58,21 @@ macro(setup_abi_lib abidefines abilib ab
> > > > > > > > 
> > > > > > > > endmacro()
> > > > > > > > 
> > > > > > > > +# Setup the default options if LIBCXX_CXX_ABI is not specified.
> > > > > > > > +if (NOT LIBCXX_CXX_ABI)
> > > > > > > > +  if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND
> > > > > > > > +      IS_DIRECTORY "${CMAKE_SOURCE_DIR}/projects/libcxxabi")
> > > > > > > > +    set(LIBCXX_CXX_ABI_LIBNAME "libcxxabi")
> > > > > > > > +    set(LIBCXX_CXX_ABI_INCLUDE_PATHS
> > > > > > > > "${CMAKE_SOURCE_DIR}/projects/libcxxabi/include")
> > > > > > > > +    set(LIBCXX_CXX_ABI_INTREE 1)
> > > > > > > > +  else ()
> > > > > > > > +    set(LIBCXX_CXX_ABI_LIBNAME "none")
> > > > > > > > +  endif ()
> > > > > > > > +else ()
> > > > > > > > +  set(LIBCXX_CXX_ABI_LIBNAME "${LIBCXX_CXX_ABI}")
> > > > > > > > +endif ()
> > > > > > > > +
> > > > > > > > +# Configure based on the selected ABI library.
> > > > > > > > if ("${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libstdc++" OR
> > > > > > > > "${LIBCXX_CXX_ABI_LIBNAME}" STREQUAL "libsupc++")
> > > > > > > > set(_LIBSUPCXX_INCLUDE_FILES
> > > > > > > > 
> > > > > > > > Added: libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake?rev=243574&view=auto
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake (added)
> > > > > > > > +++ libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake Wed Jul 29
> > > > > > > > 16:07:28
> > > > > > > > 2015
> > > > > > > > @@ -0,0 +1,147 @@
> > > > > > > > +# HandleLibcxxFlags - A set of macros used to setup the flags
> used
> > > > > > > > to
> > > > > > > > compile
> > > > > > > > +# and link libc++. These macros add flags to the following CMake
> > > > > > > > variables.
> > > > > > > > +# - LIBCXX_COMPILE_FLAGS: flags used to compile libc++
> > > > > > > > +# - LIBCXX_LINK_FLAGS: flags used to link libc++
> > > > > > > > +# - LIBCXX_LIBRARIES: libraries to link libc++ to.
> > > > > > > > +
> > > > > > > > +include(CheckCXXCompilerFlag)
> > > > > > > > +
> > > > > > > > +unset(add_flag_if_supported)
> > > > > > > > +
> > > > > > > > +# Mangle the name of a compiler flag into a valid CMake
> identifier.
> > > > > > > > +# Ex: --std=c++11 -> STD_EQ_CXX11
> > > > > > > > +macro(mangle_name str output)
> > > > > > > > +  string(STRIP "${str}" strippedStr)
> > > > > > > > +  string(REGEX REPLACE "^/" "" strippedStr "${strippedStr}")
> > > > > > > > +  string(REGEX REPLACE "^-+" "" strippedStr "${strippedStr}")
> > > > > > > > +  string(REGEX REPLACE "-+$" "" strippedStr "${strippedStr}")
> > > > > > > > +  string(REPLACE "-" "_" strippedStr "${strippedStr}")
> > > > > > > > +  string(REPLACE "=" "_EQ_" strippedStr "${strippedStr}")
> > > > > > > > +  string(REPLACE "+" "X" strippedStr "${strippedStr}")
> > > > > > > > +  string(TOUPPER "${strippedStr}" ${output})
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Remove a list of flags from all CMake variables that affect
> > > > > > > > compile
> > > > > > > > flags.
> > > > > > > > +# This can be used to remove unwanted flags specified on the
> > > > > > > > command line
> > > > > > > > +# or added in other parts of LLVM's cmake configuration.
> > > > > > > > +macro(remove_flags)
> > > > > > > > +  foreach(var ${ARGN})
> > > > > > > > +    string(REPLACE "${var}" "" CMAKE_CXX_FLAGS
> > > > > > > > "${CMAKE_CXX_FLAGS}")
> > > > > > > > +    string(REPLACE "${var}" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
> > > > > > > > +    string(REPLACE "${var}" "" CMAKE_EXE_LINKER_FLAGS
> > > > > > > > "${CMAKE_EXE_LINKER_FLAGS}")
> > > > > > > > +    string(REPLACE "${var}" "" CMAKE_SHARED_LINKER_FLAGS
> > > > > > > > "${CMAKE_SHARED_LINKER_FLAGS}")
> > > > > > > > +    string(REPLACE "${var}" "" CMAKE_SHARED_MODULE_FLAGS
> > > > > > > > "${CMAKE_SHARED_MODULE_FLAGS}")
> > > > > > > > +    remove_definitions(${var})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro(remove_flags)
> > > > > > > > +
> > > > > > > > +# Add a macro definition if condition is true.
> > > > > > > > +macro(define_if condition def)
> > > > > > > > +  if (${condition})
> > > > > > > > +    add_definitions(${def})
> > > > > > > > +  endif()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Add a macro definition if condition is not true.
> > > > > > > > +macro(define_if_not condition def)
> > > > > > > > +  if (NOT ${condition})
> > > > > > > > +    add_definitions(${def})
> > > > > > > > +  endif()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Add a specified list of flags to both 'LIBCXX_COMPILE_FLAGS'
> and
> > > > > > > > +# 'LIBCXX_LINK_FLAGS'.
> > > > > > > > +macro(add_flags)
> > > > > > > > +  foreach(value ${ARGN})
> > > > > > > > +    list(APPEND LIBCXX_COMPILE_FLAGS ${value})
> > > > > > > > +    list(APPEND LIBCXX_LINK_FLAGS ${value})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# If the specified 'condition' is true then add a list of flags
> to
> > > > > > > > both
> > > > > > > > +# 'LIBCXX_COMPILE_FLAGS' and 'LIBCXX_LINK_FLAGS'.
> > > > > > > > +macro(add_flags_if condition)
> > > > > > > > +  if (${condition})
> > > > > > > > +    add_flags(${ARGN})
> > > > > > > > +  endif()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Add each flag in the list to LIBCXX_COMPILE_FLAGS and
> > > > > > > > LIBCXX_LINK_FLAGS
> > > > > > > > +# if that flag is supported by the current compiler.
> > > > > > > > +macro(add_flags_if_supported)
> > > > > > > > +  foreach(flag ${ARGN})
> > > > > > > > +      mangle_name("${flag}" flagname)
> > > > > > > > +      check_cxx_compiler_flag("${flag}"
> > > > > > > > "LIBCXX_SUPPORTS_${flagname}_FLAG")
> > > > > > > > +      add_flags_if(LIBCXX_SUPPORTS_${flagname}_FLAG ${flag})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Add a list of flags to 'LIBCXX_COMPILE_FLAGS'.
> > > > > > > > +macro(add_compile_flags)
> > > > > > > > +  foreach(f ${ARGN})
> > > > > > > > +    list(APPEND LIBCXX_COMPILE_FLAGS ${f})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# If 'condition' is true then add the specified list of flags to
> > > > > > > > +# 'LIBCXX_COMPILE_FLAGS'
> > > > > > > > +macro(add_compile_flags_if condition)
> > > > > > > > +  if (${condition})
> > > > > > > > +    add_compile_flags(${ARGN})
> > > > > > > > +  endif()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# For each specified flag, add that flag to
> 'LIBCXX_COMPILE_FLAGS'
> > > > > > > > if the
> > > > > > > > +# flag is supported by the C++ compiler.
> > > > > > > > +macro(add_compile_flags_if_supported)
> > > > > > > > +  foreach(flag ${ARGN})
> > > > > > > > +      mangle_name("${flag}" flagname)
> > > > > > > > +      check_cxx_compiler_flag("-Werror ${flag}"
> > > > > > > > "LIBCXX_SUPPORTS_${flagname}_FLAG")
> > > > > > > > +      add_compile_flags_if(LIBCXX_SUPPORTS_${flagname}_FLAG
> > > > > > > > ${flag})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Add a list of flags to 'LIBCXX_LINK_FLAGS'.
> > > > > > > > +macro(add_link_flags)
> > > > > > > > +  foreach(f ${ARGN})
> > > > > > > > +    list(APPEND LIBCXX_LINK_FLAGS ${f})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# If 'condition' is true then add the specified list of flags to
> > > > > > > > +# 'LIBCXX_LINK_FLAGS'
> > > > > > > > +macro(add_link_flags_if condition)
> > > > > > > > +  if (${condition})
> > > > > > > > +    add_link_flags(${ARGN})
> > > > > > > > +  endif()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# For each specified flag, add that flag to 'LIBCXX_LINK_FLAGS'
> if
> > > > > > > > the
> > > > > > > > +# flag is supported by the C++ compiler.
> > > > > > > > +macro(add_link_flags_if_supported)
> > > > > > > > +  foreach(flag ${ARGN})
> > > > > > > > +    mangle_name("${flag}" flagname)
> > > > > > > > +    check_cxx_compiler_flag("${flag}"
> > > > > > > > "LIBCXX_SUPPORTS_${flagname}_FLAG")
> > > > > > > > +    add_link_flags_if(LIBCXX_SUPPORTS_${flagname}_FLAG ${flag})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Add a list of libraries or link flags to 'LIBCXX_LIBRARIES'.
> > > > > > > > +macro(add_library_flags)
> > > > > > > > +  foreach(lib ${ARGN})
> > > > > > > > +    list(APPEND LIBCXX_LIBRARIES ${lib})
> > > > > > > > +  endforeach()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# if 'condition' is true then add the specified list of libraries
> > > > > > > > and
> > > > > > > > flags
> > > > > > > > +# to 'LIBCXX_LIBRARIES'.
> > > > > > > > +macro(add_library_flags_if condition)
> > > > > > > > +  if(${condition})
> > > > > > > > +    add_library_flags(${ARGN})
> > > > > > > > +  endif()
> > > > > > > > +endmacro()
> > > > > > > > +
> > > > > > > > +# Turn a comma separated CMake list into a space separated
> string.
> > > > > > > > +macro(split_list listname)
> > > > > > > > +  string(REPLACE ";" " " ${listname} "${${listname}}")
> > > > > > > > +endmacro()
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/cmake/config-ix.cmake
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/config-ix.cmake?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/cmake/config-ix.cmake (original)
> > > > > > > > +++ libcxx/trunk/cmake/config-ix.cmake Wed Jul 29 16:07:28 2015
> > > > > > > > @@ -2,23 +2,7 @@ include(CheckLibraryExists)
> > > > > > > > include(CheckCXXCompilerFlag)
> > > > > > > > 
> > > > > > > > # Check compiler flags
> > > > > > > > -check_cxx_compiler_flag(-std=c++11
> > > > > > > > LIBCXX_HAS_STDCXX11_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-std=c++1y
> > > > > > > > LIBCXX_HAS_STDCXX1Y_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-fPIC
> > > > > > > > LIBCXX_HAS_FPIC_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-fno-omit-frame-pointer
> > > > > > > > LIBCXX_HAS_FNO_OMIT_FRAME_POINTER_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-nodefaultlibs
> > > > > > > > LIBCXX_HAS_NODEFAULTLIBS_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-nostdinc++
> > > > > > > > LIBCXX_HAS_NOSTDINCXX_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-Wall
> > > > > > > > LIBCXX_HAS_WALL_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-W
> LIBCXX_HAS_W_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-Wno-unused-parameter
> > > > > > > > LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-Wwrite-strings
> > > > > > > > LIBCXX_HAS_WWRITE_STRINGS_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-Wno-long-long
> > > > > > > > LIBCXX_HAS_WNO_LONG_LONG_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-pedantic
> > > > > > > > LIBCXX_HAS_PEDANTIC_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-Werror
> > > > > > > > LIBCXX_HAS_WERROR_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-Wno-error
> > > > > > > > LIBCXX_HAS_WNO_ERROR_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-fno-exceptions
> > > > > > > > LIBCXX_HAS_FNO_EXCEPTIONS_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-fno-rtti
> > > > > > > > LIBCXX_HAS_FNO_RTTI_FLAG)
> > > > > > > > -check_cxx_compiler_flag(-gline-tables-only
> > > > > > > > LIBCXX_HAS_GLINE_TABLES_ONLY_FLAG)
> > > > > > > > +
> > > > > > > > check_cxx_compiler_flag(/WX
> LIBCXX_HAS_WX_FLAG)
> > > > > > > > check_cxx_compiler_flag(/WX-
> > > > > > > > LIBCXX_HAS_NO_WX_FLAG)
> > > > > > > > check_cxx_compiler_flag(/EHsc
> > > > > > > > LIBCXX_HAS_EHSC_FLAG)
> > > > > > > > @@ -26,6 +10,7 @@ check_cxx_compiler_flag(/EHs-
> > > > > > > > check_cxx_compiler_flag(/EHa-
> > > > > > > > LIBCXX_HAS_NO_EHA_FLAG)
> > > > > > > > check_cxx_compiler_flag(/GR-
> > > > > > > > LIBCXX_HAS_NO_GR_FLAG)
> > > > > > > > 
> > > > > > > > +
> > > > > > > > # Check libraries
> > > > > > > > check_library_exists(pthread pthread_create ""
> > > > > > > > LIBCXX_HAS_PTHREAD_LIB)
> > > > > > > > check_library_exists(c printf "" LIBCXX_HAS_C_LIB)
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/lib/CMakeLists.txt
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/lib/CMakeLists.txt (original)
> > > > > > > > +++ libcxx/trunk/lib/CMakeLists.txt Wed Jul 29 16:07:28 2015
> > > > > > > > @@ -25,48 +25,23 @@ if (MSVC_IDE OR XCODE)
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > if (LIBCXX_ENABLE_SHARED)
> > > > > > > > -  add_library(cxx SHARED
> > > > > > > > -    ${LIBCXX_SOURCES}
> > > > > > > > -    ${LIBCXX_HEADERS}
> > > > > > > > -    )
> > > > > > > > +  add_library(cxx SHARED ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})
> > > > > > > > else()
> > > > > > > > -  add_library(cxx STATIC
> > > > > > > > -    ${LIBCXX_SOURCES}
> > > > > > > > -    ${LIBCXX_HEADERS}
> > > > > > > > -    )
> > > > > > > > -endif()
> > > > > > > > -
> > > > > > > > -#if LIBCXX_CXX_ABI_LIBRARY_PATH is defined we want to add it to
> the
> > > > > > > > search path.
> > > > > > > > -if (DEFINED LIBCXX_CXX_ABI_LIBRARY_PATH)
> > > > > > > > -  target_link_libraries(cxx "-L${LIBCXX_CXX_ABI_LIBRARY_PATH}")
> > > > > > > > +  add_library(cxx STATIC ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > if (DEFINED LIBCXX_CXX_ABI_DEPS)
> > > > > > > > add_dependencies(cxx LIBCXX_CXX_ABI_DEPS)
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -set(libraries "")
> > > > > > > > -if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
> > > > > > > > -    # TODO(ericwf): Remove these GNU specific linker flags and
> let
> > > > > > > > CMake
> > > > > > > > do the
> > > > > > > > -    # configuration. This will be more portable.
> > > > > > > > -    list(APPEND libraries "-Wl,--whole-archive" "-Wl,-Bstatic")
> > > > > > > > -    list(APPEND libraries "${LIBCXX_CXX_ABI_LIBRARY}")
> > > > > > > > -    list(APPEND libraries "-Wl,-Bdynamic"
> "-Wl,--no-whole-archive")
> > > > > > > > -else()
> > > > > > > > -    list(APPEND libraries "${LIBCXX_CXX_ABI_LIBRARY}")
> > > > > > > > -endif()
> > > > > > > > +#if LIBCXX_CXX_ABI_LIBRARY_PATH is defined we want to add it to
> the
> > > > > > > > search path.
> > > > > > > > +add_link_flags_if(LIBCXX_CXX_ABI_LIBRARY_PATH
> > > > > > > > "-L${LIBCXX_CXX_ABI_LIBRARY_PATH}")
> > > > > > > > 
> > > > > > > > -# Generate library list.
> > > > > > > > -append_if(libraries LIBCXX_HAS_PTHREAD_LIB pthread)
> > > > > > > > -append_if(libraries LIBCXX_HAS_C_LIB c)
> > > > > > > > -append_if(libraries LIBCXX_HAS_M_LIB m)
> > > > > > > > -append_if(libraries LIBCXX_HAS_RT_LIB rt)
> > > > > > > > -append_if(libraries LIBCXX_HAS_GCC_S_LIB gcc_s)
> > > > > > > > +add_library_flags_if(LIBCXX_COVERAGE_LIBRARY
> > > > > > > > "${LIBCXX_COVERAGE_LIBRARY}")
> > > > > > > > 
> > > > > > > > -if (LIBCXX_COVERAGE_LIBRARY)
> > > > > > > > -  target_link_libraries(cxx ${LIBCXX_COVERAGE_LIBRARY})
> > > > > > > > -endif()
> > > > > > > > -target_link_libraries(cxx ${libraries})
> > > > > > > > +add_library_flags_if(LIBCXX_ENABLE_STATIC_ABI_LIBRARY
> > > > > > > > "-Wl,--whole-archive" "-Wl,-Bstatic")
> > > > > > > > +add_library_flags("${LIBCXX_CXX_ABI_LIBRARY}")
> > > > > > > > +add_library_flags_if(LIBCXX_ENABLE_STATIC_ABI_LIBRARY
> > > > > > > > "-Wl,-Bdynamic"
> > > > > > > > "-Wl,--no-whole-archive")
> > > > > > > > 
> > > > > > > > if (APPLE AND LLVM_USE_SANITIZER)
> > > > > > > > if ("${LLVM_USE_SANITIZER}" STREQUAL "Address")
> > > > > > > > @@ -89,15 +64,21 @@ if (APPLE AND LLVM_USE_SANITIZER)
> > > > > > > > set(LIBCXX_SANITIZER_LIBRARY "${LIBDIR}/${LIBFILE}")
> > > > > > > > set(LIBCXX_SANITIZER_LIBRARY "${LIBCXX_SANITIZER_LIBRARY}"
> > > > > > > > PARENT_SCOPE)
> > > > > > > > message(STATUS "Manually linking compiler-rt library:
> > > > > > > > ${LIBCXX_SANITIZER_LIBRARY}")
> > > > > > > > -    target_link_libraries(cxx "${LIBCXX_SANITIZER_LIBRARY}")
> > > > > > > > -    target_link_libraries(cxx "-Wl,-rpath,${LIBDIR}")
> > > > > > > > +    add_library_flags("${LIBCXX_SANITIZER_LIBRARY}")
> > > > > > > > +    add_link_flags("-Wl,-rpath,${LIBDIR}")
> > > > > > > > endif()
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > +# Generate library list.
> > > > > > > > +add_library_flags_if(LIBCXX_HAS_PTHREAD_LIB pthread)
> > > > > > > > +add_library_flags_if(LIBCXX_HAS_C_LIB c)
> > > > > > > > +add_library_flags_if(LIBCXX_HAS_M_LIB m)
> > > > > > > > +add_library_flags_if(LIBCXX_HAS_RT_LIB rt)
> > > > > > > > +add_library_flags_if(LIBCXX_HAS_GCC_S_LIB gcc_s)
> > > > > > > > 
> > > > > > > > # Setup flags.
> > > > > > > > -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG -fPIC)
> > > > > > > > -append_if(LIBCXX_LINK_FLAGS LIBCXX_HAS_NODEFAULTLIBS_FLAG
> > > > > > > > -nodefaultlibs)
> > > > > > > > +add_flags_if_supported(-fPIC)
> > > > > > > > +add_link_flags_if_supported(-nodefaultlibs)
> > > > > > > > 
> > > > > > > > if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL "libcxxabi" OR
> > > > > > > > LIBCXX_CXX_ABI_LIBNAME STREQUAL "none"))
> > > > > > > > @@ -106,8 +87,8 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME S
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL "10.6" )
> > > > > > > > -    list(APPEND LIBCXX_COMPILE_FLAGS "-U__STRICT_ANSI__")
> > > > > > > > -    list(APPEND LIBCXX_LINK_FLAGS
> > > > > > > > +    add_definitions(-D__STRICT_ANSI__)
> > > > > > > > +    add_link_flags(
> > > > > > > > "-compatibility_version 1"
> > > > > > > > "-current_version 1"
> > > > > > > > "-install_name /usr/lib/libc++.1.dylib"
> > > > > > > > @@ -129,7 +110,7 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME S
> > > > > > > > set (OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib
> > > > > > > > 
> > > > > > > > 
> -Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp")
> 
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -    list(APPEND LIBCXX_LINK_FLAGS
> > > > > > > > +    add_link_flags(
> > > > > > > > "-compatibility_version 1"
> > > > > > > > "-install_name /usr/lib/libc++.1.dylib"
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp"
> > > > > > > > @@ -139,8 +120,9 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME S
> > > > > > > > endif()
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > -string(REPLACE ";" " " LIBCXX_COMPILE_FLAGS
> > > > > > > > "${LIBCXX_COMPILE_FLAGS}")
> > > > > > > > -string(REPLACE ";" " " LIBCXX_LINK_FLAGS "${LIBCXX_LINK_FLAGS}")
> > > > > > > > +target_link_libraries(cxx ${LIBCXX_LIBRARIES})
> > > > > > > > +split_list(LIBCXX_COMPILE_FLAGS)
> > > > > > > > +split_list(LIBCXX_LINK_FLAGS)
> > > > > > > > 
> > > > > > > > set_target_properties(cxx
> > > > > > > > PROPERTIES
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/test/CMakeLists.txt
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/CMakeLists.txt?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/test/CMakeLists.txt (original)
> > > > > > > > +++ libcxx/trunk/test/CMakeLists.txt Wed Jul 29 16:07:28 2015
> > > > > > > > @@ -6,84 +6,47 @@ macro(pythonize_bool var)
> > > > > > > > endif()
> > > > > > > > endmacro()
> > > > > > > > 
> > > > > > > > -set(LIT_EXECUTABLE "" CACHE FILEPATH "Path to LLVM's llvm-lit.")
> > > > > > > > +set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING
> > > > > > > > +    "Configuration variant to use for LIT.")
> > > > > > > > 
> > > > > > > > -if(LIBCXX_BUILT_STANDALONE)
> > > > > > > > -  # Make sure we can use the console pool for recent cmake and
> > > > > > > > ninja >
> > > > > > > > 1.5
> > > > > > > > -  if(CMAKE_VERSION VERSION_LESS 3.1.20141117)
> > > > > > > > -    set(cmake_3_2_USES_TERMINAL)
> > > > > > > > -  else()
> > > > > > > > -    set(cmake_3_2_USES_TERMINAL USES_TERMINAL)
> > > > > > > > -  endif()
> > > > > > > > -else()
> > > > > > > > -  include(FindPythonInterp)
> > > > > > > > -  if(PYTHONINTERP_FOUND)
> > > > > > > > -    set(LIT_EXECUTABLE
> > > > > > > > -        ${PYTHON_EXECUTABLE}
> ${CMAKE_SOURCE_DIR}/utils/lit/lit.py)
> > > > > > > > -  else()
> > > > > > > > -    message(WARNING "Could not find Python, cannot set
> > > > > > > > LIT_EXECUTABLE.")
> > > > > > > > -  endif()
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_RTTI)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_SHARED)
> > > > > > > > +pythonize_bool(LIBCXX_BUILD_32_BITS)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_STDIN)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_STDOUT)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_THREADS)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS)
> > > > > > > > +pythonize_bool(LIBCXX_ENABLE_MONOTONIC_CLOCK)
> > > > > > > > +pythonize_bool(LIBCXX_GENERATE_COVERAGE)
> > > > > > > > +pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)
> > > > > > > > +
> > > > > > > > +# The tests shouldn't link to any ABI library when it has been
> > > > > > > > linked
> > > > > > > > into
> > > > > > > > +# libc++ statically.
> > > > > > > > +if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
> > > > > > > > +  set(LIBCXX_CXX_ABI_LIBNAME "none")
> > > > > > > > endif()
> > > > > > > > -
> > > > > > > > -if (LIT_EXECUTABLE)
> > > > > > > > -  set(LIT_ARGS_DEFAULT "-sv --show-unsupported --show-xfail")
> > > > > > > > -  if (MSVC OR XCODE)
> > > > > > > > -    set(LIT_ARGS_DEFAULT "${LIT_ARGS_DEFAULT} --no-progress-bar")
> > > > > > > > -  endif()
> > > > > > > > -  set(LLVM_LIT_ARGS "${LIT_ARGS_DEFAULT}"
> > > > > > > > -      CACHE STRING "Default options for lit")
> > > > > > > > -  set(LIT_ARGS "${LLVM_LIT_ARGS}")
> > > > > > > > -  separate_arguments(LIT_ARGS)
> > > > > > > > -
> > > > > > > > -  set(LIBCXX_LIT_VARIANT "libcxx" CACHE STRING
> > > > > > > > -      "Configuration variant to use for LIT.")
> > > > > > > > -
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_RTTI)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_SHARED)
> > > > > > > > -  pythonize_bool(LIBCXX_BUILD_32_BITS)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_STDIN)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_STDOUT)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_THREADS)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS)
> > > > > > > > -  pythonize_bool(LIBCXX_ENABLE_MONOTONIC_CLOCK)
> > > > > > > > -  pythonize_bool(LIBCXX_GENERATE_COVERAGE)
> > > > > > > > -  pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)
> > > > > > > > -
> > > > > > > > -  # The tests shouldn't link to any ABI library when it has been
> > > > > > > > linked
> > > > > > > > into
> > > > > > > > -  # libc++ statically.
> > > > > > > > -  if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)
> > > > > > > > -    set(LIBCXX_CXX_ABI_LIBNAME "none")
> > > > > > > > -  endif()
> > > > > > > > -  set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE
> > > > > > > > STRING
> > > > > > > > -      "TargetInfo to use when setting up test environment.")
> > > > > > > > -  set(LIBCXX_EXECUTOR "None" CACHE STRING
> > > > > > > > -      "Executor to use when running tests.")
> > > > > > > > -
> > > > > > > > -  set(AUTO_GEN_COMMENT "## Autogenerated by libcxx
> > > > > > > > configuration.\n# Do
> > > > > > > > not edit!")
> > > > > > > > -
> > > > > > > > -  configure_file(
> > > > > > > > -    ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
> > > > > > 
> > > > > > > > 
> > > > > > > > -    ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
> > > > > > > > -    @ONLY)
> > > > > > > > -
> > > > > > > > -  add_custom_target(check-libcxx
> > > > > > > > -    COMMAND ${LIT_EXECUTABLE}
> > > > > > > > -            ${LIT_ARGS}
> > > > > > > > -            ${CMAKE_CURRENT_BINARY_DIR}
> > > > > > > > -    DEPENDS cxx
> > > > > > > > -    COMMENT "Running libcxx tests"
> > > > > > > > -    ${cmake_3_2_USES_TERMINAL})
> > > > > > > > -
> > > > > > > > -  if (LIBCXX_GENERATE_COVERAGE)
> > > > > > > > -    include(CodeCoverage)
> > > > > > > > -    set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage")
> > > > > > > > -    set(capture_dirs
> > > > > > > > 
> "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/;${CMAKE_CURRENT_BINARY_DIR}")
> > > > > > > > -    set(extract_dirs
> > > > > > > > "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src")
> > > > > > > > -    setup_lcov_test_target_coverage("cxx" "${output_dir}"
> > > > > > > > "${capture_dirs}" "${extract_dirs}")
> > > > > > > > -  endif()
> > > > > > > > -else()
> > > > > > > > -  message(WARNING
> > > > > > > > -          "LIT_EXECUTABLE not set, no check-libcxx target will be
> > > > > > > > available!")
> > > > > > > > +set(LIBCXX_TARGET_INFO "libcxx.test.target_info.LocalTI" CACHE
> > > > > > > > STRING
> > > > > > > > +    "TargetInfo to use when setting up test environment.")
> > > > > > > > +set(LIBCXX_EXECUTOR "None" CACHE STRING
> > > > > > > > +    "Executor to use when running tests.")
> > > > > > > > +
> > > > > > > > +set(AUTO_GEN_COMMENT "## Autogenerated by libcxx
> configuration.\n#
> > > > > > > > Do not
> > > > > > > > edit!")
> > > > > > > > +
> > > > > > > > +configure_file(
> > > > > > > > +  ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
> > > > > > > > +  ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
> > > > > > > > +  @ONLY)
> > > > > > > > +
> > > > > > > > +add_lit_testsuite(check-libcxx "Running libcxx tests"
> > > > > > > > +  ${CMAKE_CURRENT_BINARY_DIR}
> > > > > > > > +  DEPENDS cxx)
> > > > > > > > +
> > > > > > > > +if (LIBCXX_GENERATE_COVERAGE)
> > > > > > > > +  include(CodeCoverage)
> > > > > > > > +  set(output_dir "${CMAKE_CURRENT_BINARY_DIR}/coverage")
> > > > > > > > +  set(capture_dirs
> > > > > > > > 
> "${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/;${CMAKE_CURRENT_BINARY_DIR}")
> > > > > > > > +  set(extract_dirs
> > > > > > > > "${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src")
> > > > > > > > +  setup_lcov_test_target_coverage("cxx" "${output_dir}"
> > > > > > > > "${capture_dirs}"
> > > > > > > > "${extract_dirs}")
> > > > > > > > endif()
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/test/lit.site.cfg.in
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/lit.site.cfg.in?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/test/lit.site.cfg.in (original)
> > > > > > > > +++ libcxx/trunk/test/lit.site.cfg.in Wed Jul 29 16:07:28 2015
> > > > > > > > @@ -1,6 +1,5 @@
> > > > > > > > @AUTO_GEN_COMMENT@
> > > > > > > > config.cxx_under_test           = "@LIBCXX_COMPILER@"
> > > > > > > > -config.std                      = "@LIBCXX_STD_VERSION@"
> > > > > > > > config.libcxx_src_root          = "@LIBCXX_SOURCE_DIR@"
> > > > > > > > config.libcxx_obj_root          = "@LIBCXX_BINARY_DIR@"
> > > > > > > > config.cxx_library_root         = "@LIBCXX_LIBRARY_DIR@"
> > > > > > > > 
> > > > > > > > Modified: libcxx/trunk/www/index.html
> > > > > > > > URL:
> > > > > > > > 
> > > > > > > > 
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/index.html?rev=243574&r1=243573&r2=243574&view=diff
> 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> ==============================================================================
> > > > > > > > --- libcxx/trunk/www/index.html (original)
> > > > > > > > +++ libcxx/trunk/www/index.html Wed Jul 29 16:07:28 2015
> > > > > > > > @@ -184,26 +184,30 @@
> > > > > > > > 
> > > > > > > > <p>In-tree build:</p>
> > > > > > > > <ul>
> > > > > > > > +    <li><code>cd where-you-want-to-live</code></li>
> > > > > > > > <li>Check out libcxx and <a
> > > > > > > > href="http://libcxxabi.llvm.org/">libcxxabi</a>
> > > > > > > > into llvm/projects</li>
> > > > > > > > -    <li><code>cd llvm</code></li>
> > > > > > > > +    <li><code>cd where-you-want-to-build</code></li>
> > > > > > > > <li><code>mkdir build &amp;&amp; cd build</code></li>
> > > > > > > > -    <li><code>cmake .. # Linux may require
> -DCMAKE_C_COMPILER=clang
> > > > > > > > +    <li><code>cmake path/to/llvm # Linux may require
> > > > > > > > -DCMAKE_C_COMPILER=clang
> > > > > > > > -DCMAKE_CXX_COMPILER=clang++</code></li>
> > > > > > > > <li><code>make cxx</code></li>
> > > > > > > > </ul>
> > > > > > > > 
> > > > > > > > -  <p>Out-of-tree build:</p>
> > > > > > > > +  <p>Out-of-tree buildc:</p>
> > > > > > > > <ul>
> > > > > > > > -    <li>Check out libcxx</li>
> > > > > > > > +    <li><code>cd where-you-want-to-live</code></li>
> > > > > > > > +    <li>Check out libcxx and llvm</li>
> > > > > > > > <li>If not on a Mac, also check out
> > > > > > > > <a href="http://libcxxabi.llvm.org/">libcxxabi</a></li>
> > > > > > 
> > > > > > > > -    <li><code>cd libcxx</code></li>
> > > > > > > > +    <li><code>cd where-you-want-to-build</code></li>
> > > > > > > > <li><code>mkdir build &amp;&amp; cd build</code></li>
> > > > > > > > -    <li><code>cmake -DLIBCXX_CXX_ABI=libcxxabi
> > > > > > > > +    <li><code>cmake -DLLVM_PATH=path/to/llvm
> > > > > > > > +        -DLIBCXX_CXX_ABI=libcxxabi
> > > > > > > > -DLIBCXX_CXX_ABI_INCLUDE_PATHS=path/to/libcxxabi/include
> > > > > > > > -        -DLIT_EXECUTABLE=path/to/llvm/utils/lit/lit.py .. # Linux
> > > > > > > > may
> > > > > > > > require
> > > > > > > > -        -DCMAKE_C_COMPILER=clang
> > > > > > > > -DCMAKE_CXX_COMPILER=clang++</code></li>
> > > > > > > > +        -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
> > > > > > > > +        path/to/libcxx
> > > > > > > > +    </code></li>
> > > > > > > > <li><code>make</code></li>
> > > > > > > > </ul>
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > _______________________________________________
> > > > > > > > cfe-commits mailing list
> > > > > > > > cfe-commits@cs.uiuc.edu
> > > > > > > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> > > > > > > 
> > > > > > > 
> > > > > > > 
> > > > > > > _______________________________________________
> > > > > > > cfe-commits mailing list
> > > > > > > cfe-commits@cs.uiuc.edu
> > > > > > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> > > > > > > 
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > > 
> > > > --
> > > > Alexey Samsonov, Mountain View, CA
> > > 
> > > 
> > > _______________________________________________
> > > cfe-commits mailing list
> > > cfe-commits@cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> > > 
> > 
> > 
> > 
> > --
> > Alexey Samsonov
> > vonosmas@gmail.com
> 


[Attachment #5 (text/html)]

<div dir="ltr">I still see the failures with r243591</div><div \
class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 29, 2015 at 4:24 PM, \
Eric Fiselier <span dir="ltr">&lt;<a href="mailto:eric@efcs.ca" \
target="_blank">eric@efcs.ca</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" \
style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I just pushed a \
possible fix to libc++. Let me know ASAP if that<br> doesn&#39;t fix the issue. \
I&#39;ll revert if r243591 doesn&#39;t work.<br> <br>
/Eric<br>
<span class=""><br>
On Wed, Jul 29, 2015 at 6:44 PM, Alexey Samsonov &lt;<a \
href="mailto:vonosmas@gmail.com">vonosmas@gmail.com</a>&gt; wrote:<br> &gt; Eric,<br>
&gt;<br>
&gt; Looks like it breaks the build of compiler-rt on Linux, and we can&#39;t fix \
it<br> &gt; instantly, sorry =/<br>
&gt; Could you please revert it again?<br>
&gt;<br>
&gt; The problem is that when I pass correct -DLLVM_CONFIG= value when<br>
&gt; configuring standalone libcxx with<br>
&gt; just-built Clang, libcxx invokes llvm/cmake/modules/HandleLLVMOptions.cmake,<br>
&gt; and it fails with an error<br>
&gt; &quot;Host Clang version must be at least 3.1!&quot;,<br>
&gt; because CMake is unable to properly determine the compiler version of<br>
&gt; just-built Clang as 3.8.0 for<br>
&gt; some reason(?!) I&#39;m now looking into this issue, and will provide a patch \
to<br> &gt; compiler-rt that should accompany<br>
&gt; re-land of libcxx CMake changes.<br>
&gt;<br>
</span><span class="">&gt; On Wed, Jul 29, 2015 at 3:05 PM, Eric Fiselier &lt;<a \
href="mailto:eric@efcs.ca">eric@efcs.ca</a>&gt; wrote:<br> &gt;&gt;<br>
&gt;&gt; Libc++ standalone builds now require that libc++ can find the LLVM \
source<br> &gt;&gt; directory. If you specify the LLVM source root using<br>
&gt;&gt; &quot;-DLLVM_PATH=path/to/llvm&quot; then the command should work?<br>
&gt;&gt;<br>
&gt;&gt; Does this new requirement work for you?<br>
&gt;&gt;<br>
</span><span class="">&gt;&gt; On Jul 29, 2015 6:03 PM, &quot;Alexey Samsonov&quot; \
&lt;<a href="mailto:samsonov@google.com">samsonov@google.com</a>&gt; wrote:<br> \
&gt;&gt;&gt;<br> &gt;&gt;&gt; I&#39;m looking into the fix now, it probably should go \
to compiler-rt<br> &gt;&gt;&gt; anyway, so I don&#39;t think we should revert libcxx \
part now.<br> &gt;&gt;&gt;<br>
</span>&gt;&gt;&gt; On Wed, Jul 29, 2015 at 2:59 PM, Kostya Serebryany &lt;<a \
href="mailto:kcc@google.com">kcc@google.com</a>&gt;<br> <span class="">&gt;&gt;&gt; \
wrote:<br> &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Eric,<br>
&gt;&gt;&gt;&gt; If there is no quick fix, will you be able to revert this, \
please?<br> &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Wed, Jul 29, 2015 at 2:56 PM, Evgenii Stepanov<br>
</span><span class="">&gt;&gt;&gt;&gt; &lt;<a \
href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>&gt; wrote:<br> \
&gt;&gt;&gt;&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; And the log says:<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; CMake Error at cmake/Modules/FindLLVM.cmake:41 (message):<br>
&gt;&gt;&gt;&gt;&gt;     llvm-config not found and LLVM_MAIN_SRC_DIR not defined.   \
Reconfigure<br> &gt;&gt;&gt;&gt;&gt; with<br>
&gt;&gt;&gt;&gt;&gt;     -DLLVM_CONFIG=path/to/llvm-config or<br>
&gt;&gt;&gt;&gt;&gt; -DLLVM_PATH=path/to/llvm-source-root.<br>
&gt;&gt;&gt;&gt;&gt; Call Stack (most recent call first):<br>
&gt;&gt;&gt;&gt;&gt;     CMakeLists.txt:37 (include)<br>
&gt;&gt;&gt;&gt;&gt;<br>
</span>&gt;&gt;&gt;&gt;&gt; On Wed, Jul 29, 2015 at 2:49 PM, Kostya Serebryany &lt;<a \
href="mailto:kcc@google.com">kcc@google.com</a>&gt;<br> <div><div \
class="h5">&gt;&gt;&gt;&gt;&gt; wrote:<br> &gt;&gt;&gt;&gt;&gt; &gt; I am seeing \
build failure when trying to run &quot;ninja check-msan&quot;:<br> \
&gt;&gt;&gt;&gt;&gt; &gt;<br> &gt;&gt;&gt;&gt;&gt; &gt; [39/58] Performing configure \
step for &#39;libcxx_msan-with-call&#39;<br> &gt;&gt;&gt;&gt;&gt; &gt; FAILED: cd<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/libcxx_msan-with-call/src/libcxx_msan-with-call-build<br>
 &gt;&gt;&gt;&gt;&gt; &gt; &amp;&amp; /usr/bin/cmake -P<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../libcx \
x_msan-with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure.cmake<br>
 &gt;&gt;&gt;&gt;&gt; &gt; &amp;&amp; /usr/bin/cmake -E touch<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../libcx \
x_msan-with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure<br> \
&gt;&gt;&gt;&gt;&gt; &gt; CMake Error at<br> &gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/libcxx_msan-wi \
th-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure.cmake:16<br> \
&gt;&gt;&gt;&gt;&gt; &gt; (message):<br> &gt;&gt;&gt;&gt;&gt; &gt;     Command \
failed: 1<br> &gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;      &#39;/usr/bin/cmake&#39;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
&#39;-DCMAKE_C_COMPILER=/usr/local/google/home/kcc/llvm-gcc-build/./bin/clang&#39;<br>
 &gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
&#39;-DCMAKE_CXX_COMPILER=/usr/local/google/home/kcc/llvm-gcc-build/./bin/clang&#39;<br>
 &gt;&gt;&gt;&gt;&gt; &gt; &#39;-DCMAKE_C_FLAGS= -fsanitize=memory \
-fsanitize-memory-track-origins<br> &gt;&gt;&gt;&gt;&gt; &gt; -Wno-pedantic \
-fsanitize=memory -fsanitize-memory-track-origins<br> &gt;&gt;&gt;&gt;&gt; &gt; \
-Wno-pedantic -mllvm -msan-instrumentation-with-call-threshold=0&#39;<br> \
&gt;&gt;&gt;&gt;&gt; &gt; &#39;-DCMAKE_CXX_FLAGS= -fsanitize=memory \
-fsanitize-memory-track-origins<br> &gt;&gt;&gt;&gt;&gt; &gt; -Wno-pedantic \
-fsanitize=memory -fsanitize-memory-track-origins<br> &gt;&gt;&gt;&gt;&gt; &gt; \
-Wno-pedantic -mllvm -msan-instrumentation-with-call-threshold=0&#39;<br> \
&gt;&gt;&gt;&gt;&gt; &gt; &#39;-DCMAKE_BUILD_TYPE=Release&#39;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;<br> &gt;&gt;&gt;&gt;&gt; &gt; \
&#39;-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../libcxx_msan-with-call&#39;<br>
 &gt;&gt;&gt;&gt;&gt; &gt; &#39;-GNinja&#39; \
&#39;/usr/local/google/home/kcc/llvm/projects/libcxx&#39;<br> &gt;&gt;&gt;&gt;&gt; \
&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;     See also<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; \
/usr/local/google/home/kcc/llvm-gcc-build/projects/compiler-rt/lib/msan/tests/../libcx \
x_msan-with-call/src/libcxx_msan-with-call-stamp/libcxx_msan-with-call-configure-*.log<br>
 &gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; Looks like this is the only change that might have caused \
this.<br> &gt;&gt;&gt;&gt;&gt; &gt;<br>
</div></div><span class="">&gt;&gt;&gt;&gt;&gt; &gt; On Wed, Jul 29, 2015 at 2:07 PM, \
Eric Fiselier &lt;<a href="mailto:eric@efcs.ca">eric@efcs.ca</a>&gt; wrote:<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; Author: ericwf<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Date: Wed Jul 29 16:07:28 2015<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; New Revision: 243574<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</span>&gt;&gt;&gt;&gt;&gt; &gt;&gt; URL: <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct-3Frev-3D243574-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8Syng \
J70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=gmNxZ1jLyji3tlzZsi0C7kks1iApTwDaLWInfLfrbPM&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=243574&amp;view=rev</a><br>
 <span class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt; Log:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Recommit r243503 &quot;[libcxx] Cleanup CMake \
configuration and integrate<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; with<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LLVM&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; This change was reverted in r243550 because it broke \
clang-format<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; builds<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; (see PR24306).<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; This patch recommits a fixed version of the \
original.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Added:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;        libcxx/trunk/cmake/Modules/FindLLVM.cmake<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;        \
libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
Modified:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;        libcxx/trunk/CMakeLists.txt<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;        \
libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;    \
libcxx/trunk/cmake/config-ix.cmake<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;        \
libcxx/trunk/lib/CMakeLists.txt<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;        \
libcxx/trunk/test/CMakeLists.txt<br> </span><span class="">&gt;&gt;&gt;&gt;&gt; \
&gt;&gt;        libcxx/trunk/test/<a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.site.cfg.in&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=LDfQXxz0_2T4eAZr6s8uuSpe8_AIjA18L6SSOxO38r8&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a><br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;        libcxx/trunk/www/index.html<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: libcxx/trunk/CMakeLists.txt<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; URL:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</span><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_CMakeLists.txt-3Frev-3D243574-26r1-3D243573-26r2-3D243574-26view-3Ddif \
f&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9 \
p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=hBZKgiAl4UU1j5jgEGu4CwvHsFMiWzqVzh1RCF3Dswk&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/CMakeLists.txt?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/CMakeLists.txt (original)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ libcxx/trunk/CMakeLists.txt Wed Jul 29 16:07:28 \
2015<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -3,13 +3,16 @@<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Setup Project<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -project(libcxx CXX \
C)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   cmake_minimum_required(VERSION 2.8)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if(POLICY CMP0042)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      cmake_policy(SET CMP0042 NEW) # Set \
MACOSX_RPATH=YES by default<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +if(POLICY CMP0022)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   cmake_policy(SET CMP0022 NEW) # Required when \
interacting with<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; LLVM and<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Clang<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +project(libcxx CXX C)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   set(PACKAGE_NAME libcxx)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   set(PACKAGE_VERSION trunk-svn)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -30,52 +33,90 @@ \
MACRO_ENSURE_OUT_OF_SOURCE_BUILD(<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;     build \
directory and run &#39;cmake /path/to/${PROJECT_NAME} [options]&#39;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; there.&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;     \
)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if(CMAKE_SOURCE_DIR STREQUAL \
CMAKE_CURRENT_SOURCE_DIR)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
set(LIBCXX_LIBDIR_SUFFIX &quot;&quot; CACHE STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-         &quot;Define suffix of library directory name (32/64)&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LIBCXX_BUILT_STANDALONE 1)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LIBCXX_LIBDIR_SUFFIX ${LLVM_LIBDIR_SUFFIX})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Find the required bits of LLVM<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +include(FindLLVM)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Setup CMake Options<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Define \
options.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXX_ENABLE_EXCEPTIONS &quot;Use \
exceptions.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXX_ENABLE_RTTI \
&quot;Use run time type information.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# \
Basic options<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
---------------------------------------------------------------<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_ENABLE_ASSERTIONS &quot;Enable \
assertions independent of<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; build<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; mode.&quot; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXX_ENABLE_PEDANTIC &quot;Compile with \
pedantic enabled.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-option(LIBCXX_ENABLE_WERROR &quot;Fail and stop if a warning is<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; triggered.&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
OFF)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXX_ENABLE_CXX1Y &quot;Enable \
-std=c++1y and use of c++1y<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; language<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; features if the compiler supports it.&quot; OFF)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_ENABLE_SHARED &quot;Build libc++ as a \
shared library.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(LIBCXX_LIBDIR_SUFFIX \
&quot;${LLVM_LIBDIR_SUFFIX}&quot; CACHE STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +    \
&quot;Define suffix of library directory name (32/64)&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +option(LIBCXX_INSTALL_HEADERS &quot;Install the libc++ headers.&quot; \
ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXX_INSTALL_SUPPORT_HEADERS \
&quot;Install libc++ support<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; headers.&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# ABI Library options<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
---------------------------------------------------------<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +set(LIBCXX_CXX_ABI &quot;${LIBCXX_CXX_ABI}&quot; CACHE STRING<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &quot;Specify C++ ABI library to use.&quot; \
FORCE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(CXXABIS none libcxxabi libcxxrt \
libstdc++ libsupc++)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +set_property(CACHE \
LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXX_ENABLE_STATIC_ABI_LIBRARY \
&quot;Statically link the ABI<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; library&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; OFF)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Build libc++abi with libunwind. We need this option \
to determine<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; whether to<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# link with libunwind or libgcc_s while running the \
test cases.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXXABI_USE_LLVM_UNWINDER \
&quot;Build and use the LLVM<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; unwinder.&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; OFF)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Target options<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
--------------------------------------------------------------<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXX_BUILD_32_BITS &quot;Build 32 bit \
libc++.&quot; OFF)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(LIBCXX_SYSROOT &quot;&quot; \
CACHE STRING &quot;Use alternate sysroot.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+set(LIBCXX_GCC_TOOLCHAIN &quot;&quot; CACHE STRING &quot;Use alternate GCC<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; toolchain.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Feature options<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-------------------------------------------------------------<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXX_ENABLE_EXCEPTIONS &quot;Use \
exceptions.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXX_ENABLE_RTTI \
&quot;Use run time type information.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
option(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE &quot;Build libc++ with<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; support for the global filesystem namespace.&quot; \
ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_ENABLE_STDIN &quot;Build libc++ \
with support for<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; stdin/std::cin.&quot; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_ENABLE_STDOUT &quot;Build libc++ with \
support for<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; stdout/std::cout.&quot; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_ENABLE_THREADS &quot;Build libc++ with \
support for<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; threads.&quot; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS \
&quot;Build libc++ with<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; support<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; for thread-unsafe C functions&quot; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXX_BUILD_32_BITS &quot;Build 32 bit \
libc++&quot; OFF)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
option(LIBCXX_ENABLE_MONOTONIC_CLOCK<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;      \
&quot;Build libc++ with support for a monotonic clock.<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;        This option may only be used when \
LIBCXX_ENABLE_THREADS=OFF.&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; ON)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXX_INSTALL_HEADERS &quot;Install the libc++ \
headers.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-option(LIBCXX_INSTALL_SUPPORT_HEADERS &quot;Install libc++ support<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; headers.&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Misc options<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
----------------------------------------------------------------<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +option(LIBCXX_ENABLE_PEDANTIC &quot;Compile with \
pedantic enabled.&quot; ON)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+option(LIBCXX_ENABLE_WERROR &quot;Fail and stop if a warning is<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; triggered.&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
OFF)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   option(LIBCXX_GENERATE_COVERAGE &quot;Enable \
generating code coverage.&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; OFF)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   set(LIBCXX_COVERAGE_LIBRARY &quot;&quot; CACHE \
STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -           &quot;The Profile-rt library \
used to build with code coverage&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-option(LIBCXX_ENABLE_STATIC_ABI_LIBRARY &quot;Statically link the ABI<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; library&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
OFF)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -set(LIBCXX_SYSROOT &quot;&quot; CACHE STRING \
&quot;Use alternate sysroot.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-set(LIBCXX_GCC_TOOLCHAIN &quot;&quot; CACHE STRING &quot;Use alternate GCC<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; toolchain.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -if \
(LIBCXX_BUILT_STANDALONE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
set(LLVM_USE_SANITIZER &quot;&quot; CACHE STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -  \
&quot;Define the sanitizer used to build the library and tests&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &quot;The Profile-rt library used to build with \
code coverage&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Check option configurations<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Ensure \
LIBCXX_ENABLE_MONOTONIC_CLOCK is set to ON only when<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +# LIBCXX_ENABLE_THREADS is on.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+if(LIBCXX_ENABLE_THREADS AND NOT LIBCXX_ENABLE_MONOTONIC_CLOCK)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   message(FATAL_ERROR \
&quot;LIBCXX_ENABLE_MONOTONIC_CLOCK can only be<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; set \
to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; OFF&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +                                 &quot; when \
LIBCXX_ENABLE_THREADS is also set to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
OFF.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Ensure LLVM_USE_SANITIZER is not specified when<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_GENERATE_COVERAGE<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# is ON.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (LLVM_USE_SANITIZER AND \
LIBCXX_GENERATE_COVERAGE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   message(FATAL_ERROR \
&quot;LLVM_USE_SANITIZER cannot be used with<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_GENERATE_COVERAGE&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Set LIBCXX_BUILD_32_BITS to (LIBCXX_BUILD_32_BITS \
OR<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; LLVM_BUILD_32_BITS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# and check that we can build with 32 bits if \
requested.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT \
WIN32)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if (LIBCXX_BUILD_32_BITS OR \
LLVM_BUILD_32_BITS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      if (NOT \
LLVM_BUILD_32_BITS) # Don&#39;t duplicate the output from<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; LLVM<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +         message(STATUS \
&quot;Building 32 bits executables and libraries.&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
set(LIBCXX_BUILD_32_BITS ON CACHE BOOL &quot;&quot; FORCE)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +   endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+elseif(LIBCXX_BUILD_32_BITS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
message(FATAL_ERROR &quot;LIBCXX_BUILD_32_BITS=ON is not supported on<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; this<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
platform.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Check that this option is not enabled on Apple and \
emit a usage<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; warning.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      if (APPLE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;         message(FATAL_ERROR \
&quot;LIBCXX_ENABLE_STATIC_ABI_LIBRARY is not<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
supported on OS X&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -84,27 +125,6 @@ if \
(LIBCXX_ENABLE_STATIC_ABI_LIBRARY)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -set(CXXABIS none libcxxabi libcxxrt libstdc++ \
libsupc++)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT LIBCXX_CXX_ABI)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -         IS_DIRECTORY \
&quot;${CMAKE_SOURCE_DIR}/projects/libcxxabi&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-      set(LIBCXX_CXX_ABI_LIBNAME &quot;libcxxabi&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -      set(LIBCXX_CXX_ABI_INCLUDE_PATHS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${CMAKE_SOURCE_DIR}/projects/libcxxabi/include&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -      set(LIBCXX_CXX_ABI_INTREE 1)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
else ()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(LIBCXX_CXX_ABI_LIBNAME \
&quot;none&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif ()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -else ()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LIBCXX_CXX_ABI_LIBNAME \
&quot;${LIBCXX_CXX_ABI}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif ()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -set(LIBCXX_CXX_ABI &quot;${LIBCXX_CXX_ABI}&quot; CACHE \
STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      &quot;Specify C++ ABI library to \
use.&quot; FORCE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -set_property(CACHE \
LIBCXX_CXX_ABI PROPERTY STRINGS ;${CXXABIS})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Build libc++abi with libunwind. We need this option \
to determine<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; whether to<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# link with libunwind or libgcc_s while running the \
test cases.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -option(LIBCXXABI_USE_LLVM_UNWINDER \
&quot;Build and use the LLVM<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; unwinder.&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; OFF)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Configure System<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -114,234 +134,113 @@ set(LIBCXX_SOURCE_DIR   \
${CMAKE_CURRENT_S<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   set(LIBCXX_BINARY_DIR   \
${CMAKE_CURRENT_BINARY_DIR})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
set(LIBCXX_LIBRARY_DIR<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
${CMAKE_BINARY_DIR}/lib${LIBCXX_LIBDIR_SUFFIX})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY \
${LIBCXX_LIBRARY_DIR})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBCXX_LIBRARY_DIR})<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Declare libc++ configuration \
variables.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   # They are intended for use as \
follows:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   # LIBCXX_CXX_FLAGS: General flags for \
both the compiler and linker.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   # \
LIBCXX_COMPILE_FLAGS: Compile only flags.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   # \
LIBCXX_LINK_FLAGS: Linker only flags.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-set(LIBCXX_CXX_FLAGS &quot;&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
set(LIBCXX_COMPILE_FLAGS &quot;&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
set(LIBCXX_LINK_FLAGS &quot;&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+set(LIBCXX_LIBRARIES &quot;&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Configure compiler.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   include(config-ix)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Configure ABI library<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -include(HandleLibCXXABI)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Configure coverage options.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (LIBCXX_GENERATE_COVERAGE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      include(CodeCoverage)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      set(CMAKE_BUILD_TYPE &quot;COVERAGE&quot; CACHE \
STRING &quot;&quot; FORCE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +string(TOUPPER &quot;${CMAKE_BUILD_TYPE}&quot; \
uppercase_CMAKE_BUILD_TYPE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Setup Compiler Flags<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Get required \
flags.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -# On all systems the system c++ standard \
library headers need to be<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; excluded.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (MSVC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # MSVC only has -X, which disables all default \
includes;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; including the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; crt.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # Thus, we do nothing and hope we don&#39;t \
accidentally include any<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; of the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; C++<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # headers.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (LIBCXX_HAS_NOSTDINCXX_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND LIBCXX_COMPILE_FLAGS \
-nostdinc++)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      string(REPLACE \
&quot;-stdlib=libc++&quot; &quot;&quot; CMAKE_CXX_FLAGS<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; &quot;${CMAKE_CXX_FLAGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
string(REPLACE &quot;-stdlib=libstdc++&quot; &quot;&quot; CMAKE_CXX_FLAGS<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;${CMAKE_CXX_FLAGS}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # If \
c++1y has been enabled then attempt to use it. Fail if it is<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; no<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; supported<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # by the compiler. Otherwise choose c++11 and \
ensure the compiler<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; supports it.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (LIBCXX_ENABLE_CXX1Y)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      if (LIBCXX_HAS_STDCXX1Y_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -         set(LIBCXX_STD_VERSION c++1y)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -         message(FATAL_ERROR &quot;c++1y was enabled \
but the compiler does<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; not<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; support it.&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      if (LIBCXX_HAS_STDCXX11_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -         set(LIBCXX_STD_VERSION c++11)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -         message(FATAL_ERROR &quot;c++11 is required \
by libc++ but is not<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; supported by the \
compiler&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # LIBCXX_STD_VERSION should always be set at this \
point.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   list(APPEND LIBCXX_CXX_FLAGS \
&quot;-std=${LIBCXX_STD_VERSION}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +include(HandleLibCXXABI) # Steup the ABI \
library flags<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -macro(append_if list condition var)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (${condition})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND ${list} ${var})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Include macros for adding and removing libc++ \
flags.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +include(HandleLibcxxFlags)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Get warning flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Disable the system header pragma.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-add_definitions(-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -if (NOT MSVC)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WALL_FLAG -Wall)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   list(APPEND LIBCXX_COMPILE_FLAGS -Werror=return-type)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Remove flags that may have snuck in.<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +remove_flags(-DNDEBUG -UNDEBUG -D_DEBUG<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +                    -stdlib=libc++ -stdlib=libstdc++ \
-lc++abi -m32)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Required flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_compile_flags_if_supported(-std=c++11)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (NOT MSVC AND NOT \
LIBCXX_SUPPORTS_STD_EQ_CXX11_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
message(FATAL_ERROR &quot;C++11 is required but the compiler does not<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; support -std=c++11&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;   endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_W_FLAG \
-W)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_COMPILE_FLAGS \
LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-Wno-unused-parameter)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WWRITE_STRINGS_FLAG<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -Wwrite-strings)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WNO_LONG_LONG_FLAG<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -Wno-long-long)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# On \
all systems the system c++ standard library headers need to be<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; excluded.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# MSVC \
only has -X, which disables all default includes; including<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; the<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; crt.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Thus, we do nothing and hope we don&#39;t \
accidentally include any of<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; C++<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# headers<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_compile_flags_if_supported(-nostdinc++)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Target flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_flags_if(LIBCXX_BUILD_32_BITS -m32)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_flags_if(LIBCXX_TARGET_TRIPLE &quot;-target<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; ${LIBCXX_TARGET_TRIPLE}&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +add_flags_if(LIBCXX_SYSROOT &quot;--sysroot ${LIBCXX_SYSROOT}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_flags_if(LIBCXX_GCC_TOOLCHAIN \
&quot;-gcc-toolchain<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
${LIBCXX_GCC_TOOLCHAIN}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Warning flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
===============================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+add_definitions(-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +add_compile_flags_if_supported(<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
-Wall -W -Wwrite-strings<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
-Wno-unused-parameter -Wno-long-long<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
-Werror=return-type)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   if \
(LIBCXX_ENABLE_WERROR)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WERROR_FLAG -Werror)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_WX_FLAG \
-WX)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_COMPILE_FLAGS \
LIBCXX_HAS_WNO_ERROR_FLAG<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -Wno-error)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_COMPILE_FLAGS \
LIBCXX_HAS_NO_WX_FLAG -WX-)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_compile_flags_if_supported(-Werror)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_compile_flags_if_supported(-WX)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (LIBCXX_ENABLE_PEDANTIC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_COMPILE_FLAGS \
LIBCXX_HAS_PEDANTIC_FLAG<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -pedantic)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   add_compile_flags_if_supported(-pedantic)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Get feature flags.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Exceptions<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Exception flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
=============================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (LIBCXX_ENABLE_EXCEPTIONS)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      # Catches C++ exceptions only and tells the \
compiler to assume<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; that<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; extern C<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      # functions never throw a C++ exception.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_EHSC_FLAG \
-EHsc)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_compile_flags_if_supported(-EHsc)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   list(APPEND LIBCXX_CXX_FLAGS \
-D_LIBCPP_NO_EXCEPTIONS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_EHS_FLAG -EHs-)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_EHA_FLAG -EHa-)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_CXX_FLAGS \
LIBCXX_HAS_FNO_EXCEPTIONS_FLAG<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -fno-exceptions)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   add_definitions(-D_LIBCPP_NO_EXCEPTIONS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   add_compile_flags_if_supported(-EHs- -EHa-)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   add_compile_flags_if_supported(-fno-exceptions)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# RTTI<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# RTTI flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (NOT LIBCXX_ENABLE_RTTI)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   list(APPEND LIBCXX_CXX_FLAGS -D_LIBCPP_NO_RTTI)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_NO_GR_FLAG -GR-)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_FNO_RTTI_FLAG \
-fno-rtti)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_definitions(-D_LIBCPP_NO_RTTI)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_compile_flags_if_supported(-GR-)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_compile_flags_if_supported(-fno-rtti)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Assert<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -string(TOUPPER &quot;${CMAKE_BUILD_TYPE}&quot; \
uppercase_CMAKE_BUILD_TYPE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Assertion flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
=============================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +define_if(LIBCXX_ENABLE_ASSERTIONS -UNDEBUG)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +define_if_not(LIBCXX_ENABLE_ASSERTIONS -DNDEBUG)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (LIBCXX_ENABLE_ASSERTIONS)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      # MSVC doesn&#39;t like _DEBUG on release builds. \
See PR 4379.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (NOT MSVC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND LIBCXX_COMPILE_FLAGS -D_DEBUG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # On Release builds cmake automatically defines \
NDEBUG, so we<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # explicitly undefine it:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (uppercase_CMAKE_BUILD_TYPE STREQUAL \
&quot;RELEASE&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND \
LIBCXX_COMPILE_FLAGS -UNDEBUG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (NOT uppercase_CMAKE_BUILD_TYPE STREQUAL \
&quot;RELEASE&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND \
LIBCXX_COMPILE_FLAGS -DNDEBUG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Static library<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT LIBCXX_ENABLE_SHARED)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   list(APPEND LIBCXX_COMPILE_FLAGS \
-D_LIBCPP_BUILD_STATIC)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT WIN32)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (LIBCXX_BUILD_32_BITS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      message(STATUS &quot;Building 32 bits \
executables and libraries.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
list(APPEND LIBCXX_CXX_FLAGS &quot;-m32&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -elseif(LIBCXX_BUILD_32_BITS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   message(FATAL_ERROR &quot;LIBCXX_BUILD_32_BITS=ON \
is not supported on<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; this<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; platform.&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# This is the _ONLY_ place where add_definitions is \
called.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (MSVC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_definitions(-D_CRT_SECURE_NO_WARNINGS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE \
configuration<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT \
LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
add_definitions(-D_LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# LIBCXX_ENABLE_STDIN configuration<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT LIBCXX_ENABLE_STDIN)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_definitions(-D_LIBCPP_HAS_NO_STDIN)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# LIBCXX_ENABLE_STDOUT configuration<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT LIBCXX_ENABLE_STDOUT)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_definitions(-D_LIBCPP_HAS_NO_STDOUT)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# LIBCXX_ENABLE_THREADS configuration<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT LIBCXX_ENABLE_THREADS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_definitions(-D_LIBCPP_HAS_NO_THREADS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (NOT LIBCXX_ENABLE_MONOTONIC_CLOCK)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
add_definitions(-D_LIBCPP_HAS_NO_MONOTONIC_CLOCK)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; - \
endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Ensure LIBCXX_ENABLE_MONOTONIC_CLOCK is \
set to ON.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -elseif(NOT \
LIBCXX_ENABLE_MONOTONIC_CLOCK)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
message(FATAL_ERROR &quot;LIBCXX_ENABLE_MONOTONIC_CLOCK can only be<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; set to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; OFF&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -                                 &quot; when \
LIBCXX_ENABLE_THREADS is also set to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
OFF.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS \
configuration<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (NOT \
LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
add_definitions(-D_LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Configure for sanitizers. If LIBCXX_BUILT_STANDALONE \
then we have<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; to do<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# the flag translation ourselves. Othewise LLVM&#39;s \
CMakeList.txt<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; will<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; handle it.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (LIBCXX_BUILT_STANDALONE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # NOTE: LLVM_USE_SANITIZER checks for a UNIX like \
system instead<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; of<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; MSVC.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # But we don&#39;t have LLVM_ON_UNIX so checking \
for MSVC is the best<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; we<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; can do.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (LLVM_USE_SANITIZER AND NOT MSVC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      append_if(LIBCXX_CXX_FLAGS<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_FNO_OMIT_FRAME_POINTER_FLAG<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -                     \
&quot;-fno-omit-frame-pointer&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      if (NOT \
uppercase_CMAKE_BUILD_TYPE STREQUAL &quot;DEBUG&quot; AND<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -            NOT uppercase_CMAKE_BUILD_TYPE STREQUAL \
&quot;RELWITHDEBINFO&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -         \
append_if(LIBCXX_CXX_FLAGS LIBCXX_HAS_GLINE_TABLES_ONLY_FLAG<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -                        &quot;-gline-tables-only&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
if (LLVM_USE_SANITIZER STREQUAL &quot;Address&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -         list(APPEND LIBCXX_CXX_FLAGS &quot;-fsanitize=address&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      elseif (LLVM_USE_SANITIZER MATCHES \
&quot;Memory(WithOrigins)?&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -         \
list(APPEND LIBCXX_CXX_FLAGS &quot;-fsanitize=memory&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -         if (LLVM_USE_SANITIZER STREQUAL &quot;MemoryWithOrigins&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -            list(APPEND LIBCXX_CXX_FLAGS<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;-fsanitize-memory-track-origins&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -         endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
elseif (LLVM_USE_SANITIZER STREQUAL &quot;Undefined&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -         list(APPEND LIBCXX_CXX_FLAGS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
&quot;-fsanitize=undefined -fno-sanitize=vptr,function<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -fno-sanitize-recover&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      elseif \
(LLVM_USE_SANITIZER STREQUAL &quot;Thread&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -  \
list(APPEND LIBCXX_CXX_FLAGS &quot;-fsanitize=thread&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -      else()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -         message(WARNING \
&quot;Unsupported value of LLVM_USE_SANITIZER:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
${LLVM_USE_SANITIZER}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   elseif(MSVC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      message(WARNING &quot;LLVM_USE_SANITIZER is not \
supported with<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; MSVC&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_CXX_FLAGS LIBCXX_TARGET_TRIPLE<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -               &quot;-target \
${LIBCXX_TARGET_TRIPLE}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_CXX_FLAGS LIBCXX_SYSROOT \
&quot;--sysroot<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; ${LIBCXX_SYSROOT}&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_CXX_FLAGS LIBCXX_GCC_TOOLCHAIN<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -               &quot;-gcc-toolchain \
${LIBCXX_GCC_TOOLCHAIN}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (LLVM_USE_SANITIZER AND \
LIBCXX_GENERATE_COVERAGE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   message(FATAL_ERROR \
&quot;LLVM_USE_SANITIZER cannot be used with<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_GENERATE_COVERAGE&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
define_if_not(MSVC -D_DEBUG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -string(REPLACE &quot;;&quot; &quot; &quot; \
LIBCXX_CXX_FLAGS &quot;${LIBCXX_CXX_FLAGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-set(CMAKE_CXX_FLAGS &quot;${CMAKE_CXX_FLAGS} ${LIBCXX_CXX_FLAGS}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Feature flags<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
===============================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +define_if(MSVC -D_CRT_SECURE_NO_WARNINGS)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+define_if_not(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -D_LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +define_if_not(LIBCXX_ENABLE_STDIN -D_LIBCPP_HAS_NO_STDIN)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +define_if_not(LIBCXX_ENABLE_STDOUT \
-D_LIBCPP_HAS_NO_STDOUT)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+define_if_not(LIBCXX_ENABLE_THREADS -D_LIBCPP_HAS_NO_THREADS)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +define_if_not(LIBCXX_ENABLE_MONOTONIC_CLOCK<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -D_LIBCPP_HAS_NO_MONOTONIC_CLOCK)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+define_if_not(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -D_LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Setup Source Code<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+# Setup Source Code And Tests<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
include_directories(include)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
add_subdirectory(include)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Add source code. This also contains all of the logic \
for deciding<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; linker flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# soname, etc...<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   add_subdirectory(lib)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Setup Tests<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-#===============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
add_subdirectory(test)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Added: libcxx/trunk/cmake/Modules/FindLLVM.cmake<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; URL:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</div></div><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_cmake_Modules_FindLLVM.cmake-3Frev-3D243574-26view-3Dauto&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=dZ5do20lO_LHJpJtphkvMiNwIYif1tPyMRSNOPj-IuE&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/FindLLVM.cmake?rev=243574&amp;view=auto</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/cmake/Modules/FindLLVM.cmake \
(added)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ \
libcxx/trunk/cmake/Modules/FindLLVM.cmake Wed Jul 29 16:07:28<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; 2015<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -0,0 +1,81 \
@@<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (CMAKE_SOURCE_DIR STREQUAL \
CMAKE_CURRENT_SOURCE_DIR)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   # Rely on \
llvm-config.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(CONFIG_OUTPUT)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   find_program(LLVM_CONFIG \
&quot;llvm-config&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if(DEFINED \
LLVM_PATH)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_INCLUDE_DIR \
${LLVM_INCLUDE_DIR} CACHE PATH &quot;Path to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
llvm/include&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_PATH \
${LLVM_PATH} CACHE PATH &quot;Path to LLVM source<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
tree&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_MAIN_SRC_DIR \
${LLVM_PATH})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_CMAKE_PATH \
&quot;${LLVM_PATH}/cmake/modules&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
elseif(LLVM_CONFIG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      message(STATUS \
&quot;Found LLVM_CONFIG as ${LLVM_CONFIG}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +  \
set(CONFIG_COMMAND ${LLVM_CONFIG}<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +         \
&quot;--includedir&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +         \
&quot;--prefix&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +         \
&quot;--src-root&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      execute_process(<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         COMMAND ${CONFIG_COMMAND}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         RESULT_VARIABLE HAD_ERROR<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         OUTPUT_VARIABLE CONFIG_OUTPUT<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      )<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      if(NOT HAD_ERROR)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         string(REGEX REPLACE<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +            &quot;[ \t]*[\r\n]+[ \t]*&quot; \
&quot;;&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +            CONFIG_OUTPUT \
${CONFIG_OUTPUT})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         string(REPLACE &quot;;&quot; &quot; &quot; \
CONFIG_COMMAND_STR<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${CONFIG_COMMAND}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +         \
message(STATUS &quot;${CONFIG_COMMAND_STR}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; + \
message(FATAL_ERROR &quot;llvm-config failed with status<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; ${HAD_ERROR}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(GET CONFIG_OUTPUT 0 INCLUDE_DIR)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(GET CONFIG_OUTPUT 1 LLVM_OBJ_ROOT)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(GET CONFIG_OUTPUT 2 MAIN_SRC_DIR)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_INCLUDE_DIR ${INCLUDE_DIR} CACHE PATH \
&quot;Path to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; llvm/include&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_BINARY_DIR ${LLVM_OBJ_ROOT} CACHE PATH \
&quot;Path to LLVM<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; build<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; tree&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH \
&quot;Path to LLVM<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; source<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; tree&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_CMAKE_PATH \
&quot;${LLVM_BINARY_DIR}/share/llvm/cmake&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +  \
else()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      message(FATAL_ERROR &quot;llvm-config \
not found and<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; LLVM_MAIN_SRC_DIR not<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; defined. &quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +                                    &quot;Reconfigure \
with<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -DLLVM_CONFIG=path/to/llvm-config &quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +                                    &quot;or \
-DLLVM_PATH=path/to/llvm-source-root.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if (NOT EXISTS ${LLVM_MAIN_SRC_DIR})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      message(FATAL_ERROR &quot;Not found: \
${LLVM_MAIN_SRC_DIR}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if(NOT EXISTS ${LLVM_CMAKE_PATH})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      message(FATAL_ERROR &quot;Not found: \
${LLVM_CMAKE_PATH}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   list(APPEND CMAKE_MODULE_PATH \
&quot;${LLVM_CMAKE_PATH}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   list(APPEND \
CMAKE_MODULE_PATH<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${LLVM_MAIN_SRC_DIR}/cmake/modules&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if(LLVM_LIT)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      # Define the default arguments to use with \
&#39;lit&#39;, and an option<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; for<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; the user<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      # to override.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LIT_ARGS_DEFAULT &quot;-sv --show-xfail \
--show-unsupported&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      if (MSVC OR \
XCODE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +         set(LIT_ARGS_DEFAULT \
&quot;${LIT_ARGS_DEFAULT} --no-progress-bar&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+      endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_LIT_ARGS \
&quot;${LIT_ARGS_DEFAULT}&quot; CACHE STRING &quot;Default<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; options<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; for lit&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      # On Win32 hosts, provide an option to specify \
the path to the<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; GnuWin32 tools.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      if( WIN32 AND NOT CYGWIN )<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         set(LLVM_LIT_TOOLS_DIR &quot;&quot; CACHE \
PATH &quot;Path to GnuWin32<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; tools&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LLVM_INCLUDE_TESTS OFF)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   include(AddLLVM) # Include the LLVM CMake \
functions.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   include(HandleLLVMOptions)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(LIBCXX_BUILT_STANDALONE 1)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(LLVM_MAIN_SRC_DIR \
&quot;${CMAKE_SOURCE_DIR}&quot; CACHE PATH &quot;Path to<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; LLVM<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; source tree&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(LLVM_LIT \
&quot;${CMAKE_SOURCE_DIR}/utils/lit/lit.py&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: \
libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
URL:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</div></div><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_cmake_Modules_HandleLibCXXABI.cmake-3Frev-3D243574-26r1-3D243573-26r2- \
3D243574-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZIS \
M_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=XkmhX26fxOOQm21loG0dMpj66xxa3O7Gne_PTvHyMPk&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmak \
e/Modules/HandleLibCXXABI.cmake?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake \
(original)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ \
libcxx/trunk/cmake/Modules/HandleLibCXXABI.cmake Wed Jul 29<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; 16:07:28<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; 2015<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -58,6 +58,21 @@ macro(setup_abi_lib abidefines \
abilib ab<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Setup the default options if LIBCXX_CXX_ABI is not \
specified.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (NOT LIBCXX_CXX_ABI)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if (NOT DEFINED LIBCXX_BUILT_STANDALONE AND<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         IS_DIRECTORY \
&quot;${CMAKE_SOURCE_DIR}/projects/libcxxabi&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+      set(LIBCXX_CXX_ABI_LIBNAME &quot;libcxxabi&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      set(LIBCXX_CXX_ABI_INCLUDE_PATHS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${CMAKE_SOURCE_DIR}/projects/libcxxabi/include&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      set(LIBCXX_CXX_ABI_INTREE 1)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
else ()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      set(LIBCXX_CXX_ABI_LIBNAME \
&quot;none&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif ()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +else ()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(LIBCXX_CXX_ABI_LIBNAME \
&quot;${LIBCXX_CXX_ABI}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +endif ()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Configure based on the selected ABI library.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (&quot;${LIBCXX_CXX_ABI_LIBNAME}&quot; STREQUAL \
&quot;libstdc++&quot; OR<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;         \
&quot;${LIBCXX_CXX_ABI_LIBNAME}&quot; STREQUAL &quot;libsupc++&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      set(_LIBSUPCXX_INCLUDE_FILES<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; Added: \
libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
URL:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</div></div><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_cmake_Modules_HandleLibcxxFlags.cmake-3Frev-3D243574-26view-3Dauto&d=A \
wMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG \
5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=C7TI1HXzw-xyqng2vZSZCg2zlan35HnKGBJglLeRMr0&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake?rev=243574&amp;view=auto</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake \
(added)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ \
libcxx/trunk/cmake/Modules/HandleLibcxxFlags.cmake Wed Jul 29<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; 16:07:28<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; 2015<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -0,0 +1,147 @@<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# HandleLibcxxFlags - A set of macros used to setup \
the flags used<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; compile<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# and link libc++. These macros add flags to the \
following CMake<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; variables.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# - LIBCXX_COMPILE_FLAGS: flags used to compile \
libc++<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# - LIBCXX_LINK_FLAGS: flags used to link \
libc++<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# - LIBCXX_LIBRARIES: libraries to link \
libc++ to.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +include(CheckCXXCompilerFlag)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +unset(add_flag_if_supported)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Mangle the name of a compiler flag into a valid \
CMake identifier.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Ex: --std=c++11 -&gt; \
STD_EQ_CXX11<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(mangle_name str output)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(STRIP &quot;${str}&quot; strippedStr)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(REGEX REPLACE &quot;^/&quot; &quot;&quot; \
strippedStr &quot;${strippedStr}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
string(REGEX REPLACE &quot;^-+&quot; &quot;&quot; strippedStr \
&quot;${strippedStr}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(REGEX \
REPLACE &quot;-+$&quot; &quot;&quot; strippedStr &quot;${strippedStr}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(REPLACE &quot;-&quot; &quot;_&quot; \
strippedStr &quot;${strippedStr}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
string(REPLACE &quot;=&quot; &quot;_EQ_&quot; strippedStr \
&quot;${strippedStr}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(REPLACE \
&quot;+&quot; &quot;X&quot; strippedStr &quot;${strippedStr}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(TOUPPER &quot;${strippedStr}&quot; \
${output})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Remove a list of flags from all CMake variables that \
affect<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; compile<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; flags.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# This can be used to remove unwanted flags specified \
on the<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; command line<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# or added in other parts of LLVM&#39;s cmake \
configuration.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(remove_flags)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(var ${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      string(REPLACE &quot;${var}&quot; &quot;&quot; \
CMAKE_CXX_FLAGS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;${CMAKE_CXX_FLAGS}&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      string(REPLACE &quot;${var}&quot; &quot;&quot; \
CMAKE_C_FLAGS &quot;${CMAKE_C_FLAGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
string(REPLACE &quot;${var}&quot; &quot;&quot; CMAKE_EXE_LINKER_FLAGS<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;${CMAKE_EXE_LINKER_FLAGS}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      string(REPLACE &quot;${var}&quot; &quot;&quot; \
CMAKE_SHARED_LINKER_FLAGS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${CMAKE_SHARED_LINKER_FLAGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
string(REPLACE &quot;${var}&quot; &quot;&quot; CMAKE_SHARED_MODULE_FLAGS<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;${CMAKE_SHARED_MODULE_FLAGS}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      remove_definitions(${var})<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endforeach()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+endmacro(remove_flags)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add a macro definition if condition is true.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(define_if condition def)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if (${condition})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      add_definitions(${def})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add a macro definition if condition is not true.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(define_if_not condition def)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if (NOT ${condition})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      add_definitions(${def})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add a specified list of flags to both \
&#39;LIBCXX_COMPILE_FLAGS&#39; and<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# \
&#39;LIBCXX_LINK_FLAGS&#39;.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(add_flags)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(value ${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(APPEND LIBCXX_COMPILE_FLAGS ${value})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(APPEND LIBCXX_LINK_FLAGS ${value})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endforeach()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# If the specified &#39;condition&#39; is true then \
add a list of flags to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; both<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# &#39;LIBCXX_COMPILE_FLAGS&#39; and \
&#39;LIBCXX_LINK_FLAGS&#39;.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(add_flags_if \
condition)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if (${condition})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      add_flags(${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add each flag in the list to LIBCXX_COMPILE_FLAGS \
and<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_LINK_FLAGS<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# if that flag is supported by the current \
compiler.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(add_flags_if_supported)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(flag ${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         mangle_name(&quot;${flag}&quot; flagname)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         \
check_cxx_compiler_flag(&quot;${flag}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;LIBCXX_SUPPORTS_${flagname}_FLAG&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +     \
add_flags_if(LIBCXX_SUPPORTS_${flagname}_FLAG ${flag})<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +   endforeach()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add a list of flags to \
&#39;LIBCXX_COMPILE_FLAGS&#39;.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+macro(add_compile_flags)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(f \
${ARGN})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(APPEND LIBCXX_COMPILE_FLAGS \
${f})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endforeach()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# If &#39;condition&#39; is true then add the \
specified list of flags to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# \
&#39;LIBCXX_COMPILE_FLAGS&#39;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+macro(add_compile_flags_if condition)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if \
(${condition})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
add_compile_flags(${ARGN})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# For each specified flag, add that flag to \
&#39;LIBCXX_COMPILE_FLAGS&#39;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; if the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# flag is supported by the C++ compiler.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(add_compile_flags_if_supported)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(flag ${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         mangle_name(&quot;${flag}&quot; flagname)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +         check_cxx_compiler_flag(&quot;-Werror \
${flag}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;LIBCXX_SUPPORTS_${flagname}_FLAG&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +     \
add_compile_flags_if(LIBCXX_SUPPORTS_${flagname}_FLAG<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; ${flag})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endforeach()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add a list of flags to \
&#39;LIBCXX_LINK_FLAGS&#39;.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+macro(add_link_flags)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(f ${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(APPEND LIBCXX_LINK_FLAGS ${f})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endforeach()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# If &#39;condition&#39; is true then add the \
specified list of flags to<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +# \
&#39;LIBCXX_LINK_FLAGS&#39;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+macro(add_link_flags_if condition)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if \
(${condition})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      add_link_flags(${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# For each specified flag, add that flag to \
&#39;LIBCXX_LINK_FLAGS&#39; if<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# flag is supported by the C++ compiler.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(add_link_flags_if_supported)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(flag ${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      mangle_name(&quot;${flag}&quot; flagname)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      check_cxx_compiler_flag(&quot;${flag}&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;LIBCXX_SUPPORTS_${flagname}_FLAG&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
add_link_flags_if(LIBCXX_SUPPORTS_${flagname}_FLAG ${flag})<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +   endforeach()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Add a list of libraries or link flags to \
&#39;LIBCXX_LIBRARIES&#39;.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+macro(add_library_flags)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   foreach(lib \
${ARGN})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      list(APPEND LIBCXX_LIBRARIES \
${lib})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endforeach()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# if &#39;condition&#39; is true then add the \
specified list of libraries<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# to &#39;LIBCXX_LIBRARIES&#39;.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(add_library_flags_if condition)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   if(${condition})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      add_library_flags(${ARGN})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Turn a comma separated CMake list into a space \
separated string.<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +macro(split_list listname)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   string(REPLACE &quot;;&quot; &quot; &quot; \
${listname} &quot;${${listname}}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+endmacro()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: libcxx/trunk/cmake/config-ix.cmake<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; URL:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</div></div><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_cmake_config-2Dix.cmake-3Frev-3D243574-26r1-3D243573-26r2-3D243574-26v \
iew-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0 \
cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=clqoIwQvThEZYFh5u8E0MBAJ1Eu-8NuGSbvA3zL_rOo&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/cmake/config-ix.cmake?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/cmake/config-ix.cmake (original)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ libcxx/trunk/cmake/config-ix.cmake Wed Jul 29 \
16:07:28 2015<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -2,23 +2,7 @@ \
include(CheckLibraryExists)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
include(CheckCXXCompilerFlag)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Check compiler flags<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-std=c++11<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_STDCXX11_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-std=c++1y<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_STDCXX1Y_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-fPIC<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_FPIC_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-fno-omit-frame-pointer<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_FNO_OMIT_FRAME_POINTER_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-nodefaultlibs<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_NODEFAULTLIBS_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-nostdinc++<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_NOSTDINCXX_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-Wall<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_WALL_FLAG)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -check_cxx_compiler_flag(-W                             \
LIBCXX_HAS_W_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-Wno-unused-parameter<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_WNO_UNUSED_PARAMETER_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-Wwrite-strings<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_WWRITE_STRINGS_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-Wno-long-long<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_WNO_LONG_LONG_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-pedantic<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_PEDANTIC_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-Werror<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_WERROR_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-Wno-error<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_WNO_ERROR_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-fno-exceptions<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_FNO_EXCEPTIONS_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-fno-rtti<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_FNO_RTTI_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-check_cxx_compiler_flag(-gline-tables-only<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_GLINE_TABLES_ONLY_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   check_cxx_compiler_flag(/WX                           \
LIBCXX_HAS_WX_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
check_cxx_compiler_flag(/WX-<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_NO_WX_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
check_cxx_compiler_flag(/EHsc<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_EHSC_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -26,6 +10,7 @@ \
check_cxx_compiler_flag(/EHs-<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
check_cxx_compiler_flag(/EHa-<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_NO_EHA_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
check_cxx_compiler_flag(/GR-<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
LIBCXX_HAS_NO_GR_FLAG)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Check libraries<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   check_library_exists(pthread pthread_create \
&quot;&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; LIBCXX_HAS_PTHREAD_LIB)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   check_library_exists(c printf &quot;&quot; \
LIBCXX_HAS_C_LIB)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: libcxx/trunk/lib/CMakeLists.txt<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; URL:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</div></div><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_lib_CMakeLists.txt-3Frev-3D243574-26r1-3D243573-26r2-3D243574-26view-3 \
Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk& \
m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=NVDjpX-d7VybNIIDrNFqWFneFc3hUEDkO7_s7BWajX0&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/lib/CMakeLists.txt?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/lib/CMakeLists.txt (original)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ libcxx/trunk/lib/CMakeLists.txt Wed Jul 29 16:07:28 \
2015<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -25,48 +25,23 @@ if (MSVC_IDE OR XCODE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (LIBCXX_ENABLE_SHARED)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_library(cxx SHARED<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${LIBCXX_SOURCES}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${LIBCXX_HEADERS}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      )<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   add_library(cxx SHARED ${LIBCXX_SOURCES} \
${LIBCXX_HEADERS})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_library(cxx STATIC<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${LIBCXX_SOURCES}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${LIBCXX_HEADERS}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      )<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -#if LIBCXX_CXX_ABI_LIBRARY_PATH is defined we want to \
add it to the<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; search path.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (DEFINED LIBCXX_CXX_ABI_LIBRARY_PATH)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   target_link_libraries(cxx \
&quot;-L${LIBCXX_CXX_ABI_LIBRARY_PATH}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
add_library(cxx STATIC ${LIBCXX_SOURCES} ${LIBCXX_HEADERS})<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;   endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (DEFINED LIBCXX_CXX_ABI_DEPS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      add_dependencies(cxx LIBCXX_CXX_ABI_DEPS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -set(libraries &quot;&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      # TODO(ericwf): Remove these GNU specific linker \
flags and let<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; CMake<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; do the<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      # configuration. This will be more portable.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND libraries \
&quot;-Wl,--whole-archive&quot; &quot;-Wl,-Bstatic&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -      list(APPEND libraries &quot;${LIBCXX_CXX_ABI_LIBRARY}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND libraries &quot;-Wl,-Bdynamic&quot; \
&quot;-Wl,--no-whole-archive&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND libraries \
&quot;${LIBCXX_CXX_ABI_LIBRARY}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +#if LIBCXX_CXX_ABI_LIBRARY_PATH is defined we want to \
add it to the<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; search path.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_link_flags_if(LIBCXX_CXX_ABI_LIBRARY_PATH<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;-L${LIBCXX_CXX_ABI_LIBRARY_PATH}&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -# Generate library list.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(libraries LIBCXX_HAS_PTHREAD_LIB \
pthread)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(libraries LIBCXX_HAS_C_LIB \
c)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(libraries LIBCXX_HAS_M_LIB m)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(libraries LIBCXX_HAS_RT_LIB rt)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(libraries LIBCXX_HAS_GCC_S_LIB gcc_s)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_library_flags_if(LIBCXX_COVERAGE_LIBRARY<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;${LIBCXX_COVERAGE_LIBRARY}&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (LIBCXX_COVERAGE_LIBRARY)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   target_link_libraries(cxx \
${LIBCXX_COVERAGE_LIBRARY})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -target_link_libraries(cxx ${libraries})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+add_library_flags_if(LIBCXX_ENABLE_STATIC_ABI_LIBRARY<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; &quot;-Wl,--whole-archive&quot; &quot;-Wl,-Bstatic&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+add_library_flags(&quot;${LIBCXX_CXX_ABI_LIBRARY}&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +add_library_flags_if(LIBCXX_ENABLE_STATIC_ABI_LIBRARY<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; &quot;-Wl,-Bdynamic&quot;<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; &quot;-Wl,--no-whole-archive&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if (APPLE AND LLVM_USE_SANITIZER)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      if (&quot;${LLVM_USE_SANITIZER}&quot; STREQUAL \
&quot;Address&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -89,15 +64,21 @@ if (APPLE \
AND LLVM_USE_SANITIZER)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;         \
set(LIBCXX_SANITIZER_LIBRARY &quot;${LIBDIR}/${LIBFILE}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;         set(LIBCXX_SANITIZER_LIBRARY \
&quot;${LIBCXX_SANITIZER_LIBRARY}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
PARENT_SCOPE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;         message(STATUS &quot;Manually \
linking compiler-rt library:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
${LIBCXX_SANITIZER_LIBRARY}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
target_link_libraries(cxx &quot;${LIBCXX_SANITIZER_LIBRARY}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      target_link_libraries(cxx \
&quot;-Wl,-rpath,${LIBDIR}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
add_library_flags(&quot;${LIBCXX_SANITIZER_LIBRARY}&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      add_link_flags(&quot;-Wl,-rpath,${LIBDIR}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# Generate library list.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_library_flags_if(LIBCXX_HAS_PTHREAD_LIB \
pthread)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_library_flags_if(LIBCXX_HAS_C_LIB \
c)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_library_flags_if(LIBCXX_HAS_M_LIB m)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_library_flags_if(LIBCXX_HAS_RT_LIB rt)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_library_flags_if(LIBCXX_HAS_GCC_S_LIB gcc_s)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   # Setup flags.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_COMPILE_FLAGS LIBCXX_HAS_FPIC_FLAG \
-fPIC)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -append_if(LIBCXX_LINK_FLAGS \
LIBCXX_HAS_NODEFAULTLIBS_FLAG<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -nodefaultlibs)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_flags_if_supported(-fPIC)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_link_flags_if_supported(-nodefaultlibs)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME STREQUAL \
&quot;libcxxabi&quot; OR<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;                           \
LIBCXX_CXX_ABI_LIBNAME STREQUAL &quot;none&quot;))<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
@@ -106,8 +87,8 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME S<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;      endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      if ( CMAKE_OSX_DEPLOYMENT_TARGET STREQUAL \
&quot;10.6&quot; )<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND \
LIBCXX_COMPILE_FLAGS &quot;-U__STRICT_ANSI__&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-      list(APPEND LIBCXX_LINK_FLAGS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
add_definitions(-D__STRICT_ANSI__)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
add_link_flags(<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;            \
&quot;-compatibility_version 1&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;            \
&quot;-current_version 1&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;            \
&quot;-install_name /usr/lib/libc++.1.dylib&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
@@ -129,7 +110,7 @@ if ( APPLE AND (LIBCXX_CXX_ABI_LIBNAME S<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;            set (OSX_RE_EXPORT_LINE &quot;/usr/lib/libc++abi.dylib<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++abi${LIBCXX_LIBCPPABI_VERSION}.exp&quot;)<br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;         endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      list(APPEND LIBCXX_LINK_FLAGS<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      add_link_flags(<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;            &quot;-compatibility_version 1&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;            &quot;-install_name \
/usr/lib/libc++.1.dylib&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/libc++unexp.exp&quot;<br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -139,8 +120,9 @@ if ( APPLE AND \
(LIBCXX_CXX_ABI_LIBNAME S<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -string(REPLACE &quot;;&quot; &quot; &quot; \
LIBCXX_COMPILE_FLAGS<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${LIBCXX_COMPILE_FLAGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-string(REPLACE &quot;;&quot; &quot; &quot; LIBCXX_LINK_FLAGS \
&quot;${LIBCXX_LINK_FLAGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+target_link_libraries(cxx ${LIBCXX_LIBRARIES})<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+split_list(LIBCXX_COMPILE_FLAGS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+split_list(LIBCXX_LINK_FLAGS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   set_target_properties(cxx<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      PROPERTIES<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: libcxx/trunk/test/CMakeLists.txt<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; URL:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</div></div><div><div class="h5">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_test_CMakeLists.txt-3Frev-3D243574-26r1-3D243573-26r2-3D243574-26view- \
3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk \
&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=2PSU4E1dH4Ob3o0jjPCMGLzBzB62UA9BAn9NDSFe5Bc&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/CMakeLists.txt?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/test/CMakeLists.txt (original)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ libcxx/trunk/test/CMakeLists.txt Wed Jul 29 \
16:07:28 2015<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -6,84 +6,47 @@ \
macro(pythonize_bool var)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;      endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endmacro()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -set(LIT_EXECUTABLE &quot;&quot; CACHE FILEPATH \
&quot;Path to LLVM&#39;s llvm-lit.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+set(LIBCXX_LIT_VARIANT &quot;libcxx&quot; CACHE STRING<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      &quot;Configuration variant to use for LIT.&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-if(LIBCXX_BUILT_STANDALONE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # Make sure we can \
use the console pool for recent cmake and<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; ninja \
&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; 1.5<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if(CMAKE_VERSION VERSION_LESS 3.1.20141117)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(cmake_3_2_USES_TERMINAL)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(cmake_3_2_USES_TERMINAL USES_TERMINAL)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   include(FindPythonInterp)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if(PYTHONINTERP_FOUND)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(LIT_EXECUTABLE<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -            ${PYTHON_EXECUTABLE} \
${CMAKE_SOURCE_DIR}/utils/lit/lit.py)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
else()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      message(WARNING &quot;Could not find \
Python, cannot set<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; LIT_EXECUTABLE.&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +pythonize_bool(LIBCXX_ENABLE_RTTI)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +pythonize_bool(LIBCXX_ENABLE_SHARED)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +pythonize_bool(LIBCXX_BUILD_32_BITS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+pythonize_bool(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +pythonize_bool(LIBCXX_ENABLE_STDIN)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+pythonize_bool(LIBCXX_ENABLE_STDOUT)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+pythonize_bool(LIBCXX_ENABLE_THREADS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+pythonize_bool(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +pythonize_bool(LIBCXX_ENABLE_MONOTONIC_CLOCK)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +pythonize_bool(LIBCXX_GENERATE_COVERAGE)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
+pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# The tests shouldn&#39;t link to any ABI library when \
it has been<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; linked<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; into<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +# libc++ statically.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(LIBCXX_CXX_ABI_LIBNAME &quot;none&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -if (LIT_EXECUTABLE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LIT_ARGS_DEFAULT &quot;-sv --show-unsupported \
--show-xfail&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (MSVC OR XCODE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(LIT_ARGS_DEFAULT &quot;${LIT_ARGS_DEFAULT} \
--no-progress-bar&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LLVM_LIT_ARGS \
&quot;${LIT_ARGS_DEFAULT}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -         CACHE \
STRING &quot;Default options for lit&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
set(LIT_ARGS &quot;${LLVM_LIT_ARGS}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
separate_arguments(LIT_ARGS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LIBCXX_LIT_VARIANT &quot;libcxx&quot; CACHE \
STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -         &quot;Configuration variant to use \
for LIT.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   pythonize_bool(LIBCXX_ENABLE_EXCEPTIONS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   pythonize_bool(LIBCXX_ENABLE_RTTI)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   pythonize_bool(LIBCXX_ENABLE_SHARED)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   pythonize_bool(LIBCXX_BUILD_32_BITS)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
pythonize_bool(LIBCXX_ENABLE_GLOBAL_FILESYSTEM_NAMESPACE)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   pythonize_bool(LIBCXX_ENABLE_STDIN)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -  \
pythonize_bool(LIBCXX_ENABLE_STDOUT)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
pythonize_bool(LIBCXX_ENABLE_THREADS)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
pythonize_bool(LIBCXX_ENABLE_THREAD_UNSAFE_C_FUNCTIONS)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   pythonize_bool(LIBCXX_ENABLE_MONOTONIC_CLOCK)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   pythonize_bool(LIBCXX_GENERATE_COVERAGE)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   pythonize_bool(LIBCXXABI_USE_LLVM_UNWINDER)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # The tests shouldn&#39;t link to \
any ABI library when it has been<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; linked<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; into<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   # libc++ statically.<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (LIBCXX_ENABLE_STATIC_ABI_LIBRARY)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(LIBCXX_CXX_ABI_LIBNAME &quot;none&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(LIBCXX_TARGET_INFO \
&quot;libcxx.test.target_info.LocalTI&quot; CACHE<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -         &quot;TargetInfo to use when \
setting up test environment.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   \
set(LIBCXX_EXECUTOR &quot;None&quot; CACHE STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; - \
&quot;Executor to use when running tests.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -   set(AUTO_GEN_COMMENT &quot;## Autogenerated \
by libcxx<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; configuration.\n# Do<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; not edit!&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   configure_file(<br>
</div></div>&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${CMAKE_CURRENT_SOURCE_DIR}/<a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.site.cfg.in&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=LDfQXxz0_2T4eAZr6s8uuSpe8_AIjA18L6SSOxO38r8&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a><br> <div><div \
class="h5">&gt;&gt;&gt;&gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      @ONLY)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   add_custom_target(check-libcxx<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      COMMAND ${LIT_EXECUTABLE}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -                  ${LIT_ARGS}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -                  ${CMAKE_CURRENT_BINARY_DIR}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      DEPENDS cxx<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      COMMENT &quot;Running libcxx tests&quot;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      ${cmake_3_2_USES_TERMINAL})<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   if (LIBCXX_GENERATE_COVERAGE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      include(CodeCoverage)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(output_dir \
&quot;${CMAKE_CURRENT_BINARY_DIR}/coverage&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; - \
set(capture_dirs<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/;${CMAKE_CURRENT_BINARY_DIR}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      set(extract_dirs<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; &quot;${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      setup_lcov_test_target_coverage(&quot;cxx&quot; \
&quot;${output_dir}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${capture_dirs}&quot; &quot;${extract_dirs}&quot;)<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -   endif()<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -else()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   message(WARNING<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -               &quot;LIT_EXECUTABLE not set, no \
check-libcxx target will be<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; available!&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(LIBCXX_TARGET_INFO \
&quot;libcxx.test.target_info.LocalTI&quot; CACHE<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &quot;TargetInfo to use when setting \
up test environment.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(LIBCXX_EXECUTOR \
&quot;None&quot; CACHE STRING<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &quot;Executor \
to use when running tests.&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +set(AUTO_GEN_COMMENT &quot;## Autogenerated by libcxx \
configuration.\n#<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; Do not<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; edit!&quot;)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +configure_file(<br>
</div></div>&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   ${CMAKE_CURRENT_SOURCE_DIR}/<a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.site.cfg.in&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=LDfQXxz0_2T4eAZr6s8uuSpe8_AIjA18L6SSOxO38r8&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a><br> <span \
class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   \
@ONLY)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +add_lit_testsuite(check-libcxx &quot;Running libcxx \
tests&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +   ${CMAKE_CURRENT_BINARY_DIR}<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   DEPENDS cxx)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +if (LIBCXX_GENERATE_COVERAGE)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   include(CodeCoverage)<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(output_dir \
&quot;${CMAKE_CURRENT_BINARY_DIR}/coverage&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; + \
set(capture_dirs<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${LIBCXX_LIB_CMAKEFILES_DIR}/cxx.dir/;${CMAKE_CURRENT_BINARY_DIR}&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   set(extract_dirs<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${LIBCXX_SOURCE_DIR}/include;${LIBCXX_SOURCE_DIR}/src&quot;)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   setup_lcov_test_target_coverage(&quot;cxx&quot; \
&quot;${output_dir}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${capture_dirs}&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
&quot;${extract_dirs}&quot;)<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   endif()<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</span><span class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: libcxx/trunk/test/<a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.site.cfg.in&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=LDfQXxz0_2T4eAZr6s8uuSpe8_AIjA18L6SSOxO38r8&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a><br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; URL:<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_test_lit.site.cfg.in-3Frev-3D243574-26r1-3D243573-26r2-3D243574-26view \
-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCx \
k&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=PhGAXQT5FgzNZLkAUJLP1vJ5oGMI2iWIwXlLlcWetsc&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/lit.site.cfg.in?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/test/<a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.site.cfg.in&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=LDfQXxz0_2T4eAZr6s8uuSpe8_AIjA18L6SSOxO38r8&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a> (original)<br> \
</span>&gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ libcxx/trunk/test/<a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lit.site.cfg.in&d=AwMFaQ&c=8 \
hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=LDfQXxz0_2T4eAZr6s8uuSpe8_AIjA18L6SSOxO38r8&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a> Wed Jul 29 16:07:28 2015<br> \
<span class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -1,6 +1,5 @@<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;   @AUTO_GEN_COMMENT@<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
config.cxx_under_test                 = &quot;@LIBCXX_COMPILER@&quot;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -config.std                                 = \
&quot;@LIBCXX_STD_VERSION@&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
config.libcxx_src_root               = &quot;@LIBCXX_SOURCE_DIR@&quot;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;   config.libcxx_obj_root               = \
&quot;@LIBCXX_BINARY_DIR@&quot;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;   \
config.cxx_library_root              = &quot;@LIBCXX_LIBRARY_DIR@&quot;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; Modified: \
libcxx/trunk/www/index.html<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; URL:<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
</span><span class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproje \
ct_libcxx_trunk_www_index.html-3Frev-3D243574-26r1-3D243573-26r2-3D243574-26view-3Ddif \
f&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=T9 \
p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=_nIFr9ARZ9GJcgSOvNMOw2DJIXPscy75U7s0lNlbhLE&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/trunk/www/index.html?rev=243574&amp;r1=243573&amp;r2=243574&amp;view=diff</a><br>
 &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
==============================================================================<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; --- libcxx/trunk/www/index.html (original)<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +++ libcxx/trunk/www/index.html Wed Jul 29 16:07:28 \
2015<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; @@ -184,26 +184,30 @@<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      &lt;p&gt;In-tree build:&lt;/p&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      &lt;ul&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &lt;li&gt;&lt;code&gt;cd \
where-you-want-to-live&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;      \
&lt;li&gt;Check out libcxx and &lt;a<br> </span>&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
href=&quot;<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__libcxxabi.llvm \
.org_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk& \
m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=Nj9dmtIwRxroR5hibK_kr3HmV67FCTnUPHksySUpK74&e=" \
rel="noreferrer" target="_blank">http://libcxxabi.llvm.org/</a>&quot;&gt;libcxxabi&lt;/a&gt;<br>
 <span class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt;            into \
llvm/projects&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
&lt;li&gt;&lt;code&gt;cd llvm&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      &lt;li&gt;&lt;code&gt;cd \
where-you-want-to-build&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;     \
&lt;li&gt;&lt;code&gt;mkdir build &amp;amp;&amp;amp; cd \
build&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -      \
&lt;li&gt;&lt;code&gt;cmake .. # Linux may require -DCMAKE_C_COMPILER=clang<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &lt;li&gt;&lt;code&gt;cmake path/to/llvm # Linux \
may require<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; -DCMAKE_C_COMPILER=clang<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;               \
-DCMAKE_CXX_COMPILER=clang++&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt;         &lt;li&gt;&lt;code&gt;make cxx&lt;/code&gt;&lt;/li&gt;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      &lt;/ul&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -   &lt;p&gt;Out-of-tree build:&lt;/p&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +   &lt;p&gt;Out-of-tree buildc:&lt;/p&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;      &lt;ul&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      &lt;li&gt;Check out libcxx&lt;/li&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &lt;li&gt;&lt;code&gt;cd \
where-you-want-to-live&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +    \
&lt;li&gt;Check out libcxx and llvm&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;      \
&lt;li&gt;If not on a Mac, also check out<br> </span>&gt;&gt;&gt;&gt;&gt; &gt;&gt;    \
&lt;a href=&quot;<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__libcxxab \
i.llvm.org_&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq \
0cCxk&m=T9p5KsG5Q5KnnyCfiN85j_8KVxBYhvy38begk-WuMh8&s=Nj9dmtIwRxroR5hibK_kr3HmV67FCTnUPHksySUpK74&e=" \
rel="noreferrer" target="_blank">http://libcxxabi.llvm.org/</a>&quot;&gt;libcxxabi&lt;/a&gt;&lt;/li&gt;<br>
 <span class="">&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -      &lt;li&gt;&lt;code&gt;cd \
libcxx&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +      \
&lt;li&gt;&lt;code&gt;cd where-you-want-to-build&lt;/code&gt;&lt;/li&gt;<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt;         &lt;li&gt;&lt;code&gt;mkdir build \
&amp;amp;&amp;amp; cd build&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-      &lt;li&gt;&lt;code&gt;cmake -DLIBCXX_CXX_ABI=libcxxabi<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +      &lt;li&gt;&lt;code&gt;cmake \
-DLLVM_PATH=path/to/llvm<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; +            \
-DLIBCXX_CXX_ABI=libcxxabi<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;               \
-DLIBCXX_CXX_ABI_INCLUDE_PATHS=path/to/libcxxabi/include<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; -            -DLIT_EXECUTABLE=path/to/llvm/utils/lit/lit.py .. # Linux<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; may<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt; require<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; -            -DCMAKE_C_COMPILER=clang<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; \
-DCMAKE_CXX_COMPILER=clang++&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +            -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++<br> \
&gt;&gt;&gt;&gt;&gt; &gt;&gt; +            path/to/libcxx<br> &gt;&gt;&gt;&gt;&gt; \
&gt;&gt; +      &lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;         \
&lt;li&gt;&lt;code&gt;make&lt;/code&gt;&lt;/li&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;  \
&lt;/ul&gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; &gt;&gt; cfe-commits mailing list<br>
</span>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br> <span \
class="">&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" \
target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br> \
&gt;&gt;&gt;&gt;&gt; &gt;<br> &gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; &gt; cfe-commits mailing list<br>
</span>&gt;&gt;&gt;&gt;&gt; &gt; <a \
href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br> <span \
class="">&gt;&gt;&gt;&gt;&gt; &gt; <a \
href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" \
target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br> \
&gt;&gt;&gt;&gt;&gt; &gt;<br> &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Alexey Samsonov, Mountain View, CA<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; cfe-commits mailing list<br>
</span>&gt;&gt; <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
 <span class="">&gt;&gt; <a \
href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" \
target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br> \
&gt;&gt;<br> &gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Alexey Samsonov<br>
</span>&gt; <a href="mailto:vonosmas@gmail.com">vonosmas@gmail.com</a><br>
</blockquote></div><br></div>



_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic