summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2019-11-07 14:51:25 -0800
committerSam Clegg <sbc@chromium.org>2019-11-12 10:08:40 -0800
commit4230fa939021e7a85f3ec06a4b1d8c661dfe329b (patch)
tree10799a22155c64ec24177237c59a63394b40af9a
parentef150e2ea51960e4a9689850d16b2dda355cdcd8 (diff)
downloadbcm5719-llvm-4230fa939021e7a85f3ec06a4b1d8c661dfe329b.tar.gz
bcm5719-llvm-4230fa939021e7a85f3ec06a4b1d8c661dfe329b.zip
[libcxxabi] Prevent cmake from removing our explicit system C++ include paths
We build with `-nostdinc++` and add our own header path via `LIBCXXABI_LIBCXX_INCLUDES`. However cmake tried to be clever and if `LIBCXXABI_LIBCXX_INCLUDES` happens to match the compilers system path it will remove the `-I` flag meaning we can't access any C++ headers. Ideally cmake would be able see that we are using `-nostdinc++` and disable this behaviour. Differential Revision: https://reviews.llvm.org/D69973
-rw-r--r--libcxxabi/CMakeLists.txt7
1 files changed, 7 insertions, 0 deletions
diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt
index fafb7774936..d914b6e0290 100644
--- a/libcxxabi/CMakeLists.txt
+++ b/libcxxabi/CMakeLists.txt
@@ -270,6 +270,13 @@ include(config-ix)
if (LIBCXXABI_HAS_NOSTDINCXX_FLAG)
list(APPEND LIBCXXABI_COMPILE_FLAGS -nostdinc++)
+ # cmake 3.14 and above remove system include paths that are explicitly
+ # passed on the command line. We build with -nostdinc++ and explicitly add
+ # just the libcxx system include paths with -I on the command line.
+ # Setting CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES effectively prevents cmake
+ # from removing these.
+ # See: https://gitlab.kitware.com/cmake/cmake/issues/19227
+ set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "")
# Remove -stdlib flags to prevent them from causing an unused flag warning.
string(REPLACE "-stdlib=libc++" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
string(REPLACE "-stdlib=libstdc++" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
OpenPOWER on IntegriCloud