[llvm-branch-commits] [libcxx] change the visibility of libc++ header to public in libcxx module (PR #91182)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon May 6 03:46:47 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: RichardLuo (RichardLuo0)

<details>
<summary>Changes</summary>

This PR addresses a problem that headers may not be able to be found if `#include` is used with std modules.

Consider the following file:
```cpp
#include <boost/json.hpp>
import std;

int main(int, const char **) { }
```
boost will include something from libc++, but we are using [-nostdinc++](https://github.com/RichardLuo0/llvm-project/blob/15fdd47c4b110b64dc61f636e42e0484bf8bdbe0/libcxx/modules/CMakeLists.txt.in#L52), so the compiler can not find any default std header.
Therefore the locally built header needs to be public.

---
Full diff: https://github.com/llvm/llvm-project/pull/91182.diff


1 Files Affected:

- (modified) libcxx/modules/CMakeLists.txt.in (+2-2) 


``````````diff
diff --git a/libcxx/modules/CMakeLists.txt.in b/libcxx/modules/CMakeLists.txt.in
index e332d70cc16333..1f8f159e710cb9 100644
--- a/libcxx/modules/CMakeLists.txt.in
+++ b/libcxx/modules/CMakeLists.txt.in
@@ -41,7 +41,7 @@ target_sources(std
     std.cppm
 )
 
-target_include_directories(std SYSTEM PRIVATE @LIBCXX_CONFIGURED_INCLUDE_DIRS@)
+target_include_directories(std SYSTEM PUBLIC @LIBCXX_CONFIGURED_INCLUDE_DIRS@)
 
 if (NOT @LIBCXX_ENABLE_EXCEPTIONS@)
   target_compile_options(std PUBLIC -fno-exceptions)
@@ -67,7 +67,7 @@ target_sources(std.compat
     std.compat.cppm
 )
 
-target_include_directories(std.compat SYSTEM PRIVATE @LIBCXX_CONFIGURED_INCLUDE_DIRS@)
+target_include_directories(std.compat SYSTEM PUBLIC @LIBCXX_CONFIGURED_INCLUDE_DIRS@)
 
 if (NOT @LIBCXX_ENABLE_EXCEPTIONS@)
   target_compile_options(std.compat PUBLIC -fno-exceptions)

``````````

</details>


https://github.com/llvm/llvm-project/pull/91182


More information about the llvm-branch-commits mailing list