module LLVM_C {
  umbrella "llvm-c"
  module * { export * }
}

module LLVM_Analysis {
  requires cplusplus
  umbrella "llvm/Analysis"
  module * { export * }

  // This is intended for (repeated) textual inclusion.
  textual header "llvm/Analysis/ScalarFuncs.def"
  textual header "llvm/Analysis/TargetLibraryInfo.def"
  textual header "llvm/Analysis/VecFuncs.def"
}

module LLVM_AsmParser {
  requires cplusplus
  umbrella "llvm/AsmParser"
  module * { export * }
}

module LLVM_CodeGenTypes {
  requires cplusplus

  module LLT {
    header "llvm/CodeGenTypes/LowLevelType.h" export *
  }
  module MVT {
    header "llvm/CodeGenTypes/MachineValueType.h" export *
    extern module LLVM_Extern_CodeGenTypes_Gen "module.extern.modulemap"
  }
}

// A module covering CodeGen/ and Target/. These are intertwined
// and codependent, and thus notionally form a single module.
module LLVM_Backend {
  requires cplusplus

  module CodeGen {
    umbrella "llvm/CodeGen"
    module * { export * }

    // Exclude these; they're intended to be included into only a single
    // translation unit (or none) and aren't part of this module.
    exclude header "llvm/CodeGen/LinkAllAsmWriterComponents.h"
    exclude header "llvm/CodeGen/LinkAllCodegenComponents.h"

    // These are intended for (repeated) textual inclusion.
    textual header "llvm/CodeGen/DIEValue.def"
  }
}

// FIXME: Make this as a submodule of LLVM_Backend again.
//        Doing so causes a linker error in clang-format.
module LLVM_Backend_Target {
  umbrella "llvm/Target"
  module * { export * }
}

module LLVM_Bitcode {
 requires cplusplus
 umbrella "llvm/Bitcode"
 module * { export * }
}

module LLVM_Bitstream {
 requires cplusplus
 umbrella "llvm/Bitstream"
 module * { export * }
}

module LLVM_BinaryFormat {
    requires cplusplus
    umbrella "llvm/BinaryFormat" module * { export * }
    textual header "llvm/BinaryFormat/Dwarf.def"
    textual header "llvm/BinaryFormat/DXContainerConstants.def"
    textual header "llvm/BinaryFormat/DynamicTags.def"
    textual header "llvm/BinaryFormat/MachO.def"
    textual header "llvm/BinaryFormat/MinidumpConstants.def"
    textual header "llvm/BinaryFormat/Swift.def"
    textual header "llvm/BinaryFormat/ELFRelocs/AArch64.def"
    textual header "llvm/BinaryFormat/ELFRelocs/AMDGPU.def"
    textual header "llvm/BinaryFormat/ELFRelocs/ARM.def"
    textual header "llvm/BinaryFormat/ELFRelocs/ARC.def"
    textual header "llvm/BinaryFormat/ELFRelocs/AVR.def"
    textual header "llvm/BinaryFormat/ELFRelocs/BPF.def"
    textual header "llvm/BinaryFormat/ELFRelocs/CSKY.def"
    textual header "llvm/BinaryFormat/ELFRelocs/Hexagon.def"
    textual header "llvm/BinaryFormat/ELFRelocs/i386.def"
    textual header "llvm/BinaryFormat/ELFRelocs/Lanai.def"
    textual header "llvm/BinaryFormat/ELFRelocs/LoongArch.def"
    textual header "llvm/BinaryFormat/ELFRelocs/M68k.def"
    textual header "llvm/BinaryFormat/ELFRelocs/Mips.def"
    textual header "llvm/BinaryFormat/ELFRelocs/MSP430.def"
    textual header "llvm/BinaryFormat/ELFRelocs/PowerPC64.def"
    textual header "llvm/BinaryFormat/ELFRelocs/PowerPC.def"
    textual header "llvm/BinaryFormat/ELFRelocs/RISCV.def"
    textual header "llvm/BinaryFormat/ELFRelocs/RISCV_nonstandard.def"
    textual header "llvm/BinaryFormat/ELFRelocs/Sparc.def"
    textual header "llvm/BinaryFormat/ELFRelocs/SystemZ.def"
    textual header "llvm/BinaryFormat/ELFRelocs/VE.def"
    textual header "llvm/BinaryFormat/ELFRelocs/x86_64.def"
    textual header "llvm/BinaryFormat/ELFRelocs/Xtensa.def"
    textual header "llvm/BinaryFormat/WasmRelocs.def"
    textual header "llvm/BinaryFormat/MsgPack.def"
}

