| module bmalloc { |
| // List of "semi-public" bmalloc headers. What does "semi-public" mean? These are |
| // the headers which, in practice, are included by WTF headers. WTF headers are |
| // exported as part of the WebKit SPI, and therefore these headers need to be |
| // buildable as a clang module. |
| // It's important that this list excludes pas_lock.h. pas_lock.h produces |
| // an #error if OS_UNFAIR_LOCK_INLINE is not 1, because bmalloc expects |
| // the underlying OS lock APIs to be confifgured in that fashion (and |
| // has presumably been tested only in that configuration.) In a modules build, |
| // that configuration can't be enforced by the including code (bmalloc) but |
| // instead all downstream consumers of bmalloc - right up to WebKit and things |
| // that depend upon WebKit - would individually need to set OS_UNFAIR_LOCK_INLINE. |
| // Or, bmalloc would need to be tested in two different configurations instead |
| // of producing an #error. This complexity is the main reason why bmalloc |
| // has a narrower, hand-curated list of headers in its module. |
| explicit module bmalloc_cpp { |
| requires cplusplus11 |
| header "Algorithm.h" |
| header "BAssert.h" |
| header "BCompiler.h" |
| header "BInline.h" |
| header "BPlatform.h" |
| header "BVMTags.h" |
| header "CompactAllocationMode.h" |
| header "Gigacage.h" |
| header "GigacageConfig.h" |
| header "GigacageKind.h" |
| header "IsoHeap.h" |
| header "IsoHeapInlines.h" |
| header "Logging.h" |
| header "Sizes.h" |
| header "TZoneHeap.h" |
| header "TZoneHeapInlines.h" |
| } |
| // The following header contains only plain C definitions so |
| // we declare this in a submodule which doesn't require cplusplus11 |
| explicit module bexport { |
| header "BExport.h" |
| } |
| // The following also do not need cplusplus11 and also need |
| // to be colocated in one module since any headers including |
| // most of these will end up requiring the definitions from |
| // the others. Specifically, we don't want lots of downstream |
| // files to need to explicitly include pas_utils_prefix.h, |
| // yet many of these other files define things in terms of |
| // the contents of that file. |
| explicit module pas { |
| header "pas_allocation_mode.h" |
| header "pas_config.h" |
| header "pas_config_prefix.h" |
| header "pas_platform.h" |
| header "pas_thread.h" |
| header "pas_utils.h" |
| header "pas_utils_prefix.h" |
| } |
| export * |
| } |