1module LLVM_Analysis { 2 requires cplusplus 3 umbrella "Analysis" 4 module * { export * } 5 6 // This is intended for (repeated) textual inclusion. 7 textual header "Analysis/TargetLibraryInfo.def" 8} 9 10module LLVM_AsmParser { requires cplusplus umbrella "AsmParser" module * { export * } } 11 12// A module covering CodeGen/ and Target/. These are intertwined 13// and codependent, and thus notionally form a single module. 14module LLVM_Backend { 15 requires cplusplus 16 17 module CodeGen { 18 umbrella "CodeGen" 19 module * { export * } 20 21 // FIXME: Why is this excluded? 22 exclude header "CodeGen/MachineValueType.h" 23 24 // Exclude these; they're intended to be included into only a single 25 // translation unit (or none) and aren't part of this module. 26 exclude header "CodeGen/CommandFlags.h" 27 exclude header "CodeGen/LinkAllAsmWriterComponents.h" 28 exclude header "CodeGen/LinkAllCodegenComponents.h" 29 30 // These are intended for (repeated) textual inclusion. 31 textual header "CodeGen/DIEValue.def" 32 } 33 34 module Target { 35 umbrella "Target" 36 module * { export * } 37 38 // This is intended for (repeated) textual inclusion. 39 textual header "Target/TargetOpcodes.def" 40 } 41} 42 43module LLVM_Bitcode { requires cplusplus umbrella "Bitcode" module * { export * } } 44module LLVM_Config { requires cplusplus umbrella "Config" module * { export * } } 45 46module LLVM_DebugInfo { 47 requires cplusplus 48 module DIContext { header "DebugInfo/DIContext.h" export * } 49} 50 51module LLVM_DebugInfo_DWARF { 52 requires cplusplus 53 54 umbrella "DebugInfo/DWARF" 55 module * { export * } 56} 57 58module LLVM_DebugInfo_PDB { 59 requires cplusplus 60 61 umbrella "DebugInfo/PDB" 62 module * { export * } 63 64 // Separate out this subdirectory; it's an optional component that depends on 65 // a separate library which might not be available. 66 // 67 // FIXME: There should be a better way to specify this. 68 exclude header "DebugInfo/PDB/DIA/DIADataStream.h" 69 exclude header "DebugInfo/PDB/DIA/DIAEnumDebugStreams.h" 70 exclude header "DebugInfo/PDB/DIA/DIAEnumLineNumbers.h" 71 exclude header "DebugInfo/PDB/DIA/DIAEnumSourceFiles.h" 72 exclude header "DebugInfo/PDB/DIA/DIAEnumSymbols.h" 73 exclude header "DebugInfo/PDB/DIA/DIALineNumber.h" 74 exclude header "DebugInfo/PDB/DIA/DIARawSymbol.h" 75 exclude header "DebugInfo/PDB/DIA/DIASession.h" 76 exclude header "DebugInfo/PDB/DIA/DIASourceFile.h" 77 exclude header "DebugInfo/PDB/DIA/DIASupport.h" 78} 79 80module LLVM_DebugInfo_PDB_DIA { 81 requires cplusplus 82 83 umbrella "DebugInfo/PDB/DIA" 84 module * { export * } 85} 86 87module LLVM_DebugInfo_CodeView { 88 requires cplusplus 89 90 umbrella "DebugInfo/CodeView" 91 module * { export * } 92 93 // These are intended for (repeated) textual inclusion. 94 textual header "DebugInfo/CodeView/TypeRecords.def" 95 textual header "DebugInfo/CodeView/CVSymbolTypes.def" 96} 97 98module LLVM_ExecutionEngine { 99 requires cplusplus 100 101 umbrella "ExecutionEngine" 102 module * { export * } 103 104 // Exclude this; it's an optional component of the ExecutionEngine. 105 exclude header "ExecutionEngine/OProfileWrapper.h" 106 107 // Exclude these; they're intended to be included into only a single 108 // translation unit (or none) and aren't part of this module. 109 exclude header "ExecutionEngine/MCJIT.h" 110 exclude header "ExecutionEngine/Interpreter.h" 111 exclude header "ExecutionEngine/OrcMCJITReplacement.h" 112} 113 114module LLVM_Pass { 115 module Pass { 116 // PassSupport.h and PassAnalysisSupport.h are made available only through 117 // Pass.h. 118 header "Pass.h" 119 header "PassSupport.h" 120 header "PassAnalysisSupport.h" 121 export * 122 } 123 124 module PassRegistry { header "PassRegistry.h" export * } 125 module InitializePasses { header "InitializePasses.h" export * } 126} 127 128module LLVM_intrinsic_gen { 129 requires cplusplus 130 131 // Delay building the modules containing dependencies to Attributes.h and 132 // Intrinsics.h because they need to be generated by tablegen first. 133 134 // Attributes.h 135 module IR_Argument { header "IR/Argument.h" export * } 136 module IR_Attributes { header "IR/Attributes.h" export * } 137 module IR_CallSite { header "IR/CallSite.h" export * } 138 module IR_ConstantFolder { header "IR/ConstantFolder.h" export * } 139 module IR_NoFolder { header "IR/NoFolder.h" export * } 140 module IR_Module { header "IR/Module.h" export * } 141 module IR_ModuleSummaryIndex { header "IR/ModuleSummaryIndex.h" export * } 142 module IR_Function { header "IR/Function.h" export * } 143 module IR_InstrTypes { header "IR/InstrTypes.h" export * } 144 module IR_Instructions { header "IR/Instructions.h" export * } 145 146 147 // Intrinsics.h 148 module IR_CFG { header "IR/CFG.h" export * } 149 module IR_ConstantRange { header "IR/ConstantRange.h" export * } 150 module IR_Dominators { header "IR/Dominators.h" export * } 151 module IR_IRBuilder { header "IR/IRBuilder.h" export * } 152 module IR_PassManager { header "IR/PassManager.h" export * } 153 module IR_PredIteratorCache { header "IR/PredIteratorCache.h" export * } 154 module IR_Verifier { header "IR/Verifier.h" export * } 155 module IR_InstIterator { header "IR/InstIterator.h" export * } 156 module IR_InstVisitor { header "IR/InstVisitor.h" export * } 157 module IR_Intrinsics { header "IR/Intrinsics.h" export * } 158 module IR_IntrinsicInst { header "IR/IntrinsicInst.h" export * } 159 module IR_PatternMatch { header "IR/PatternMatch.h" export * } 160 module IR_Statepoint { header "IR/Statepoint.h" export * } 161 162 export * 163} 164 165module LLVM_IR { 166 requires cplusplus 167 168 umbrella "IR" 169 module * { export * } 170 171 // These are intended for (repeated) textual inclusion. 172 textual header "IR/DebugInfoFlags.def" 173 textual header "IR/Instruction.def" 174 textual header "IR/Metadata.def" 175 textual header "IR/Value.def" 176} 177 178module LLVM_IRReader { requires cplusplus umbrella "IRReader" module * { export * } } 179module LLVM_LineEditor { requires cplusplus umbrella "LineEditor" module * { export * } } 180module LLVM_LTO { requires cplusplus umbrella "LTO" module * { export * } } 181 182module LLVM_MC { 183 requires cplusplus 184 185 // FIXME: Mislayered? 186 module Support_TargetRegistry { 187 header "Support/TargetRegistry.h" 188 export * 189 } 190 191 umbrella "MC" 192 module * { export * } 193 194 // Exclude this; it's fundamentally non-modular. 195 exclude header "MC/MCTargetOptionsCommandFlags.h" 196} 197 198module LLVM_Object { 199 requires cplusplus 200 umbrella "Object" 201 module * { export * } 202} 203 204module LLVM_Option { requires cplusplus umbrella "Option" module * { export * } } 205 206module LLVM_ProfileData { 207 requires cplusplus 208 209 umbrella "ProfileData" 210 module * { export * } 211 212 textual header "ProfileData/InstrProfData.inc" 213} 214 215module LLVM_TableGen { requires cplusplus umbrella "TableGen" module * { export * } } 216 217module LLVM_Transforms { 218 requires cplusplus 219 umbrella "Transforms" 220 module * { export * } 221 222 // FIXME: Excluded because it does bad things with the legacy pass manager. 223 exclude header "Transforms/IPO/PassManagerBuilder.h" 224} 225 226// A module covering ADT/ and Support/. These are intertwined and 227// codependent, and notionally form a single module. 228module LLVM_Utils { 229 module ADT { 230 requires cplusplus 231 232 umbrella "ADT" 233 module * { export * } 234 } 235 236 module Support { 237 requires cplusplus 238 239 umbrella "Support" 240 module * { export * } 241 242 // Exclude this; it's only included on Solaris. 243 exclude header "Support/Solaris.h" 244 245 // Exclude this; it's fundamentally non-modular. 246 exclude header "Support/PluginLoader.h" 247 248 // FIXME: Mislayered? 249 exclude header "Support/TargetRegistry.h" 250 251 // These are intended for textual inclusion. 252 textual header "Support/ARMTargetParser.def" 253 textual header "Support/AArch64TargetParser.def" 254 textual header "Support/Dwarf.def" 255 textual header "Support/MachO.def" 256 textual header "Support/ELFRelocs/AArch64.def" 257 textual header "Support/ELFRelocs/AMDGPU.def" 258 textual header "Support/ELFRelocs/ARM.def" 259 textual header "Support/ELFRelocs/AVR.def" 260 textual header "Support/ELFRelocs/Hexagon.def" 261 textual header "Support/ELFRelocs/i386.def" 262 textual header "Support/ELFRelocs/Lanai.def" 263 textual header "Support/ELFRelocs/Mips.def" 264 textual header "Support/ELFRelocs/PowerPC64.def" 265 textual header "Support/ELFRelocs/PowerPC.def" 266 textual header "Support/ELFRelocs/Sparc.def" 267 textual header "Support/ELFRelocs/SystemZ.def" 268 textual header "Support/ELFRelocs/x86_64.def" 269 textual header "Support/ELFRelocs/WebAssembly.def" 270 } 271 272 // This part of the module is usable from both C and C++ code. 273 module ConvertUTF { 274 header "Support/ConvertUTF.h" 275 export * 276 } 277} 278 279module LLVM_CodeGen_MachineValueType { 280 requires cplusplus 281 header "CodeGen/MachineValueType.h" 282 export * 283} 284 285// This is used for a $src == $build compilation. Otherwise we use 286// LLVM_Support_DataTypes_Build, defined in a module map that is 287// copied into the build area. 288module LLVM_Support_DataTypes_Src { 289 header "llvm/Support/DataTypes.h" 290 export * 291} 292