Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.   include(LLVMCheckLinkerFlag)
  17.   set(LLVM_LIBCXX_USED 0)
  18.   if(LLVM_ENABLE_LIBCXX)
  19.     if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
  20.       check_cxx_compiler_flag("-stdlib=libc++" CXX_COMPILER_SUPPORTS_STDLIB)
  21.       llvm_check_linker_flag(CXX "-stdlib=libc++" CXX_LINKER_SUPPORTS_STDLIB)
  22.       if(CXX_COMPILER_SUPPORTS_STDLIB AND CXX_LINKER_SUPPORTS_STDLIB)
  23.         append("-stdlib=libc++"
  24.           CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
  25.           CMAKE_MODULE_LINKER_FLAGS)
  26.         set(LLVM_LIBCXX_USED 1)
  27.       else()
  28.         message(WARNING "Can't specify libc++ with '-stdlib='")
  29.       endif()
  30.     else()
  31.       message(WARNING "Not sure how to specify libc++ for this compiler")
  32.     endif()
  33.   endif()
  34.  
  35.   if(LLVM_STATIC_LINK_CXX_STDLIB)
  36.     if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
  37.       check_cxx_compiler_flag("-static-libstdc++"
  38.                               CXX_COMPILER_SUPPORTS_STATIC_STDLIB)
  39.       llvm_check_linker_flag(CXX "-static-libstdc++" CXX_LINKER_SUPPORTS_STATIC_STDLIB)
  40.       if(CXX_COMPILER_SUPPORTS_STATIC_STDLIB AND
  41.         CXX_LINKER_SUPPORTS_STATIC_STDLIB)
  42.         append("-static-libstdc++"
  43.           CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
  44.           CMAKE_MODULE_LINKER_FLAGS)
  45.       else()
  46.         message(WARNING
  47.           "Can't specify static linking for the C++ standard library")
  48.       endif()
  49.     else()
  50.       message(WARNING "Not sure how to specify static linking of C++ standard "
  51.         "library for this compiler")
  52.     endif()
  53.   endif()
  54. endif()
  55.