module LLVM_Config {
  requires cplusplus
  umbrella "llvm/Config"
  extern module LLVM_Extern_Config_Def "module.extern.modulemap"
  module * { export * }
}

module LLVM_DebugInfo {
  requires cplusplus
  module DIContext { header "llvm/DebugInfo/DIContext.h" export * }
}

module LLVM_DebugInfo_DWARF {
  requires cplusplus

  umbrella "llvm/DebugInfo/DWARF"
  module * { export * }
}

module LLVM_DebugInfo_PDB {
  requires cplusplus

  umbrella "llvm/DebugInfo/PDB"
  module * { export * }

  // Separate out this subdirectory; it's an optional component that depends on
  // a separate library which might not be available.
  //
  // FIXME: There should be a better way to specify this.
  exclude header "llvm/DebugInfo/PDB/DIA/DIADataStream.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumFrameData.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumInjectedSources.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumSectionContribs.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAEnumTables.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAError.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAFrameData.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAInjectedSource.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIALineNumber.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIARawSymbol.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIASectionContrib.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIASession.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIASourceFile.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIASupport.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIATable.h"
  exclude header "llvm/DebugInfo/PDB/DIA/DIAUtils.h"
}

module LLVM_DebugInfo_PDB_DIA {
  requires cplusplus

  umbrella "llvm/DebugInfo/PDB/DIA"
  module * { export * }
}

module LLVM_DebugInfo_MSF {
  requires cplusplus

  umbrella "llvm/DebugInfo/MSF"
  module * { export * }
}

module LLVM_DebugInfo_CodeView {
  requires cplusplus

  umbrella "llvm/DebugInfo/CodeView"
  module * { export * }

  // These are intended for (repeated) textual inclusion.
  textual header "llvm/DebugInfo/CodeView/CodeViewRegisters.def"
  textual header "llvm/DebugInfo/CodeView/CodeViewTypes.def"
  textual header "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
}

module LLVM_DWARFLinker {
  requires cplusplus

  umbrella "llvm/DWARFLinker"
  module * { export * }
}

module LLVM_ExecutionEngine {
  requires cplusplus

  umbrella "llvm/ExecutionEngine"
  module * { export * }

  // Exclude this; it's an optional component of the ExecutionEngine.
  exclude header "llvm/ExecutionEngine/OProfileWrapper.h"

  // Exclude these; they're intended to be included into only a single
  // translation unit (or none) and aren't part of this module.
  exclude header "llvm/ExecutionEngine/MCJIT.h"
  exclude header "llvm/ExecutionEngine/Interpreter.h"

  // Exclude headers from LLVM_OrcSupport.
  exclude header "llvm/ExecutionEngine/Orc/Shared/OrcError.h"
}

module LLVM_FileCheck {
  requires cplusplus

  umbrella "llvm/FileCheck"
  module * { export * }
}

module LLVM_Frontend_OpenMP {
  requires cplusplus

  umbrella "llvm/Frontend/OpenMP"
  module * { export * }

  exclude header "llvm/Frontend/OpenMP/OMPKinds.def"
}

// Orc utilities that don't depend only on Support (not ExecutionEngine or
// IR). This is a workaround for ExecutionEngine's broken layering, and will
// be removed in the future.
module LLVM_OrcSupport {
  requires cplusplus

  header "llvm/ExecutionEngine/Orc/Shared/OrcError.h"

  export *
}

module LLVM_Pass {
  module Pass {
    // PassSupport.h and PassAnalysisSupport.h are made available only through
    // Pass.h.
    header "llvm/Pass.h"
    textual header "llvm/PassSupport.h"
    textual header "llvm/PassAnalysisSupport.h"
    export *
  }

  module PassRegistry { header "llvm/PassRegistry.h" export * }
  module InitializePasses { header "llvm/InitializePasses.h" export * }
}

module LLVM_IR {
  requires cplusplus

  umbrella "llvm/IR"
  module * { export * }

  extern module LLVM_Extern_IR_Attributes_Gen "module.extern.modulemap"
  extern module LLVM_Extern_IR_Intrinsics_Gen "module.extern.modulemap"
  extern module LLVM_Extern_IR_Intrinsics_Enum "module.extern.modulemap"

  // These are intended for (repeated) textual inclusion.
  textual header "llvm/IR/ConstrainedOps.def"
  textual header "llvm/IR/DebugInfoFlags.def"
  textual header "llvm/IR/Instruction.def"
  textual header "llvm/IR/Metadata.def"
  textual header "llvm/IR/FixedMetadataKinds.def"
  textual header "llvm/IR/Value.def"
  textual header "llvm/IR/VPIntrinsics.def"
  textual header "llvm/IR/RuntimeLibcalls.def"
}

