[libcxx-commits] [PATCH] D144994: [Draft][libc++][modules] Adds std module.

Daniel Ruoso via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Mon Mar 20 11:44:50 PDT 2023


ruoso added inline comments.


================
Comment at: libcxx/docs/Modules.rst:136
+The modules will shipped in a directory structure similar to the include.
+Includes are stored in ``<PREFIX>/modules/c++/v1`` modules will be stored in
+``<PREFIX>/modules/c++/v1/``.
----------------
aaronmondal wrote:
> tschuett wrote:
> > I believe this is confusing. I thought that you want to store everything underneath `c++`? Additionally you use the same path  for includes and modules.
> Typo? Should probably be "Includes are stored in `<prefix>/include/c++/v1`, modules in `<prefix>/modules/c++/v1`".
> 
> I think this makes sense. Modules can't be `#include`d anyways so there is a need for them to live in an `include/` directory. And for those using a different ABIs this leaves the possibility to have
> ```
> .../include/c++/v1
> .../include/c++/v2
> .../modules/c++/v1
> .../modules/c++/v2
> ```
> or similar to clearly differentiate the headers/module interfaces.
`$PREFIX/modules` is a new path that doesn't exist in the Filesystem Hierarchy Standard.

The source files for the module units is indeed a arch-independent resource, therefore the correct directory would be something under `$PREFIX/share`

If we ever intend to ship BMI files, they would belong in `$libdir`.

Here's how it would look like if we go in that direction:

```
$PREFIX/
   $libdir/
       libc++.so
       libc++.so.module-info
       c++/
           modules/
                libc++/
                      std.gcm.deadbeef1234
   share/
       c++/
           modules/
                 libc++/
                       std.cppm
```

the `libc++.so.module-info` file would have the metadata necessary for someone to understand how to produce their own BMI as well as potentially reuse the shipped BMI if it just so happen that they can.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144994/new/

https://reviews.llvm.org/D144994



More information about the libcxx-commits mailing list