diff options
author | Daniel Jasper <djasper@google.com> | 2013-09-11 07:20:44 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-09-11 07:20:44 +0000 |
commit | 5f0a3524d184f7fcda856aaa17686064e45cacd3 (patch) | |
tree | debc880497cf294485a19b3959da46d7e4cede40 /docs/Modules.rst | |
parent | 56bed97d750b5a67707f266cc06e641ac5222612 (diff) | |
download | clang-5f0a3524d184f7fcda856aaa17686064e45cacd3.tar.gz clang-5f0a3524d184f7fcda856aaa17686064e45cacd3.tar.bz2 clang-5f0a3524d184f7fcda856aaa17686064e45cacd3.tar.xz |
Support for modular module-map-files
This patch is the first step to make module-map-files modular (instead
of requiring a single "module.map"-file per include directory). This
step adds a new "extern module" declaration that enables
module-map-files to reference one another along with a very basic
implementation.
The next steps are:
* Combine this with the use-declaration (from
http://llvm-reviews.chandlerc.com/D1546) in order to only load module
map files required for a specific compilation.
* Add an additional flag to start with a specific module-map-file (instead
of requiring there to be at least one "module.map").
Review: http://llvm-reviews.chandlerc.com/D1637
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@190497 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/Modules.rst')
-rw-r--r-- | docs/Modules.rst | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/docs/Modules.rst b/docs/Modules.rst index c086644ee3..8c20301315 100644 --- a/docs/Modules.rst +++ b/docs/Modules.rst @@ -238,6 +238,7 @@ Module map files use a simplified form of the C99 lexer, with the same rules for ``conflict`` ``framework`` ``requires`` ``exclude`` ``header`` ``private`` ``explicit`` ``link`` ``umbrella`` + ``extern`` Module map file --------------- @@ -263,6 +264,7 @@ A module declaration describes a module, including the headers that contribute t *module-declaration*: ``explicit``:sub:`opt` ``framework``:sub:`opt` ``module`` *module-id* *attributes*:sub:`opt` '{' *module-member** '}' + ``extern`` ``module`` *module-id* *string-literal* The *module-id* should consist of only a single *identifier*, which provides the name of the module being defined. Each module shall have a single definition. @@ -295,6 +297,8 @@ Modules can have a number of different kinds of members, each of which is descri *config-macros-declaration* *conflict-declaration* +An extern module references a module defined by the *module-id* in a file given by the *string-literal*. The file can be referenced either by an absolute path or by a path relative to the current map file. + Requires declaration ~~~~~~~~~~~~~~~~~~~~ A *requires-declaration* specifies the requirements that an importing translation unit must satisfy to use the module. |