From: Sam Clegg Date: Thu, 7 Nov 2019 22:51:25 +0000 (-0800) Subject: [libcxxabi] Prevent cmake from removing our explicit system C++ include paths X-Git-Tag: llvmorg-11-init~4446 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4230fa939021e7a85f3ec06a4b1d8c661dfe329b;p=platform%2Fupstream%2Fllvm.git [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 --- diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt index fafb777..d914b6e 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}")