[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:       Eric Fiselier <eric () efcs ! ca>
Date:       2015-07-29 23:43:52
Message-ID: CAB=TDAVEq3xa84uJQN-od9nAKM2FqVUnJeXQzMOmpTQodcuJ+g () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


I'll revert the commits now.
On Jul 29, 2015 7:41 PM, "Alexey Samsonov" <vonosmas@gmail.com> wrote:

> Eric, the build still fails due to the issue with compiler identification
> described above...
> 
> On Wed, Jul 29, 2015 at 4:33 PM, Alexey Samsonov <vonosmas@gmail.com>
> wrote:
> 
> > Trying the build now.
> > 
> > +Brad for a weird CMake issue. Looks like CMake is unable to detect
> > CMAKE_CXX_COMPILER_VERSION if I pass trunk Clang as CMAKE_CXX_COMPILER, \
> > and pass "-fsanitize=thread" as CMAKE_CXX_FLAGS (Compiler \
> > identification is determined as "Clang" instead
> > of "Clang 3.8.0").
> > 
> > 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/msa \
> > > n/tests/../libcxx_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/msa \
> > > n/tests/../libcxx_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/msa \
> > > n/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/msa \
> > > n/tests/../libcxx_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 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > > -    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) \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > >                 \
> > > > > > > > > > -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_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
> > 
> > ...


[Attachment #5 (text/html)]

<p dir="ltr">I&#39;ll revert the commits now.</p>
<div class="gmail_quote">On Jul 29, 2015 7:41 PM, &quot;Alexey \
Samsonov&quot; &lt;<a \
href="mailto:vonosmas@gmail.com">vonosmas@gmail.com</a>&gt; wrote:<br \
type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 \
.8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Eric, the \
build still fails due to the issue with compiler identification described \
above...</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, \
Jul 29, 2015 at 4:33 PM, Alexey Samsonov <span dir="ltr">&lt;<a \
href="mailto:vonosmas@gmail.com" \
target="_blank">vonosmas@gmail.com</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr">Trying the build \
now.<div><br></div><div>+Brad for a weird CMake issue. Looks like CMake is \
unable to detect CMAKE_CXX_COMPILER_VERSION if I pass trunk Clang as \
CMAKE_CXX_COMPILER, and pass &quot;-fsanitize=thread&quot; as \
CMAKE_CXX_FLAGS (Compiler identification is determined as &quot;Clang&quot; \
instead</div><div>of &quot;Clang 3.8.0&quot;).</div></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><br>
On Wed, Jul 29, 2015 at 6:44 PM, Alexey Samsonov &lt;<a \
href="mailto:vonosmas@gmail.com" target="_blank">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>&gt; On Wed, Jul 29, 2015 at 3:05 PM, Eric Fiselier &lt;<a \
href="mailto:eric@efcs.ca" target="_blank">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>&gt;&gt; On Jul 29, 2015 6:03 PM, &quot;Alexey Samsonov&quot; \
&lt;<a href="mailto:samsonov@google.com" \
target="_blank">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" \
target="_blank">kcc@google.com</a>&gt;<br> <span>&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>&gt;&gt;&gt;&gt; &lt;<a \
href="mailto:eugeni.stepanov@gmail.com" \
target="_blank">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" \
target="_blank">kcc@google.com</a>&gt;<br> <div><div>&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/test \
s/../libcxx_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/test \
s/../libcxx_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/libc \
xx_msan-with-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/test \
s/../libcxx_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>&gt;&gt;&gt;&gt;&gt; &gt; On Wed, Jul 29, 2015 at 2:07 \
PM, Eric Fiselier &lt;<a href="mailto:eric@efcs.ca" \
target="_blank">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_ll \
vm-2Dproject-3Frev-3D243574-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r \
=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=uhA5xeCmeb62DCjafAxwYxKsHVto17U8OB5E6spuuLM&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=243574&amp;view=rev</a><br>
 <span>&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>&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=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCx \
k&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=s_xhAZMrnO8U8okhkNDzNzcDITACUHk5DUZZ-MqMA8c&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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_CMakeLists.txt-3Frev-3D243574-26r1-3D243573-26r2-3 \
D243574-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8Syn \
gJ70KdZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=XlQ0eEQ1jerprCUru3_9TfexAAz2FMXzcEA_GsI-zFw&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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_cmake_Modules_FindLLVM.cmake-3Frev-3D243574-26view \
-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASR \
OnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=x_CReKLqD2zyuNmbotOjqxHkTDpkLATwTIPFBC3e_bQ&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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_cmake_Modules_HandleLibCXXABI.cmake-3Frev-3D243574 \
-26r1-3D243573-26r2-3D243574-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ \
&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=WOs2-ytbn4NMBxibk0WAmy6Ggw9Z-vbwShcSmAnW0Vg&e=" \
rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/libcxx/ \
trunk/cmake/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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_cmake_Modules_HandleLibcxxFlags.cmake-3Frev-3D2435 \
74-26view-3Dauto&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70K \
dZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=qIRUMej9r1HO4FPy58Jli656GLgVXELme6XiWFuOPrI&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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_cmake_config-2Dix.cmake-3Frev-3D243574-26r1-3D2435 \
73-26r2-3D243574-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvK \
MW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=grjvoZ61lCTMzACPg3Md05XaCQh42GgqGUvrlkP7hSE&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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_lib_CMakeLists.txt-3Frev-3D243574-26r1-3D243573-26 \
r2-3D243574-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob \
8SyngJ70KdZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=66N71RfGEWf7P8sU8JXxp1uxsuy5xvq6waRacWC2j_c&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>&gt;&gt;&gt;&gt;&gt; &gt;&gt; <a \
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_ll \
vm-2Dproject_libcxx_trunk_test_CMakeLists.txt-3Frev-3D243574-26r1-3D243573-2 \
6r2-3D243574-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_O \
b8SyngJ70KdZISM_ASROnREeq0cCxk&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=m1pkgBlSD5nCPVQYnAFFSt4FGp_QPppsD6YJA0tLhhY&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=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCx \
k&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=s_xhAZMrnO8U8okhkNDzNzcDITACUHk5DUZZ-MqMA8c&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a><br> \
<div><div>&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=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCx \
k&m=5rzkCo9Ns7yFebSf8LFZvDrSpyw7TdyD6FBmtucoDzw&s=s_xhAZMrnO8U8okhkNDzNzcDITACUHk5DUZZ-MqMA8c&e=" \
rel="noreferrer" target="_blank">lit.site.cfg.in</a><br> \
<span>&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</span></blockquote></div></div></blockquote></div></div>...</blockquote></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