HandleLLVMStdlib.cmake 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # This CMake module is responsible for setting the standard library to libc++
  2. # if the user has requested it.
  3. if(NOT DEFINED LLVM_STDLIB_HANDLED)
  4. set(LLVM_STDLIB_HANDLED ON)
  5. if(CMAKE_COMPILER_IS_GNUCXX)
  6. set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)
  7. elseif( MSVC )
  8. set(LLVM_COMPILER_IS_GCC_COMPATIBLE OFF)
  9. elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
  10. set(LLVM_COMPILER_IS_GCC_COMPATIBLE ON)
  11. endif()
  12. function(append value)
  13. foreach(variable ${ARGN})
  14. set(${variable} "${${variable}} ${value}" PARENT_SCOPE)
  15. endforeach(variable)
  16. endfunction()
  17. include(CheckCXXCompilerFlag)
  18. if(LLVM_ENABLE_LIBCXX)
  19. if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
  20. check_cxx_compiler_flag("-stdlib=libc++" CXX_SUPPORTS_STDLIB)
  21. if(CXX_SUPPORTS_STDLIB)
  22. append("-stdlib=libc++"
  23. CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
  24. CMAKE_MODULE_LINKER_FLAGS)
  25. if(LLVM_ENABLE_LIBCXXABI)
  26. append("-lc++abi"
  27. CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
  28. CMAKE_MODULE_LINKER_FLAGS)
  29. endif()
  30. else()
  31. message(WARNING "Can't specify libc++ with '-stdlib='")
  32. endif()
  33. else()
  34. message(WARNING "Not sure how to specify libc++ for this compiler")
  35. endif()
  36. endif()
  37. endif()