1*06c3fb27SDimitry Andricmodule LLVM_C {
2*06c3fb27SDimitry Andric  umbrella "llvm-c"
3*06c3fb27SDimitry Andric  module * { export * }
4*06c3fb27SDimitry Andric}
5*06c3fb27SDimitry Andric
6*06c3fb27SDimitry Andricmodule LLVM_Analysis {
7*06c3fb27SDimitry Andric  requires cplusplus
8*06c3fb27SDimitry Andric  umbrella "llvm/Analysis"
9*06c3fb27SDimitry Andric  module * { export * }
10*06c3fb27SDimitry Andric
11*06c3fb27SDimitry Andric  // This is intended for (repeated) textual inclusion.
12*06c3fb27SDimitry Andric  textual header "llvm/Analysis/ScalarFuncs.def"
13*06c3fb27SDimitry Andric  textual header "llvm/Analysis/TargetLibraryInfo.def"
14*06c3fb27SDimitry Andric  textual header "llvm/Analysis/VecFuncs.def"
15*06c3fb27SDimitry Andric}
16*06c3fb27SDimitry Andric
17*06c3fb27SDimitry Andricmodule LLVM_AsmParser {
18*06c3fb27SDimitry Andric  requires cplusplus
19*06c3fb27SDimitry Andric  umbrella "llvm/AsmParser"
20*06c3fb27SDimitry Andric  module * { export * }
21*06c3fb27SDimitry Andric}
22*06c3fb27SDimitry Andric
23*06c3fb27SDimitry Andricmodule LLVM_CodeGenTypes {
24*06c3fb27SDimitry Andric  requires cplusplus
25*06c3fb27SDimitry Andric
26*06c3fb27SDimitry Andric  module LLT {
27*06c3fb27SDimitry Andric    header "llvm/CodeGen/LowLevelType.h" export *
28*06c3fb27SDimitry Andric  }
29*06c3fb27SDimitry Andric  module MVT {
30*06c3fb27SDimitry Andric    header "llvm/CodeGen/MachineValueType.h" export *
31*06c3fb27SDimitry Andric    extern module LLVM_Extern_CodeGenTypes_Gen "module.extern.modulemap"
32*06c3fb27SDimitry Andric  }
33*06c3fb27SDimitry Andric}
34*06c3fb27SDimitry Andric
35*06c3fb27SDimitry Andric// A module covering CodeGen/ and Target/. These are intertwined
36*06c3fb27SDimitry Andric// and codependent, and thus notionally form a single module.
37*06c3fb27SDimitry Andricmodule LLVM_Backend {
38*06c3fb27SDimitry Andric  requires cplusplus
39*06c3fb27SDimitry Andric
40*06c3fb27SDimitry Andric  module CodeGen {
41*06c3fb27SDimitry Andric    umbrella "llvm/CodeGen"
42*06c3fb27SDimitry Andric    module * { export * }
43*06c3fb27SDimitry Andric
44*06c3fb27SDimitry Andric    // Exclude these; they're intended to be included into only a single
45*06c3fb27SDimitry Andric    // translation unit (or none) and aren't part of this module.
46*06c3fb27SDimitry Andric    exclude header "llvm/CodeGen/LinkAllAsmWriterComponents.h"
47*06c3fb27SDimitry Andric    exclude header "llvm/CodeGen/LinkAllCodegenComponents.h"
48*06c3fb27SDimitry Andric
49*06c3fb27SDimitry Andric    exclude header "llvm/CodeGen/CodeGenPassBuilder.h"
50*06c3fb27SDimitry Andric
51*06c3fb27SDimitry Andric    // These are intended for (repeated) textual inclusion.
52*06c3fb27SDimitry Andric    textual header "llvm/CodeGen/DIEValue.def"
53*06c3fb27SDimitry Andric    textual header "llvm/CodeGen/MachinePassRegistry.def"
54*06c3fb27SDimitry Andric  }
55*06c3fb27SDimitry Andric}
56*06c3fb27SDimitry Andric
57*06c3fb27SDimitry Andric// FIXME: Make this as a submodule of LLVM_Backend again.
58*06c3fb27SDimitry Andric//        Doing so causes a linker error in clang-format.
59*06c3fb27SDimitry Andricmodule LLVM_Backend_Target {
60*06c3fb27SDimitry Andric  umbrella "llvm/Target"
61*06c3fb27SDimitry Andric  module * { export * }
62*06c3fb27SDimitry Andric}
63*06c3fb27SDimitry Andric
64*06c3fb27SDimitry Andricmodule LLVM_Bitcode {
65*06c3fb27SDimitry Andric requires cplusplus
66*06c3fb27SDimitry Andric umbrella "llvm/Bitcode"
67*06c3fb27SDimitry Andric module * { export * }
68*06c3fb27SDimitry Andric}
69*06c3fb27SDimitry Andric
70*06c3fb27SDimitry Andricmodule LLVM_Bitstream {
71*06c3fb27SDimitry Andric requires cplusplus
72*06c3fb27SDimitry Andric umbrella "llvm/Bitstream"
73*06c3fb27SDimitry Andric module * { export * }
74*06c3fb27SDimitry Andric}
75*06c3fb27SDimitry Andric
76*06c3fb27SDimitry Andricmodule LLVM_BinaryFormat {
77*06c3fb27SDimitry Andric    requires cplusplus
78*06c3fb27SDimitry Andric    umbrella "llvm/BinaryFormat" module * { export * }
79*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/Dwarf.def"
80*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/DXContainerConstants.def"
81*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/DynamicTags.def"
82*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/MachO.def"
83*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/MinidumpConstants.def"
84*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/Swift.def"
85*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/AArch64.def"
86*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/AMDGPU.def"
87*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/ARM.def"
88*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/ARC.def"
89*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/AVR.def"
90*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/BPF.def"
91*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/CSKY.def"
92*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/Hexagon.def"
93*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/i386.def"
94*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/Lanai.def"
95*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/LoongArch.def"
96*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/M68k.def"
97*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/Mips.def"
98*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/MSP430.def"
99*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/PowerPC64.def"
100*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/PowerPC.def"
101*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/RISCV.def"
102*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/Sparc.def"
103*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/SystemZ.def"
104*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/VE.def"
105*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/x86_64.def"
106*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/ELFRelocs/Xtensa.def"
107*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/WasmRelocs.def"
108*06c3fb27SDimitry Andric    textual header "llvm/BinaryFormat/MsgPack.def"
109*06c3fb27SDimitry Andric}
110*06c3fb27SDimitry Andric
111*06c3fb27SDimitry Andricmodule LLVM_Config {
112*06c3fb27SDimitry Andric  requires cplusplus
113*06c3fb27SDimitry Andric  umbrella "llvm/Config"
114*06c3fb27SDimitry Andric  extern module LLVM_Extern_Config_Def "module.extern.modulemap"
115*06c3fb27SDimitry Andric  module * { export * }
116*06c3fb27SDimitry Andric}
117*06c3fb27SDimitry Andric
118*06c3fb27SDimitry Andricmodule LLVM_DebugInfo {
119*06c3fb27SDimitry Andric  requires cplusplus
120*06c3fb27SDimitry Andric  module DIContext { header "llvm/DebugInfo/DIContext.h" export * }
121*06c3fb27SDimitry Andric}
122*06c3fb27SDimitry Andric
123*06c3fb27SDimitry Andricmodule LLVM_DebugInfo_DWARF {
124*06c3fb27SDimitry Andric  requires cplusplus
125*06c3fb27SDimitry Andric
126*06c3fb27SDimitry Andric  umbrella "llvm/DebugInfo/DWARF"
127*06c3fb27SDimitry Andric  module * { export * }
128*06c3fb27SDimitry Andric}
129*06c3fb27SDimitry Andric
130*06c3fb27SDimitry Andricmodule LLVM_DebugInfo_PDB {
131*06c3fb27SDimitry Andric  requires cplusplus
132*06c3fb27SDimitry Andric
133*06c3fb27SDimitry Andric  umbrella "llvm/DebugInfo/PDB"
134*06c3fb27SDimitry Andric  module * { export * }
135*06c3fb27SDimitry Andric
136*06c3fb27SDimitry Andric  // Separate out this subdirectory; it's an optional component that depends on
137*06c3fb27SDimitry Andric  // a separate library which might not be available.
138*06c3fb27SDimitry Andric  //
139*06c3fb27SDimitry Andric  // FIXME: There should be a better way to specify this.
140*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIADataStream.h"
141*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h"
142*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h"
143*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h"
144*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h"
145*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h"
146*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h"
147*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h"
148*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumTables.h"
149*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAError.h"
150*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAFrameData.h"
151*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h"
152*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIALineNumber.h"
153*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIARawSymbol.h"
154*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIASectionContrib.h"
155*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIASession.h"
156*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIASourceFile.h"
157*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIASupport.h"
158*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIATable.h"
159*06c3fb27SDimitry Andric  exclude header "llvm/DebugInfo/PDB/DIA/DIAUtils.h"
160*06c3fb27SDimitry Andric}
161*06c3fb27SDimitry Andric
162*06c3fb27SDimitry Andricmodule LLVM_DebugInfo_PDB_DIA {
163*06c3fb27SDimitry Andric  requires cplusplus
164*06c3fb27SDimitry Andric
165*06c3fb27SDimitry Andric  umbrella "llvm/DebugInfo/PDB/DIA"
166*06c3fb27SDimitry Andric  module * { export * }
167*06c3fb27SDimitry Andric}
168*06c3fb27SDimitry Andric
169*06c3fb27SDimitry Andricmodule LLVM_DebugInfo_MSF {
170*06c3fb27SDimitry Andric  requires cplusplus
171*06c3fb27SDimitry Andric
172*06c3fb27SDimitry Andric  umbrella "llvm/DebugInfo/MSF"
173*06c3fb27SDimitry Andric  module * { export * }
174*06c3fb27SDimitry Andric}
175*06c3fb27SDimitry Andric
176*06c3fb27SDimitry Andricmodule LLVM_DebugInfo_CodeView {
177*06c3fb27SDimitry Andric  requires cplusplus
178*06c3fb27SDimitry Andric
179*06c3fb27SDimitry Andric  umbrella "llvm/DebugInfo/CodeView"
180*06c3fb27SDimitry Andric  module * { export * }
181*06c3fb27SDimitry Andric
182*06c3fb27SDimitry Andric  // These are intended for (repeated) textual inclusion.
183*06c3fb27SDimitry Andric  textual header "llvm/DebugInfo/CodeView/CodeViewRegisters.def"
184*06c3fb27SDimitry Andric  textual header "llvm/DebugInfo/CodeView/CodeViewTypes.def"
185*06c3fb27SDimitry Andric  textual header "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
186*06c3fb27SDimitry Andric}
187*06c3fb27SDimitry Andric
188*06c3fb27SDimitry Andricmodule LLVM_DWARFLinker {
189*06c3fb27SDimitry Andric  requires cplusplus
190*06c3fb27SDimitry Andric
191*06c3fb27SDimitry Andric  umbrella "llvm/DWARFLinker"
192*06c3fb27SDimitry Andric  module * { export * }
193*06c3fb27SDimitry Andric}
194*06c3fb27SDimitry Andric
195*06c3fb27SDimitry Andricmodule LLVM_ExecutionEngine {
196*06c3fb27SDimitry Andric  requires cplusplus
197*06c3fb27SDimitry Andric
198*06c3fb27SDimitry Andric  umbrella "llvm/ExecutionEngine"
199*06c3fb27SDimitry Andric  module * { export * }
200*06c3fb27SDimitry Andric
201*06c3fb27SDimitry Andric  // Exclude this; it's an optional component of the ExecutionEngine.
202*06c3fb27SDimitry Andric  exclude header "llvm/ExecutionEngine/OProfileWrapper.h"
203*06c3fb27SDimitry Andric
204*06c3fb27SDimitry Andric  // Exclude these; they're intended to be included into only a single
205*06c3fb27SDimitry Andric  // translation unit (or none) and aren't part of this module.
206*06c3fb27SDimitry Andric  exclude header "llvm/ExecutionEngine/MCJIT.h"
207*06c3fb27SDimitry Andric  exclude header "llvm/ExecutionEngine/Interpreter.h"
208*06c3fb27SDimitry Andric
209*06c3fb27SDimitry Andric  // Exclude headers from LLVM_OrcSupport.
210*06c3fb27SDimitry Andric  exclude header "llvm/ExecutionEngine/Orc/Shared/OrcError.h"
211*06c3fb27SDimitry Andric}
212*06c3fb27SDimitry Andric
213*06c3fb27SDimitry Andricmodule LLVM_FileCheck {
214*06c3fb27SDimitry Andric  requires cplusplus
215*06c3fb27SDimitry Andric
216*06c3fb27SDimitry Andric  umbrella "llvm/FileCheck"
217*06c3fb27SDimitry Andric  module * { export * }
218*06c3fb27SDimitry Andric}
219*06c3fb27SDimitry Andric
220*06c3fb27SDimitry Andricmodule LLVM_Frontend_OpenMP {
221*06c3fb27SDimitry Andric  requires cplusplus
222*06c3fb27SDimitry Andric
223*06c3fb27SDimitry Andric  umbrella "llvm/Frontend/OpenMP"
224*06c3fb27SDimitry Andric  module * { export * }
225*06c3fb27SDimitry Andric
226*06c3fb27SDimitry Andric  exclude header "llvm/Frontend/OpenMP/OMPKinds.def"
227*06c3fb27SDimitry Andric}
228*06c3fb27SDimitry Andric
229*06c3fb27SDimitry Andric// Orc utilities that don't depend only on Support (not ExecutionEngine or
230*06c3fb27SDimitry Andric// IR). This is a workaround for ExecutionEngine's broken layering, and will
231*06c3fb27SDimitry Andric// be removed in the future.
232*06c3fb27SDimitry Andricmodule LLVM_OrcSupport {
233*06c3fb27SDimitry Andric  requires cplusplus
234*06c3fb27SDimitry Andric
235*06c3fb27SDimitry Andric  header "llvm/ExecutionEngine/Orc/Shared/OrcError.h"
236*06c3fb27SDimitry Andric
237*06c3fb27SDimitry Andric  export *
238*06c3fb27SDimitry Andric}
239*06c3fb27SDimitry Andric
240*06c3fb27SDimitry Andricmodule LLVM_Pass {
241*06c3fb27SDimitry Andric  module Pass {
242*06c3fb27SDimitry Andric    // PassSupport.h and PassAnalysisSupport.h are made available only through
243*06c3fb27SDimitry Andric    // Pass.h.
244*06c3fb27SDimitry Andric    header "llvm/Pass.h"
245*06c3fb27SDimitry Andric    textual header "llvm/PassSupport.h"
246*06c3fb27SDimitry Andric    textual header "llvm/PassAnalysisSupport.h"
247*06c3fb27SDimitry Andric    export *
248*06c3fb27SDimitry Andric  }
249*06c3fb27SDimitry Andric
250*06c3fb27SDimitry Andric  module PassRegistry { header "llvm/PassRegistry.h" export * }
251*06c3fb27SDimitry Andric  module InitializePasses { header "llvm/InitializePasses.h" export * }
252*06c3fb27SDimitry Andric}
253*06c3fb27SDimitry Andric
254*06c3fb27SDimitry Andricmodule LLVM_IR {
255*06c3fb27SDimitry Andric  requires cplusplus
256*06c3fb27SDimitry Andric
257*06c3fb27SDimitry Andric  umbrella "llvm/IR"
258*06c3fb27SDimitry Andric  module * { export * }
259*06c3fb27SDimitry Andric
260*06c3fb27SDimitry Andric  extern module LLVM_Extern_IR_Attributes_Gen "module.extern.modulemap"
261*06c3fb27SDimitry Andric  extern module LLVM_Extern_IR_Intrinsics_Gen "module.extern.modulemap"
262*06c3fb27SDimitry Andric  extern module LLVM_Extern_IR_Intrinsics_Enum "module.extern.modulemap"
263*06c3fb27SDimitry Andric
264*06c3fb27SDimitry Andric  // These are intended for (repeated) textual inclusion.
265*06c3fb27SDimitry Andric  textual header "llvm/IR/ConstrainedOps.def"
266*06c3fb27SDimitry Andric  textual header "llvm/IR/DebugInfoFlags.def"
267*06c3fb27SDimitry Andric  textual header "llvm/IR/Instruction.def"
268*06c3fb27SDimitry Andric  textual header "llvm/IR/Metadata.def"
269*06c3fb27SDimitry Andric  textual header "llvm/IR/FixedMetadataKinds.def"
270*06c3fb27SDimitry Andric  textual header "llvm/IR/Value.def"
271*06c3fb27SDimitry Andric  textual header "llvm/IR/VPIntrinsics.def"
272*06c3fb27SDimitry Andric  textual header "llvm/IR/RuntimeLibcalls.def"
273*06c3fb27SDimitry Andric}
274*06c3fb27SDimitry Andric
275*06c3fb27SDimitry Andricmodule LLVM_IRReader {
276*06c3fb27SDimitry Andric  requires cplusplus
277*06c3fb27SDimitry Andric  umbrella "llvm/IRReader"
278*06c3fb27SDimitry Andric  module * { export * }
279*06c3fb27SDimitry Andric}
280*06c3fb27SDimitry Andric
281*06c3fb27SDimitry Andricmodule LLVM_LineEditor {
282*06c3fb27SDimitry Andric  requires cplusplus
283*06c3fb27SDimitry Andric  umbrella "llvm/LineEditor"
284*06c3fb27SDimitry Andric  module * { export * }
285*06c3fb27SDimitry Andric}
286*06c3fb27SDimitry Andric
287*06c3fb27SDimitry Andricmodule LLVM_LTO {
288*06c3fb27SDimitry Andric  requires cplusplus
289*06c3fb27SDimitry Andric  umbrella "llvm/LTO"
290*06c3fb27SDimitry Andric  module * { export * }
291*06c3fb27SDimitry Andric}
292*06c3fb27SDimitry Andric
293*06c3fb27SDimitry Andricmodule LLVM_MC {
294*06c3fb27SDimitry Andric  requires cplusplus
295*06c3fb27SDimitry Andric
296*06c3fb27SDimitry Andric  umbrella "llvm/MC"
297*06c3fb27SDimitry Andric  module * { export * }
298*06c3fb27SDimitry Andric}
299*06c3fb27SDimitry Andric
300*06c3fb27SDimitry Andricmodule LLVM_Object {
301*06c3fb27SDimitry Andric  requires cplusplus
302*06c3fb27SDimitry Andric  umbrella "llvm/Object"
303*06c3fb27SDimitry Andric  module * { export * }
304*06c3fb27SDimitry Andric}
305*06c3fb27SDimitry Andric
306*06c3fb27SDimitry Andricmodule LLVM_Option {
307*06c3fb27SDimitry Andric  requires cplusplus
308*06c3fb27SDimitry Andric  umbrella "llvm/Option"
309*06c3fb27SDimitry Andric  module * { export * }
310*06c3fb27SDimitry Andric}
311*06c3fb27SDimitry Andric
312*06c3fb27SDimitry Andricmodule LLVM_ProfileData {
313*06c3fb27SDimitry Andric  requires cplusplus
314*06c3fb27SDimitry Andric
315*06c3fb27SDimitry Andric  umbrella "llvm/ProfileData"
316*06c3fb27SDimitry Andric  module * { export * }
317*06c3fb27SDimitry Andric
318*06c3fb27SDimitry Andric  textual header "llvm/ProfileData/InstrProfData.inc"
319*06c3fb27SDimitry Andric  textual header "llvm/ProfileData/MemProfData.inc"
320*06c3fb27SDimitry Andric  textual header "llvm/ProfileData/MIBEntryDef.inc"
321*06c3fb27SDimitry Andric}
322*06c3fb27SDimitry Andric
323*06c3fb27SDimitry Andric// FIXME: Mislayered?
324*06c3fb27SDimitry Andricmodule LLVM_Support_TargetRegistry {
325*06c3fb27SDimitry Andric  requires cplusplus
326*06c3fb27SDimitry Andric  header "llvm/Support/TargetRegistry.h"
327*06c3fb27SDimitry Andric  export *
328*06c3fb27SDimitry Andric}
329*06c3fb27SDimitry Andric
330*06c3fb27SDimitry Andricmodule LLVM_TableGen {
331*06c3fb27SDimitry Andric  requires cplusplus
332*06c3fb27SDimitry Andric  umbrella "llvm/TableGen"
333*06c3fb27SDimitry Andric  module * { export * }
334*06c3fb27SDimitry Andric}
335*06c3fb27SDimitry Andric
336*06c3fb27SDimitry Andricmodule LLVM_Transforms {
337*06c3fb27SDimitry Andric  requires cplusplus
338*06c3fb27SDimitry Andric  umbrella "llvm/Transforms"
339*06c3fb27SDimitry Andric
340*06c3fb27SDimitry Andric  module * { export * }
341*06c3fb27SDimitry Andric
342*06c3fb27SDimitry Andric  // Requires DEBUG_TYPE to be defined by including file.
343*06c3fb27SDimitry Andric  exclude header "llvm/Transforms/Utils/InstructionWorklist.h"
344*06c3fb27SDimitry Andric}
345*06c3fb27SDimitry Andric
346*06c3fb27SDimitry Andricextern module LLVM_Extern_Utils_DataTypes "module.extern.modulemap"
347*06c3fb27SDimitry Andric
348*06c3fb27SDimitry Andric// Build the module with the tablegen-generated files needed by the
349*06c3fb27SDimitry Andric// TargetParser module before building the TargetParser module itself.
350*06c3fb27SDimitry Andricmodule TargetParserGen {
351*06c3fb27SDimitry Andric  module RISCVTargetParserDef {
352*06c3fb27SDimitry Andric    header "llvm/TargetParser/RISCVTargetParser.h"
353*06c3fb27SDimitry Andric    extern module LLVM_Extern_TargetParser_Gen "module.extern.modulemap"
354*06c3fb27SDimitry Andric    export *
355*06c3fb27SDimitry Andric  }
356*06c3fb27SDimitry Andric}
357*06c3fb27SDimitry Andric
358*06c3fb27SDimitry Andric// A module covering ADT/ and Support/. These are intertwined and
359*06c3fb27SDimitry Andric// codependent, and notionally form a single module.
360*06c3fb27SDimitry Andricmodule LLVM_Utils {
361*06c3fb27SDimitry Andric  module ADT {
362*06c3fb27SDimitry Andric    requires cplusplus
363*06c3fb27SDimitry Andric
364*06c3fb27SDimitry Andric    umbrella "llvm/ADT"
365*06c3fb27SDimitry Andric    module * { export * }
366*06c3fb27SDimitry Andric  }
367*06c3fb27SDimitry Andric
368*06c3fb27SDimitry Andric  module Demangle {
369*06c3fb27SDimitry Andric    requires cplusplus
370*06c3fb27SDimitry Andric
371*06c3fb27SDimitry Andric    umbrella "llvm/Demangle"
372*06c3fb27SDimitry Andric    module * { export * }
373*06c3fb27SDimitry Andric
374*06c3fb27SDimitry Andric    textual header "llvm/Demangle/ItaniumNodes.def"
375*06c3fb27SDimitry Andric  }
376*06c3fb27SDimitry Andric
377*06c3fb27SDimitry Andric  module Support {
378*06c3fb27SDimitry Andric    requires cplusplus
379*06c3fb27SDimitry Andric
380*06c3fb27SDimitry Andric    umbrella "llvm/Support"
381*06c3fb27SDimitry Andric    module * { export * }
382*06c3fb27SDimitry Andric
383*06c3fb27SDimitry Andric    // Exclude this; it should only be used on Windows.
384*06c3fb27SDimitry Andric    exclude header "llvm/Support/Windows/WindowsSupport.h"
385*06c3fb27SDimitry Andric
386*06c3fb27SDimitry Andric    // Exclude these; they are fundamentally non-modular.
387*06c3fb27SDimitry Andric    exclude header "llvm/Support/PluginLoader.h"
388*06c3fb27SDimitry Andric    exclude header "llvm/Support/Solaris/sys/regset.h"
389*06c3fb27SDimitry Andric    textual header "llvm/Support/TargetOpcodes.def"
390*06c3fb27SDimitry Andric
391*06c3fb27SDimitry Andric  }
392*06c3fb27SDimitry Andric
393*06c3fb27SDimitry Andric  module TargetParser {
394*06c3fb27SDimitry Andric    requires cplusplus
395*06c3fb27SDimitry Andric
396*06c3fb27SDimitry Andric    umbrella "llvm/TargetParser"
397*06c3fb27SDimitry Andric    module * { export * }
398*06c3fb27SDimitry Andric
399*06c3fb27SDimitry Andric    // These are intended for textual inclusion.
400*06c3fb27SDimitry Andric    textual header "llvm/TargetParser/ARMTargetParser.def"
401*06c3fb27SDimitry Andric    textual header "llvm/TargetParser/CSKYTargetParser.def"
402*06c3fb27SDimitry Andric    textual header "llvm/TargetParser/X86TargetParser.def"
403*06c3fb27SDimitry Andric    textual header "llvm/TargetParser/LoongArchTargetParser.def"
404*06c3fb27SDimitry Andric  }
405*06c3fb27SDimitry Andric
406*06c3fb27SDimitry Andric  // This part of the module is usable from both C and C++ code.
407*06c3fb27SDimitry Andric  module ConvertUTF {
408*06c3fb27SDimitry Andric    header "llvm/Support/ConvertUTF.h"
409*06c3fb27SDimitry Andric    export *
410*06c3fb27SDimitry Andric  }
411*06c3fb27SDimitry Andric}
412*06c3fb27SDimitry Andric
413*06c3fb27SDimitry Andric// This is used for a $src == $build compilation. Otherwise we use
414*06c3fb27SDimitry Andric// LLVM_Support_DataTypes_Build, defined in a module map that is
415*06c3fb27SDimitry Andric// copied into the build area.
416*06c3fb27SDimitry Andricmodule LLVM_Support_DataTypes_Src {
417*06c3fb27SDimitry Andric  header "llvm/Support/DataTypes.h"
418*06c3fb27SDimitry Andric  export *
419*06c3fb27SDimitry Andric}
420*06c3fb27SDimitry Andric
421*06c3fb27SDimitry Andricmodule LLVM_WindowsManifest {
422*06c3fb27SDimitry Andric  requires cplusplus
423*06c3fb27SDimitry Andric  umbrella "llvm/WindowsManifest"
424*06c3fb27SDimitry Andric  module * { export * }
425*06c3fb27SDimitry Andric}
426