diff options
author | Alexey Samsonov <samsonov@google.com> | 2014-02-04 07:55:18 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2014-02-04 07:55:18 +0000 |
commit | caeb7f94c75dbc8fcf30607f72546c8f097d1b42 (patch) | |
tree | e481730cab3ee594d3b581f34b1d763e16efa469 /cmake/config-ix.cmake | |
parent | de2e0bc3668ac0e2e64bbef329766fa8119c3204 (diff) | |
download | llvm-caeb7f94c75dbc8fcf30607f72546c8f097d1b42.tar.gz llvm-caeb7f94c75dbc8fcf30607f72546c8f097d1b42.tar.bz2 llvm-caeb7f94c75dbc8fcf30607f72546c8f097d1b42.tar.xz |
[CMake] Add -stdlib=libc++ to host Clang build flags before performing any header search
If LLVM_ENABLE_LIBCXX is specified, we should append -stdlib=libc++ to build
flags as early as possible, in particular, before we check for header presence
(as -stdlib=libc++ modifies header lookup rules). Otherwise we can find a header
at configure time (w/o -stdlib=libc++) but fail to find it at build time
(with -stdlib=libc++). See PR18569 for more details.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200744 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'cmake/config-ix.cmake')
-rwxr-xr-x | cmake/config-ix.cmake | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index c8a8571089..c9a5044099 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -34,6 +34,25 @@ function(check_type_exists type files variable) " ${variable}) endfunction() +function(append_if condition value) + if (${condition}) + foreach(variable ${ARGN}) + set(${variable} "${${variable}} ${value}" PARENT_SCOPE) + endforeach(variable) + endif() +endfunction() + +include(CheckCXXCompilerFlag) +if( LLVM_COMPILER_IS_GCC_COMPATIBLE ) + if( LLVM_ENABLE_LIBCXX ) + check_cxx_compiler_flag("-stdlib=libc++" CXX_SUPPORTS_STDLIB) + append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_CXX_FLAGS) + append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_EXE_LINKER_FLAGS) + append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_SHARED_LINKER_FLAGS) + append_if(CXX_SUPPORTS_STDLIB "-stdlib=libc++" CMAKE_MODULE_LINKER_FLAGS) + endif() +endif() + # include checks check_include_file_cxx(cxxabi.h HAVE_CXXABI_H) check_include_file(dirent.h HAVE_DIRENT_H) @@ -317,8 +336,6 @@ if (LIBXML2_FOUND) endif () endif () -include(CheckCXXCompilerFlag) - check_cxx_compiler_flag("-Wno-variadic-macros" SUPPORTS_NO_VARIADIC_MACROS_FLAG) set(USE_NO_MAYBE_UNINITIALIZED 0) |