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