aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Lex/ModuleMap.cpp
AgeCommit message (Collapse)AuthorFilesLines
2012-11-15If an excluded header does not exist, just ignore itDouglas Gregor1-1/+3
llvm-svn: 168077
2012-11-06Remove C++11-isms I just introduced in r167482Douglas Gregor1-3/+3
llvm-svn: 167483
2012-11-06Introduce inferred framework modules into the module map file,Douglas Gregor1-84/+236
allowing a module map to be placed one level above the '.framework' directories to specify that all .frameworks within that directory can be inferred as framework modules. One can also specifically exclude frameworks known not to work. This makes explicit (and more restricted) behavior modules have had "forever", where *any* .framework was assumed to be able to be built as a module. That's not necessarily true, so we white-list directories (with exclusions) when those directories have been audited. llvm-svn: 167482
2012-10-23Make DiagnosticOptions intrusively reference-counted, and make sureDouglas Gregor1-1/+2
the various stakeholders bump up the reference count. In particular, the diagnostics engine now keeps the DiagnosticOptions object alive. llvm-svn: 166508
2012-10-15Teach TargetInfo to hold on to the TargetOptions with which it wasDouglas Gregor1-11/+9
created. llvm-svn: 165943
2012-10-15Introduce the notion of excluded headers into the module mapDouglas Gregor1-30/+46
description. Previously, one could emulate this behavior by placing the header in an always-unavailable submodule, but Argyrios guilted me into expressing this idea properly. llvm-svn: 165921
2012-10-12Sanitize the names of modules determined based on the names of headersDouglas Gregor1-6/+67
or directories, to make sure that they are identifiers that are not keywords in any dialect. Fixes <rdar://problem/12489495>. llvm-svn: 165821
2012-10-05[Modules] Introduce Module::TopHeaders which is a set of top-level headersArgyrios Kyrtzidis1-0/+1
that are associated with a (sub)module. llvm-svn: 165279
2012-09-27Following up on r164620, cope with symlinking from an embeddedDouglas Gregor1-1/+30
framework location out to a top-level framework. Such frameworks are not really embedded at all. llvm-svn: 164774
2012-03-29Make ModuleMapParser own its TargetInfo, so it doesn't get leaked.Benjamin Kramer1-2/+2
llvm-svn: 153648
2012-03-06User-defined literals: reject string and character UDLs in all places where theRichard Smith1-0/+6
grammar requires a string-literal and not a user-defined-string-literal. The two constructs are still represented by the same TokenKind, in order to prevent a combinatorial explosion of different kinds of token. A flag on Token tracks whether a ud-suffix is present, in order to prevent clients from needing to look at the token's spelling. llvm-svn: 152098
2012-02-20Basic: import IntrusiveRefCntPtr<> into clang namespaceDylan Noblesmith1-2/+2
The class name is long enough without the llvm:: added. Also bring in RefCountedBase and RefCountedBaseVPTR. llvm-svn: 150958
2012-02-06Move instantiateTemplateAttribute into the sema namespace, make helpers static.Benjamin Kramer1-1/+2
llvm-svn: 149864
2012-02-05Basic: import SmallString<> into clang namespaceDylan Noblesmith1-6/+6
(I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) llvm-svn: 149799
2012-02-02Back out my heinous hack that tricked the module generation mechanismDouglas Gregor1-5/+52
into using non-absolute system includes (<foo>)... ... and introduce another hack that is simultaneously more heineous and more effective. We whitelist Clang-supplied headers that augment or override system headers (such as float.h, stdarg.h, and tgmath.h). For these headers, Clang does not provide a module mapping. Instead, a system-supplied module map can refer to these headers in a system module, and Clang will look both in its own include directory and wherever the system-supplied module map suggests, then adds either or both headers. The end result is that Clang-supplied headers get merged into the system-supplied module for the C standard library. As a drive-by, fix up a few dependencies in the _Builtin_instrinsics module. llvm-svn: 149611
2012-01-30Thread a TargetInfo through to the module map; we'll need it forDouglas Gregor1-3/+10
target-specific module requirements. llvm-svn: 149224
2012-01-27Introduce module attributes into the module map grammar, along with aDouglas Gregor1-7/+101
single attribute ("system") that allows us to mark a module as being a "system" module. Each of the headers that makes up a system module is considered to be a system header, so that we (for example) suppress warnings there. If a module is being inferred for a framework, and that framework directory is within a system frameworks directory, infer it as a system framework. llvm-svn: 149143
2012-01-17Remove unreachable code in Clang. (replace with llvm_unreachable where ↵David Blaikie1-2/+0
appropriate or when GCC requires it) llvm-svn: 148292
2012-01-13Don't infer a submodule for a framework's private header, at least for now.Douglas Gregor1-14/+1
llvm-svn: 148117
2012-01-13Revert previous commit. Something has gone wonky with my local configurationDouglas Gregor1-1/+0
llvm-svn: 148084
2012-01-13When inferring a module map for a framework, add the 'private'Douglas Gregor1-0/+1
requirement to headers under PrivateHeaders. We don't want to build them as part of the module (yet). llvm-svn: 148082
2012-01-06When inferring a submodule ID during module creation, look up theDouglas Gregor1-5/+16
include stack to find the first file that is known to be part of the module. This copes with situations where the module map doesn't completely specify all of the headers that are involved in the module, which can come up when there are very strange #include_next chains (e.g., with weird compiler/stdlib headers like stdarg.h or float.h). llvm-svn: 147662
2012-01-05If we already have a definition for a top-level module that we deserialized ↵Douglas Gregor1-0/+13
from a module file, don't bother parsing a new definition llvm-svn: 147574
2012-01-04Store the submodules of a module in source order, as they are storedDouglas Gregor1-25/+11
in the module map. This provides a bit more predictability for the user, as well as eliminating the need to sort the submodules when serializing them. llvm-svn: 147564
2011-12-31Implement support for module requirements, which indicate the languageDouglas Gregor1-6/+134
features needed for a particular module to be available. This allows mixed-language modules, where certain headers only work under some language variants (e.g., in C++, std.tuple might only be available in C++11 mode). llvm-svn: 147387
2011-12-12Set umbrella directory correctly when we infer a framework moduleDouglas Gregor1-1/+1
llvm-svn: 146451
2011-12-09Implement the notion of umbrella directories, which implicity coverDouglas Gregor1-67/+33
all of the headers below that particular directory. Use umbrella directories as a clean way to deal with (1) directories/frameworks that don't have an umbrella header, but don't want to enumerate all of their headers, and (2) PrivateHeaders, which we never want to enumerate and want to keep separate from the main umbrella header. This also eliminates a little more of the "magic" for private headers, and frameworks in general. llvm-svn: 146235
2011-12-08Implement umbrella directories for modules, which are similar toDouglas Gregor1-10/+73
umbrella headers in the sense that all of the headers within that directory (and eventually its subdirectories) are considered to be part of the module with that umbrella directory. However, unlike umbrella headers, which are expected to include all of the headers within their subdirectories, Clang will automatically include all of the headers it finds in the named subdirectory. The intent here is to allow a module map to trivially turn a subdirectory into a module, where the module's structure can mimic the directory structure. llvm-svn: 146165
2011-12-08Tweak the syntax of umbrella headers, so that "umbrella" is treated asDouglas Gregor1-101/+36
a modifier for a header declarartion, e.g., umbrella header "headername" Collapse the umbrella-handling code in the parser into the header-handling code, so we don't duplicate the header-search logic. llvm-svn: 146159
2011-12-08Within the module representation, generalize the notion of an umbrellaDouglas Gregor1-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
2011-12-08Convert paths to native format before constructing aDouglas Gregor1-5/+12
directory_iterator for them. llvm-svn: 146154
2011-12-07Implement inference for the "Private" submodule corresponding toDouglas Gregor1-5/+51
private headers in a framework. llvm-svn: 146082
2011-12-07Implement basic support for private headers in frameworks. In essence,Douglas Gregor1-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
2011-12-06Remove misleading error messageDouglas Gregor1-2/+1
llvm-svn: 145958
2011-12-06When inferring a module map for a framework, infer subframeworkDouglas Gregor1-9/+33
modules for each of its subframeworks. llvm-svn: 145957
2011-12-06Allow inferred submodules for any (sub)module that has an umbrella headerDouglas Gregor1-9/+8
llvm-svn: 145945
2011-12-06Implement modules support for subframeworks (aka embeddedDouglas Gregor1-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
2011-12-06Minor tweak to prepare for submodules with umbrella headers. No actualDouglas Gregor1-7/+13
functionality change yet. llvm-svn: 145938
2011-12-06Implement inferred submodules support, which (when requested)Douglas Gregor1-30/+92
implicitly generates submodules corresponding to the headers that fall within a module. llvm-svn: 145887
2011-12-05Parse inferred submodules in module maps, track their contents inDouglas Gregor1-1/+103
Module, and (de-)serialize this information. Semantics of inferred submodules to follow. llvm-svn: 145864
2011-12-05Inferred framework modules automatically export anything they importDouglas Gregor1-0/+5
(i.e., 'export *'), to better match the semantics of headers. llvm-svn: 145813
2011-12-05Implement support for wildcard exports in modules, allowing a moduleDouglas Gregor1-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
2011-12-05When writing a module file, keep track of the set of (sub)modules thatDouglas Gregor1-0/+20
it imports, establishing dependencies at the (sub)module granularity. This is not a user-visible change (yet). llvm-svn: 145808
2011-12-02Implementing parsing and resolution of module export declarationsDouglas Gregor1-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
2011-11-30Unbreak build with GCC. Clang is too lame to diagnose this particular ↵Douglas Gregor1-2/+0
ill-formedness llvm-svn: 145539
2011-11-30Promote ModuleMap::Module to a namespace-scope class in the BasicDouglas Gregor1-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
2011-11-30Implement (de-)serialization of the description of a module and itsDouglas Gregor1-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
2011-11-30Use raw_ostream::indent.Benjamin Kramer1-8/+4
llvm-svn: 145492
2011-11-30Switch the module map printer over toDouglas Gregor1-27/+2
raw_ostream::write_escaped. Thanks, Benjamin! llvm-svn: 145491
2011-11-29Escape strings when printing module maps, for silly operating systemsDouglas Gregor1-2/+31
that use \ as a separator. llvm-svn: 145439