summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShoaib Meenai <smeenai@fb.com>2018-04-24 19:47:39 +0000
committerShoaib Meenai <smeenai@fb.com>2018-04-24 19:47:39 +0000
commitf2650df77db1bcc3b9010bdedcdc79fcd5e82ca1 (patch)
tree08378f95fd2ffad2f5124dee9f4b1b92966fe0e4
parentc4d25a29229e48286b6352099907fda18ec6b109 (diff)
downloadbcm5719-llvm-f2650df77db1bcc3b9010bdedcdc79fcd5e82ca1.tar.gz
bcm5719-llvm-f2650df77db1bcc3b9010bdedcdc79fcd5e82ca1.zip
[cmake] Fix libc++ detection
-stdlib=libc++ is added to both the compilation and the link flags, but the logic for adding it was only checking if it was supported during compilation and not linking. This could lead to false positives, for example when using clang with libstdc++ (where the compiler would support -stdlib=libc++ but then linking would fail because of libc++ actually being unavailable). llvm-svn: 330761
-rw-r--r--llvm/cmake/modules/HandleLLVMStdlib.cmake6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/cmake/modules/HandleLLVMStdlib.cmake b/llvm/cmake/modules/HandleLLVMStdlib.cmake
index c0512ac34f6..a0706d8e084 100644
--- a/llvm/cmake/modules/HandleLLVMStdlib.cmake
+++ b/llvm/cmake/modules/HandleLLVMStdlib.cmake
@@ -13,10 +13,12 @@ if(NOT DEFINED LLVM_STDLIB_HANDLED)
endfunction()
include(CheckCXXCompilerFlag)
+ include(CheckLinkerFlag)
if(LLVM_ENABLE_LIBCXX)
if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
- check_cxx_compiler_flag("-stdlib=libc++" CXX_SUPPORTS_STDLIB)
- if(CXX_SUPPORTS_STDLIB)
+ check_cxx_compiler_flag("-stdlib=libc++" CXX_COMPILER_SUPPORTS_STDLIB)
+ check_linker_flag("-stdlib=libc++" CXX_LINKER_SUPPORTS_STDLIB)
+ if(CXX_COMPILER_SUPPORTS_STDLIB AND CXX_LINKER_SUPPORTS_STDLIB)
append("-stdlib=libc++"
CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS)
OpenPOWER on IntegriCloud