Files
clang-p2996/lldb/include/lldb/module.modulemap
Raphael Isemann 2c77eefe85 Add modules support for lldb headers in include/
Summary:
This patch adds a modulemap which allows compiling the lldb headers into C++ modules
(for example in builds with LLVM_ENABLE_MODULES=On).

Even though most of the affected code has been cleaned up to work with the more strict
C++ module semantics, there are still some workarounds left in the current modulemap
(the most obvious one is the big `lldb` wrapper module).

It also moves the Obj-C++ files in lldb to their own subdirectories. This was necessary
because we need to filter out the modules flags for this code.

Note: With the latest clang and libstdc++ it seems necessary to have a STL C++ module
to get a working LLVM_ENABLE_MODULES build for lldb. Otherwise clang will falsely
detect ODR violations in the textually included STL code inside the lldb modules.

Reviewers: aprantl, bruno

Reviewed By: aprantl, bruno

Subscribers: mgorny, yamaguchi, v.g.vassilev, lldb-commits

Differential Revision: https://reviews.llvm.org/D47929

llvm-svn: 334611
2018-06-13 15:50:45 +00:00

140 lines
4.5 KiB
Plaintext

module lldb_API {
requires cplusplus
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 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 Predicate { header "Host/Predicate.h" export * }
module ProcessLauncher { header "Host/ProcessLauncher.h" export * }
module ProcessRunLock { header "Host/ProcessRunLock.h" export * }
module PseudoTerminal { header "Host/PseudoTerminal.h" export * }
module SocketAddress { header "Host/SocketAddress.h" export * }
module Socket { header "Host/Socket.h" export * }
module StringConvert { header "Host/StringConvert.h" export * }
module Symbols { header "Host/Symbols.h" export * }
module TaskPool { header "Host/TaskPool.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 * }
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 * }
}