summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/ModuleMap.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Within the module representation, generalize the notion of an umbrellaDouglas Gregor2011-12-081-7/+7
| | | | | | | | | | header to also support umbrella directories. The umbrella directory for an umbrella header is the directory in which the umbrella header resides. No functionality change yet, but it's coming. llvm-svn: 146158
* Convert paths to native format before constructing aDouglas Gregor2011-12-081-5/+12
| | | | | | directory_iterator for them. llvm-svn: 146154
* Implement inference for the "Private" submodule corresponding toDouglas Gregor2011-12-071-5/+51
| | | | | | private headers in a framework. llvm-svn: 146082
* Implement basic support for private headers in frameworks. In essence,Douglas Gregor2011-12-071-20/+108
| | | | | | | | | when we load a module map (module.map) from a directory, also load a private module map (module_private.map) for that directory, if present. That private module map can inject a new submodule that captures private headers. llvm-svn: 146012
* Remove misleading error messageDouglas Gregor2011-12-061-2/+1
| | | | llvm-svn: 145958
* When inferring a module map for a framework, infer subframeworkDouglas Gregor2011-12-061-9/+33
| | | | | | modules for each of its subframeworks. llvm-svn: 145957
* Allow inferred submodules for any (sub)module that has an umbrella headerDouglas Gregor2011-12-061-9/+8
| | | | llvm-svn: 145945
* Implement modules support for subframeworks (aka embeddedDouglas Gregor2011-12-061-19/+39
| | | | | | | | frameworks). A submodule can now be labeled as a "framework", and header search will look into the appropriate Headers/PrivateHeaders subdirectories for named headers. llvm-svn: 145941
* Minor tweak to prepare for submodules with umbrella headers. No actualDouglas Gregor2011-12-061-7/+13
| | | | | | functionality change yet. llvm-svn: 145938
* Implement inferred submodules support, which (when requested)Douglas Gregor2011-12-061-30/+92
| | | | | | | implicitly generates submodules corresponding to the headers that fall within a module. llvm-svn: 145887
* Parse inferred submodules in module maps, track their contents inDouglas Gregor2011-12-051-1/+103
| | | | | | | Module, and (de-)serialize this information. Semantics of inferred submodules to follow. llvm-svn: 145864
* Inferred framework modules automatically export anything they importDouglas Gregor2011-12-051-0/+5
| | | | | | (i.e., 'export *'), to better match the semantics of headers. llvm-svn: 145813
* Implement support for wildcard exports in modules, allowing a moduleDouglas Gregor2011-12-051-1/+8
| | | | | | | | to re-export anything that it imports. This opt-in feature makes a module behave more like a header, because it can be used to re-export the transitive closure of a (sub)module's dependencies. llvm-svn: 145811
* When writing a module file, keep track of the set of (sub)modules thatDouglas Gregor2011-12-051-0/+20
| | | | | | | it imports, establishing dependencies at the (sub)module granularity. This is not a user-visible change (yet). llvm-svn: 145808
* Implementing parsing and resolution of module export declarationsDouglas Gregor2011-12-021-1/+137
| | | | | | | | within module maps, which will (eventually) be used to re-export a module from another module. There are still some pieces missing, however. llvm-svn: 145665
* Unbreak build with GCC. Clang is too lame to diagnose this particular ↵Douglas Gregor2011-11-301-2/+0
| | | | | | ill-formedness llvm-svn: 145539
* Promote ModuleMap::Module to a namespace-scope class in the BasicDouglas Gregor2011-11-301-87/+7
| | | | | | | | | library, since modules cut across all of the libraries. Rename serialization::Module to serialization::ModuleFile to side-step the annoying naming conflict. Prune a bunch of ModuleMap.h includes that are no longer needed (most files only needed the Module type). llvm-svn: 145538
* Implement (de-)serialization of the description of a module and itsDouglas Gregor2011-11-301-0/+17
| | | | | | | | | submodules. This information will eventually be used for name hiding when dealing with submodules. For now, we only use it to ensure that the module "key" returned when loading a module will always be a module (rather than occasionally being a FileEntry). llvm-svn: 145497
* Use raw_ostream::indent.Benjamin Kramer2011-11-301-8/+4
| | | | llvm-svn: 145492
* Switch the module map printer over toDouglas Gregor2011-11-301-27/+2
| | | | | | raw_ostream::write_escaped. Thanks, Benjamin! llvm-svn: 145491
* Escape strings when printing module maps, for silly operating systemsDouglas Gregor2011-11-291-2/+31
| | | | | | that use \ as a separator. llvm-svn: 145439
* Switch on-demand module building over to use module maps, always. WhenDouglas Gregor2011-11-291-22/+32
| | | | | | | we infer the module map, we'll just print the module map to a temporary file and generate the module using that. llvm-svn: 145436
* Teach the module import mechanism how to rebuild modules expressed viaDouglas Gregor2011-11-291-0/+9
| | | | | | | module map, rather than assuming that there is an umbrella header. This allows us to automatically build umbrella-less modules. llvm-svn: 145415
* Expose the printing of module maps as part of the ModuleMap::ModuleDouglas Gregor2011-11-291-34/+36
| | | | | | interface. No functionality change. llvm-svn: 145411
* Add the notion of "framework" modules to module maps. FrameworkDouglas Gregor2011-11-171-9/+49
| | | | | | | modules (obviously) describe frameworks, and understand the header layout of frameworks. llvm-svn: 144921
* Actually free memory for the module mapsDouglas Gregor2011-11-171-0/+15
| | | | llvm-svn: 144880
* When we're loading a framework header, first try to turn the frameworkDouglas Gregor2011-11-171-0/+28
| | | | | | | | | into a module. This module can either be loaded from a module map in the framework directory (which isn't quite working yet) or inferred from an umbrella header (which does work, and replaces the existing hack). llvm-svn: 144877
* A module with an umbrella header assumes that all of the headers inDouglas Gregor2011-11-161-0/+40
| | | | | | | | the umbrella header's directory and its subdirectories are part of the module (that's why it's an umbrella). Make sure that these headers are considered to be part of the module for lookup purposes. llvm-svn: 144859
* Silence unused variable warning.Benjamin Kramer2011-11-131-2/+2
| | | | llvm-svn: 144500
* Teach the search for modules to consider modules described by a moduleDouglas Gregor2011-11-111-0/+8
| | | | | | | | | | | | | | map, so long as they have an umbrella header. This makes it possible to introduce a module map + umbrella header for a given set of headers, to turn it into a module. There are two major deficiencies here: first, we don't go hunting for module map files when we just see a module import (so we won't know about the modules described therein). Second, we don't yet have a way to build modules that don't have umbrella headers, or have incomplete umbrella headers. llvm-svn: 144424
* Wire up the mapping from header files mentioned in module maps over toDouglas Gregor2011-11-111-0/+17
| | | | | | | the corresponding (top-level) modules. This isn't actually useful yet, because we don't yet have a way to build modules out of module maps. llvm-svn: 144410
* Resolve the header files named in module map "header" and "umbrella"Douglas Gregor2011-11-111-6/+70
| | | | | | declarations to actual files. llvm-svn: 144408
* Introduce basic support for parsing module map files.Douglas Gregor2011-11-111-0/+506
Module map files provide a way to map between headers and modules, so that we can layer a module system on top of existing headers without changing those headers at all. This commit introduces the module map file parser and the module map that it generates, and wires up the module map file parser so that we'll automatically find module map files as part of header search. Note that we don't yet use the information stored in the module map. llvm-svn: 144402
OpenPOWER on IntegriCloud