• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1module LLVM_Analysis {
2  requires cplusplus
3  umbrella "Analysis"
4  module * { export * }
5
6  // FIXME: Why is this excluded?
7  exclude header "Analysis/BlockFrequencyInfoImpl.h"
8
9  // This is intended for (repeated) textual inclusion.
10  textual header "Analysis/TargetLibraryInfo.def"
11}
12
13module LLVM_AsmParser { requires cplusplus umbrella "AsmParser" module * { export * } }
14
15// A module covering CodeGen/ and Target/. These are intertwined
16// and codependent, and thus notionally form a single module.
17module LLVM_Backend {
18  requires cplusplus
19
20  module CodeGen {
21    umbrella "CodeGen"
22    module * { export * }
23
24    // FIXME: Why is this excluded?
25    exclude header "CodeGen/MachineValueType.h"
26
27    // Exclude these; they're intended to be included into only a single
28    // translation unit (or none) and aren't part of this module.
29    exclude header "CodeGen/CommandFlags.h"
30    exclude header "CodeGen/LinkAllAsmWriterComponents.h"
31    exclude header "CodeGen/LinkAllCodegenComponents.h"
32
33    // These are intended for (repeated) textual inclusion.
34    textual header "CodeGen/DIEValue.def"
35  }
36
37  module Target {
38    umbrella "Target"
39    module * { export * }
40  }
41
42  // FIXME: Where should this go?
43  module Analysis_BlockFrequencyInfoImpl {
44    header "Analysis/BlockFrequencyInfoImpl.h"
45    export *
46  }
47}
48
49module LLVM_Bitcode { requires cplusplus umbrella "Bitcode" module * { export * } }
50module LLVM_Config { requires cplusplus umbrella "Config" module * { export * } }
51
52module LLVM_DebugInfo {
53  requires cplusplus
54  module DIContext { header "DebugInfo/DIContext.h" export * }
55}
56
57module LLVM_DebugInfo_DWARF {
58  requires cplusplus
59
60  umbrella "DebugInfo/DWARF"
61  module * { export * }
62}
63
64module LLVM_DebugInfo_PDB {
65  requires cplusplus
66
67  umbrella "DebugInfo/PDB"
68  module * { export * }
69
70  // Separate out this subdirectory; it's an optional component that depends on
71  // a separate library which might not be available.
72  //
73  // FIXME: There should be a better way to specify this.
74  exclude header "DebugInfo/PDB/DIA/DIADataStream.h"
75  exclude header "DebugInfo/PDB/DIA/DIAEnumDebugStreams.h"
76  exclude header "DebugInfo/PDB/DIA/DIAEnumLineNumbers.h"
77  exclude header "DebugInfo/PDB/DIA/DIAEnumSourceFiles.h"
78  exclude header "DebugInfo/PDB/DIA/DIAEnumSymbols.h"
79  exclude header "DebugInfo/PDB/DIA/DIALineNumber.h"
80  exclude header "DebugInfo/PDB/DIA/DIARawSymbol.h"
81  exclude header "DebugInfo/PDB/DIA/DIASession.h"
82  exclude header "DebugInfo/PDB/DIA/DIASourceFile.h"
83  exclude header "DebugInfo/PDB/DIA/DIASupport.h"
84}
85
86module LLVM_DebugInfo_PDB_DIA {
87  requires cplusplus
88
89  umbrella "DebugInfo/PDB/DIA"
90  module * { export * }
91}
92
93module LLVM_ExecutionEngine {
94  requires cplusplus
95
96  umbrella "ExecutionEngine"
97  module * { export * }
98
99  // Exclude this; it's an optional component of the ExecutionEngine.
100  exclude header "ExecutionEngine/OProfileWrapper.h"
101
102  // Exclude these; they're intended to be included into only a single
103  // translation unit (or none) and aren't part of this module.
104  exclude header "ExecutionEngine/JIT.h"
105  exclude header "ExecutionEngine/MCJIT.h"
106  exclude header "ExecutionEngine/Interpreter.h"
107  exclude header "ExecutionEngine/OrcMCJITReplacement.h"
108}
109
110module LLVM_IR {
111  requires cplusplus
112
113  // FIXME: Is this the right place for these?
114  module Pass { header "Pass.h" export * }
115  module PassSupport { header "PassSupport.h" export * }
116  module PassAnalysisSupport { header "PassAnalysisSupport.h" export * }
117  module PassRegistry { header "PassRegistry.h" export * }
118  module InitializePasses { header "InitializePasses.h" export * }
119
120  umbrella "IR"
121  module * { export * }
122
123  // These are intended for (repeated) textual inclusion.
124  textual header "IR/DebugInfoFlags.def"
125  textual header "IR/Instruction.def"
126  textual header "IR/Metadata.def"
127  textual header "IR/Value.def"
128}
129
130module LLVM_IRReader { requires cplusplus umbrella "IRReader" module * { export * } }
131module LLVM_LineEditor { requires cplusplus umbrella "LineEditor" module * { export * } }
132module LLVM_LTO { requires cplusplus umbrella "LTO" module * { export * } }
133
134module LLVM_MC {
135  requires cplusplus
136
137  // FIXME: Mislayered?
138  module Support_TargetRegistry {
139    header "Support/TargetRegistry.h"
140    export *
141  }
142
143  umbrella "MC"
144  module * { export * }
145
146  // Exclude this; it's fundamentally non-modular.
147  exclude header "MC/MCTargetOptionsCommandFlags.h"
148}
149
150module LLVM_Object {
151  requires cplusplus
152  umbrella "Object"
153  module * { export * }
154}
155
156module LLVM_Option { requires cplusplus umbrella "Option" module * { export * } }
157module LLVM_TableGen { requires cplusplus umbrella "TableGen" module * { export * } }
158
159module LLVM_Transforms {
160  requires cplusplus
161  umbrella "Transforms"
162  module * { export * }
163
164  // FIXME: Excluded because it does bad things with the legacy pass manager.
165  exclude header "Transforms/IPO/PassManagerBuilder.h"
166}
167
168// A module covering ADT/ and Support/. These are intertwined and
169// codependent, and notionally form a single module.
170module LLVM_Utils {
171  module ADT {
172    requires cplusplus
173
174    umbrella "ADT"
175    module * { export * }
176  }
177
178  module Support {
179    requires cplusplus
180
181    umbrella "Support"
182    module * { export * }
183
184    // Exclude this; it's only included on Solaris.
185    exclude header "Support/Solaris.h"
186
187    // Exclude this; it's only included on AIX and fundamentally non-modular.
188    exclude header "Support/AIXDataTypesFix.h"
189
190    // Exclude this; it's fundamentally non-modular.
191    exclude header "Support/PluginLoader.h"
192
193    // FIXME: Mislayered?
194    exclude header "Support/TargetRegistry.h"
195
196    // These are intended for textual inclusion.
197    textual header "Support/ARMTargetParser.def"
198    textual header "Support/Dwarf.def"
199    textual header "Support/ELFRelocs/AArch64.def"
200    textual header "Support/ELFRelocs/ARM.def"
201    textual header "Support/ELFRelocs/AVR.def"
202    textual header "Support/ELFRelocs/Hexagon.def"
203    textual header "Support/ELFRelocs/i386.def"
204    textual header "Support/ELFRelocs/Mips.def"
205    textual header "Support/ELFRelocs/PowerPC64.def"
206    textual header "Support/ELFRelocs/PowerPC.def"
207    textual header "Support/ELFRelocs/Sparc.def"
208    textual header "Support/ELFRelocs/SystemZ.def"
209    textual header "Support/ELFRelocs/x86_64.def"
210  }
211
212  // This part of the module is usable from both C and C++ code.
213  module ConvertUTF {
214    header "Support/ConvertUTF.h"
215    export *
216  }
217}
218
219module LLVM_CodeGen_MachineValueType {
220  requires cplusplus
221  header "CodeGen/MachineValueType.h"
222  export *
223}
224
225// This is used for a $src == $build compilation. Otherwise we use
226// LLVM_Support_DataTypes_Build, defined in a module map that is
227// copied into the build area.
228module LLVM_Support_DataTypes_Src {
229  header "llvm/Support/DataTypes.h"
230  export *
231}
232