summaryrefslogtreecommitdiffstats
path: root/clang/docs/Modules.rst
Commit message (Collapse)AuthorAgeFilesLines
* [modules] Support combining 'textual' with 'private'.Richard Smith2014-10-241-6/+5
| | | | llvm-svn: 220589
* [modules] Add support for 'textual header' directives.Richard Smith2014-10-221-5/+14
| | | | | | | | This allows a module to specify that it logically contains a file, but that said file is non-modular and intended for textual inclusion. This allows layering checks to work properly in the presence of such files. llvm-svn: 220448
* [modules] Add support for #include_next.Richard Smith2014-10-201-0/+13
| | | | | | | | | | | | #include_next interacts poorly with modules: it depends on where in the list of include paths the current file was found. Files covered by module maps are not found in include search paths when building the module (and are not found in include search paths when @importing the module either), so this isn't really meaningful. Instead, we fake up the result that #include_next *should* have given: find the first path that would have resulted in the given file being picked, and search from there onwards. llvm-svn: 220177
* Enable both C and C++ modules with -fmodules, by switching -fcxx-modules toRichard Smith2014-09-301-13/+8
| | | | | | | | | | | | | | | | | being on by default. -fno-cxx-modules can still be used to enable C modules but not C++ modules, but C++ modules is not significantly less stable than C modules any more. Also remove some of the scare words from the modules documentation. We're certainly not going to remove modules support (though we might change the interface), and it works well enough to bootstrap and build lots of non-trivial code. Note that this does not represent a commitment to the current interface nor implementation, and we still intend to follow whatever direction the C and C++ committees take regarding modules support. llvm-svn: 218717
* Update modules documentation now that C++ support is working pretty well.Richard Smith2014-09-291-6/+3
| | | | llvm-svn: 218614
* [modules] Slightly expand module semantics documentation.Richard Smith2014-07-241-1/+3
| | | | llvm-svn: 213838
* Initial implementation of -modules-earch-all option, for searching for ↵John Thompson2014-04-231-0/+3
| | | | | | symbols in non-imported modules. llvm-svn: 206977
* Fix sphinx-build warnings in clang docs.Reid Kleckner2014-04-181-2/+2
| | | | llvm-svn: 206661
* Rename lib/Headers/module.map to module.modulemapBen Langmuir2014-04-171-1/+1
| | | | | | Don't install a file using the legacy spelling. llvm-svn: 206431
* Documentation: remove a spurious '1' and wrap to 80 columnsDmitri Gribenko2014-03-281-1/+4
| | | | llvm-svn: 205035
* Document module.private.modulemap and module_private.map.Douglas Gregor2014-03-281-1/+58
| | | | | | Requested in <rdar://problem/16188740>. llvm-svn: 205030
* Add a new spelling for module map files 'module.modulemap'Ben Langmuir2014-03-191-4/+7
| | | | | | | | | | | | | | | This name, while more verbose, plays more nicely with tools that use file extensions to determine file types. The existing spelling 'module.map' will continue to work, but the new spelling will take precedence. In frameworks, this new filename will only go in a new 'Modules' sub-directory. Similarly, add a module.private.modulemap corresponding to module_private.map. llvm-svn: 204261
* Add [extern_c] attribute for modules, allowing a C module to be imported ↵Richard Smith2014-03-021-2/+4
| | | | | | within an extern "C" block in C++ code. llvm-svn: 202615
* If a module A exports a macro M, and a module B imports that macro and #undef'sRichard Smith2014-03-011-0/+34
| | | | | | | | | | | | | | it, importers of B should not see the macro. This is complicated by the fact that A's macro could also be visible through a different path. The rules (as hashed out on cfe-commits) are included as a documentation update in this change. With this, the number of regressions in libc++'s testsuite when modules are enabled drops from 47 to 7. Those remaining 7 are also macro-related, and are due to remaining bugs in this change (in particular, the handling of submodules is imperfect). llvm-svn: 202560
* Modules: Fix malformed reStructuredTextDavid Majnemer2014-02-251-1/+1
| | | | llvm-svn: 202117
* Allow a new syntax in a module requires-declaration:Richard Smith2013-10-281-2/+5
| | | | | | | | | | | | requires ! feature The purpose of this is to allow (for instance) the module map for /usr/include to exclude <tgmath.h> and <complex.h> when building in C++ (these headers are instead provided by the C++ standard library in this case, and the glibc C <tgmath.h> header would otherwise try to include <complex.h>, resulting in a module cycle). llvm-svn: 193549
* Note that modules are supported for C/Objective-C, and have syntax in ObjC.Douglas Gregor2013-09-271-13/+14
| | | | llvm-svn: 191562
* Add -fmodule-map-file option.Daniel Jasper2013-09-241-0/+3
| | | | | | | | | | | | | | | With this option, arbitrarily named module map files can be specified to be loaded as required for headers in the respective (sub)directories. This, together with the extern module declaration allows for specifying module maps in a modular fashion without the need for files called "module.map". Among other things, this allows a directory to contain two modules that are completely independent of one another. Review: http://llvm-reviews.chandlerc.com/D1697. llvm-svn: 191284
* Module use declarations (II)Daniel Jasper2013-09-241-1/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Review: http://llvm-reviews.chandlerc.com/D1546. I have picked up this patch form Lawrence (http://llvm-reviews.chandlerc.com/D1063) and did a few changes. From the original change description (updated as appropriate): This patch adds a check that ensures that modules only use modules they have so declared. To this end, it adds a statement on intended module use to the module.map grammar: use module-id A module can then only use headers from other modules if it 'uses' them. This enforcement is off by default, but may be turned on with the new option -fmodules-decluse. When enforcing the module semantics, we also need to consider a source file part of a module. This is achieved with a compiler option -fmodule-name=<module-id>. The compiler at present only applies restrictions to the module directly being built. llvm-svn: 191283
* Support for modular module-map-filesDaniel Jasper2013-09-111-0/+4
| | | | | | | | | | | | | | | | | | | 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 llvm-svn: 190497
* [docs] Prominently note modules are experimental.Sean Silva2013-09-091-6/+6
| | | | | | | | | | It was really hard to tell that modules are experimental. This makes it really clear by * Noting the experimental status in the title. * Moving the "warning" above the table of contents. llvm-svn: 190340
* Add option to disable module loading.Daniel Jasper2013-08-051-0/+5
| | | | | | | This patch was created by Lawrence Crowl and reviewed in: http://llvm-reviews.chandlerc.com/D963 llvm-svn: 187738
* This patch adds new private headers to the module map. PrivateLawrence Crowl2013-06-201-2/+5
| | | | | | | headers may be included from within the module, but not from outside the module. llvm-svn: 184471
* [Modules] Convert module specific -fno-modules-autolink into -fno-autolink.Daniel Dunbar2013-04-161-2/+2
| | | | | | | | | - There is no reason to have a modules specific flag for disabling autolinking. Instead, convert the existing flag into -fno-autolink (which should cover other autolinking code generation paths like #pragmas if and when we support them). llvm-svn: 179612
* <rdar://problem/13509689> Introduce -module-file-info option that provides ↵Douglas Gregor2013-03-271-0/+3
| | | | | | | | | | | information about a particular module file. This option can be useful for end users who want to know why they ended up with a ton of different variants of the "std" module in their module cache. This problem should go away over time, as we reduce the need for module variants, but it will never go away entirely. llvm-svn: 178148
* <rdar://problem/13434605> Periodically prune the module cache so that it ↵Douglas Gregor2013-03-251-0/+6
| | | | | | does not grow forever. llvm-svn: 177918
* Documentation: fix a typo and formattingDmitri Gribenko2013-03-221-2/+2
| | | | llvm-svn: 177722
* Add future directions for modulesDouglas Gregor2013-03-221-0/+16
| | | | llvm-svn: 177707
* More modules documentation, including the straw-man import declaration ↵Douglas Gregor2013-03-221-28/+90
| | | | | | syntax and "how to modularize a platform". llvm-svn: 177706
* More documentation on the module map language.Douglas Gregor2013-03-221-5/+464
| | | | llvm-svn: 177704
* [docs] Point inquisitive users to existing module.map files.Sean Silva2013-03-201-0/+4
| | | | llvm-svn: 177552
* [docs] Prominently note that modules are expemental.Sean Silva2013-03-201-0/+4
| | | | | | And ask for people to try it out and send us bug reports! llvm-svn: 177551
* Fix typo and grammaro in modules documentationDouglas Gregor2013-03-201-2/+2
| | | | llvm-svn: 177544
* Work-in-progress documentation on the experimental modules feature.Douglas Gregor2013-03-201-0/+159
llvm-svn: 177491
OpenPOWER on IntegriCloud