module LLVM_IRReader {
  requires cplusplus
  umbrella "llvm/IRReader"
  module * { export * }
}

module LLVM_LineEditor {
  requires cplusplus
  umbrella "llvm/LineEditor"
  module * { export * }
}

module LLVM_LTO {
  requires cplusplus
  umbrella "llvm/LTO"
  module * { export * }
}

module LLVM_MC {
  requires cplusplus

  umbrella "llvm/MC"
  module * { export * }
}

module LLVM_Object {
  requires cplusplus
  umbrella "llvm/Object"
  module * { export * }
}

module LLVM_Option {
  requires cplusplus
  umbrella "llvm/Option"
  module * { export * }
}

module LLVM_ProfileData {
  requires cplusplus

  umbrella "llvm/ProfileData"
  module * { export * }

  textual header "llvm/ProfileData/InstrProfData.inc"
  textual header "llvm/ProfileData/MemProfData.inc"
  textual header "llvm/ProfileData/MIBEntryDef.inc"
}

// FIXME: Mislayered?
module LLVM_Support_TargetRegistry {
  requires cplusplus
  header "llvm/Support/TargetRegistry.h"
  export *
}

module LLVM_TableGen {
  requires cplusplus
  umbrella "llvm/TableGen"
  module * { export * }
}

module LLVM_Transforms {
  requires cplusplus
  umbrella "llvm/Transforms"

  module * { export * }

  // Requires DEBUG_TYPE to be defined by including file.
  exclude header "llvm/Transforms/Utils/InstructionWorklist.h"
}

extern module LLVM_Extern_Utils_DataTypes "module.extern.modulemap"

// Build the module with the tablegen-generated files needed by the
// TargetParser module before building the TargetParser module itself.
module TargetParserGen {
  module AArch64TargetParserDef {
    textual header "llvm/TargetParser/AArch64CPUFeatures.inc"
    textual header "llvm/TargetParser/AArch64FeatPriorities.inc"
    header "llvm/TargetParser/AArch64TargetParser.h"
    extern module LLVM_Extern_TargetParser_Gen "module.extern.modulemap"
    export *
  }
  module RISCVTargetParserDef {
    header "llvm/TargetParser/RISCVTargetParser.h"
    extern module LLVM_Extern_TargetParser_Gen "module.extern.modulemap"
    export *
  }
}

// A module covering ADT/ and Support/. These are intertwined and
// codependent, and notionally form a single module.
module LLVM_Utils {
  module ADT {
    requires cplusplus

    umbrella "llvm/ADT"
    module * { export * }
  }

  module Demangle {
    requires cplusplus

    umbrella "llvm/Demangle"
    module * { export * }

    textual header "llvm/Demangle/ItaniumNodes.def"
  }

  module Support {
    requires cplusplus

    umbrella "llvm/Support"
    module * { export * }

    // Exclude this; it should only be used on Windows.
    exclude header "llvm/Support/Windows/WindowsSupport.h"

    // Exclude these; they are fundamentally non-modular.
    exclude header "llvm/Support/PluginLoader.h"
    exclude header "llvm/Support/Solaris/sys/regset.h"
    textual header "llvm/Support/TargetOpcodes.def"

  }

  module TargetParser {
    requires cplusplus

    umbrella "llvm/TargetParser"
    module * { export * }

    // These are intended for textual inclusion.
    textual header "llvm/TargetParser/ARMTargetParser.def"
    textual header "llvm/TargetParser/CSKYTargetParser.def"
    textual header "llvm/TargetParser/X86TargetParser.def"
    textual header "llvm/TargetParser/LoongArchTargetParser.def"
    textual header "llvm/TargetParser/PPCTargetParser.def"
  }

  // This part of the module is usable from both C and C++ code.
  module ConvertUTF {
    header "llvm/Support/ConvertUTF.h"
    export *
  }
}

// This is used for a $src == $build compilation. Otherwise we use
// LLVM_Support_DataTypes_Build, defined in a module map that is
// copied into the build area.
module LLVM_Support_DataTypes_Src {
  header "llvm/Support/DataTypes.h"
  export *
}

module LLVM_WindowsManifest {
  requires cplusplus
  umbrella "llvm/WindowsManifest"
  module * { export * }
}

module LLVM_SandboxIR {
  requires cplusplus

  umbrella "llvm/SandboxIR"
  module * { export * }

  textual header "llvm/SandboxIR/Values.def"
}
