diff --git a/libcxxabi/src/CMakeLists.txt b/libcxxabi/src/CMakeLists.txt --- a/libcxxabi/src/CMakeLists.txt +++ b/libcxxabi/src/CMakeLists.txt @@ -57,6 +57,9 @@ include_directories("${LIBCXXABI_LIBCXX_INCLUDES}") +# stdlib_stdexcept.cpp depends on libc++ internals. +include_directories("${LIBCXXABI_LIBCXX_PATH}") + if (LIBCXXABI_HAS_CXA_THREAD_ATEXIT_IMPL) add_definitions(-DHAVE___CXA_THREAD_ATEXIT_IMPL) endif() diff --git a/libcxxabi/src/stdlib_stdexcept.cpp b/libcxxabi/src/stdlib_stdexcept.cpp --- a/libcxxabi/src/stdlib_stdexcept.cpp +++ b/libcxxabi/src/stdlib_stdexcept.cpp @@ -6,7 +6,6 @@ // //===----------------------------------------------------------------------===// -#include "../../libcxx/src/include/refstring.h" #include "stdexcept" #include "new" #include @@ -14,6 +13,9 @@ #include #include +// This includes an implementation file from libc++. +#include "src/include/refstring.h" + static_assert(sizeof(std::__libcpp_refstring) == sizeof(const char *), ""); namespace std // purposefully not using versioning namespace diff --git a/llvm/utils/gn/secondary/libcxxabi/src/BUILD.gn b/llvm/utils/gn/secondary/libcxxabi/src/BUILD.gn --- a/llvm/utils/gn/secondary/libcxxabi/src/BUILD.gn +++ b/llvm/utils/gn/secondary/libcxxabi/src/BUILD.gn @@ -62,6 +62,9 @@ include_dirs = [ "//libcxxabi/include", "//libcxx/include", + + # stdlib_stdexcept.cpp depends on libc++ internals. + "//libcxx", ] cflags_cc = [ "-nostdinc++" ] defines = [ "_LIBCXXABI_BUILDING_LIBRARY" ]