brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · a7e138a Raw
55 lines · plain
1# This CMake module is responsible for setting the standard library to libc++2# if the user has requested it.3 4include(DetermineGCCCompatible)5 6if(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(CheckLinkerFlag)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      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_FLAGS25          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      check_linker_flag(CXX "-static-libstdc++" CXX_LINKER_SUPPORTS_STATIC_STDLIB)40      if(CXX_COMPILER_SUPPORTS_STATIC_STDLIB AND41        CXX_LINKER_SUPPORTS_STATIC_STDLIB)42        append("-static-libstdc++"43          CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS44          CMAKE_MODULE_LINKER_FLAGS)45      else()46        message(WARNING47          "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()54endif()55