Taints upcoming store and adds bogus conditional branches else where. Now as a separa...
[oota-llvm.git] / cmake / modules / HandleLLVMStdlib.cmake
1 # This CMake module is responsible for setting the standard library to libc++
2 # if the user has requested it.
3
4 include(DetermineGCCCompatible)
5
6 if(NOT DEFINED LLVM_STDLIB_HANDLED)
7   set(LLVM_STDLIB_HANDLED ON)
8
9   function(append value)
10     foreach(variable ${ARGN})
11       set(${variable} "${${variable}} ${value}" PARENT_SCOPE)
12     endforeach(variable)
13   endfunction()
14
15   include(CheckCXXCompilerFlag)
16   if(LLVM_ENABLE_LIBCXX)
17     if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
18       check_cxx_compiler_flag("-stdlib=libc++" CXX_SUPPORTS_STDLIB)
19       if(CXX_SUPPORTS_STDLIB)
20         append("-stdlib=libc++"
21           CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
22           CMAKE_MODULE_LINKER_FLAGS)
23         if(LLVM_ENABLE_LIBCXXABI)
24           append("-lc++abi"
25             CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
26             CMAKE_MODULE_LINKER_FLAGS)
27         endif()
28       else()
29         message(WARNING "Can't specify libc++ with '-stdlib='")
30       endif()
31     else()
32       message(WARNING "Not sure how to specify libc++ for this compiler")
33     endif()
34   endif()
35 endif()