blob: 487242492772c06321e23bf80be2e6df2007059f [file] [log] [blame] [edit]
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 *
}