
module lldb_API {
  requires cplusplus

  textual header "Utility/ReproducerInstrumentation.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 StringConvert { textual header "Host/StringConvert.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"
    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 * }
}
