summaryrefslogtreecommitdiff
path: root/docs/Modules.rst
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-09-11 07:20:44 +0000
committerDaniel Jasper <djasper@google.com>2013-09-11 07:20:44 +0000
commit5f0a3524d184f7fcda856aaa17686064e45cacd3 (patch)
treedebc880497cf294485a19b3959da46d7e4cede40 /docs/Modules.rst
parent56bed97d750b5a67707f266cc06e641ac5222612 (diff)
downloadclang-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.rst4
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.