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