
module lldb_API {
  requires cplusplus

  textual header "Utility/Instrumentation.h"

  umbrella "API"
  module * { export * }
}

module lldb_Host {
  requires cplusplus

  // Because we have OS-specific headers in Host, we just list
  // all OS-independent headers here that will include the correct
  // OS-specific header for us.
  module ConnectionFileDescriptor { header "Host/ConnectionFileDescriptor.h" export * }
  module Debug { header "Host/Debug.h" export * }
  module Editline { header "Host/Editline.h" export * }
  module FileCache { header "Host/FileCache.h" export * }
  module File { header "Host/File.h" export * }
  module FileAction { header "Host/FileAction.h" export * }
  module FileSystem { header "Host/FileSystem.h" export * }
  module HostGetOpt { header "Host/HostGetOpt.h" export * }
  module Host { header "Host/Host.h" export * }
  module HostInfoBase { header "Host/HostInfoBase.h" export * }
  module HostInfo { header "Host/HostInfo.h" export * }
  module HostNativeProcessBase { header "Host/HostNativeProcessBase.h" export * }
  module HostNativeProcess { header "Host/HostNativeProcess.h" export * }
  module HostNativeThreadBase { header "Host/HostNativeThreadBase.h" export * }
  module HostNativeThreadForward { header "Host/HostNativeThreadForward.h" export * }
  module HostNativeThread { header "Host/HostNativeThread.h" export * }
  module HostProcess { header "Host/HostProcess.h" export * }
  module HostThread { header "Host/HostThread.h" export * }
  module LockFileBase { header "Host/LockFileBase.h" export * }
  module LockFile { header "Host/LockFile.h" export * }
  module MainLoopBase { header "Host/MainLoopBase.h" export * }
  module MainLoop { header "Host/MainLoop.h" export * }
  module MonitoringProcessLauncher { header "Host/MonitoringProcessLauncher.h" export * }
  module OptionParser { header "Host/OptionParser.h" export * }
  module PipeBase { header "Host/PipeBase.h" export * }
  module Pipe { header "Host/Pipe.h" export * }
  module PosixApi { header "Host/PosixApi.h" export * }
  module ProcessLauncher { header "Host/ProcessLauncher.h" export * }
  module ProcessLaunchInfo { header "Host/ProcessLaunchInfo.h" export * }
  module ProcessRunLock { header "Host/ProcessRunLock.h" export * }
  module PseudoTerminal { header "Host/PseudoTerminal.h" export * }
  module SafeMachO { header "Host/SafeMachO.h" export * }
  module SocketAddress { header "Host/SocketAddress.h" export * }
  module Socket { header "Host/Socket.h" export * }
  module Terminal { header "Host/Terminal.h" export * }
  module ThreadLauncher { header "Host/ThreadLauncher.h" export * }
  module Time { header "Host/Time.h" export * }
  module XML { header "Host/XML.h" export * }

  module common {
    umbrella "Host/common"
    module * { export * }
  }

  export *
}

module lldb_Initialization {
  requires cplusplus

  umbrella "Initialization"
  module * { export * }
}


module lldb_Wrapper {

  module lldb_Breakpoint {
    requires cplusplus

    umbrella "Breakpoint"
    module * { export * }
  }

  module lldb_Core {
    requires cplusplus

    umbrella "Core"
    module * { export * }
  }

  module lldb_DataFormatters {
    requires cplusplus

    umbrella "DataFormatters"
    module * { export * }
  }

  module lldb_Expression {
    requires cplusplus

    umbrella "Expression"
    module * { export * }
    // TODO: This file includes a non-public header.
    exclude header "Expression/REPL.h"
  }

  module lldb_Interpreter {
    requires cplusplus

    umbrella "Interpreter"
    module * { export * }
  }

  module lldb_Symbol {
    requires cplusplus

    umbrella "Symbol"
    module * { export * }
  }
  module lldb_Target {
    requires cplusplus

    umbrella "Target"
    textual header "Target/AppleArm64ExceptionClass.def"
    module * { export * }
  }
}


module lldb_Utility {
  requires cplusplus

  umbrella "Utility"
  module * { export * }

  module lldb_defines { header "lldb-defines.h" export * }
  module lldb_enumerations { header "lldb-enumerations.h" export * }
  module lldb_forward { header "lldb-forward.h" export * }
  module lldb_private_enumerations { header "lldb-private-enumerations.h" export * }
  module lldb_private_defines { header "lldb-private-defines.h" export * }
  module lldb_private_forward { header "lldb-private-forward.h" export * }
  module lldb_private { header "lldb-private.h" export * }
  module lldb_private_interfaces { header "lldb-private-interfaces.h" export * }
  module lldb_private_types { header "lldb-private-types.h" export * }
  module lldb_public { header "lldb-public.h" export * }
  module lldb_types { header "lldb-types.h" export * }
  module lldb_versioning { header "lldb-versioning.h" export * }
}
