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