r210726 - [modules] Add first-draft module maps for Clang. These don't cover everything

Richard Smith richard at metafoo.co.uk
Fri Jun 27 08:26:29 PDT 2014


On Mon, Jun 23, 2014 at 8:06 AM, Alp Toker <alp at nuanti.com> wrote:

>
> On 12/06/2014 03:32, Richard Smith wrote:
>
>> Author: rsmith
>> Date: Wed Jun 11 19:32:32 2014
>> New Revision: 210726
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=210726&view=rev
>> Log:
>> [modules] Add first-draft module maps for Clang. These don't cover
>> everything
>> yet, but they're enough for a clean bootstrap (with a few local patches
>> that
>> are yet to be committed).
>>
>> Added:
>>      cfe/trunk/include/clang-c/module.modulemap
>>      cfe/trunk/include/clang/module.modulemap
>>
>> Added: cfe/trunk/include/clang-c/module.modulemap
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/
>> clang-c/module.modulemap?rev=210726&view=auto
>> ============================================================
>> ==================
>> --- cfe/trunk/include/clang-c/module.modulemap (added)
>> +++ cfe/trunk/include/clang-c/module.modulemap Wed Jun 11 19:32:32 2014
>> @@ -0,0 +1,5 @@
>> +module Clang_C {
>> +  requires cplusplus
>> +  umbrella "."
>> +  module * { export * }
>> +}
>>
>> Added: cfe/trunk/include/clang/module.modulemap
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/
>> clang/module.modulemap?rev=210726&view=auto
>> ============================================================
>> ==================
>> --- cfe/trunk/include/clang/module.modulemap (added)
>> +++ cfe/trunk/include/clang/module.modulemap Wed Jun 11 19:32:32 2014
>> @@ -0,0 +1,109 @@
>> +module Clang_Analysis {
>> +  requires cplusplus
>> +  umbrella "Analysis"
>> +
>> +  // This file is intended for repeated textual inclusion.
>> +  exclude header "Analysis/Analyses/ThreadSafetyOps.def"
>> +
>> +  module * { export * }
>> +}
>> +
>> +module Clang_AST {
>> +  requires cplusplus
>> +  umbrella "AST"
>> +
>> +  // These files are intended for repeated textual inclusion.
>> +  exclude header "AST/BuiltinTypes.def"
>> +  exclude header "AST/TypeLocNodes.def"
>> +  exclude header "AST/TypeNodes.def"
>> +
>> +  module * { export * }
>> +}
>> +
>> +module Clang_ASTMatchers { requires cplusplus umbrella "ASTMatchers"
>> module * { export * } }
>> +
>> +module Clang_Basic {
>> +  requires cplusplus
>> +  umbrella "Basic"
>> +
>> +  // These files are intended for repeated textual inclusion.
>> +  exclude header "Basic/BuiltinsAArch64.def"
>> +  exclude header "Basic/BuiltinsARM64.def"
>> +  exclude header "Basic/BuiltinsARM.def"
>> +  exclude header "Basic/Builtins.def"
>> +  exclude header "Basic/BuiltinsHexagon.def"
>> +  exclude header "Basic/BuiltinsMips.def"
>> +  exclude header "Basic/BuiltinsNEON.def"
>> +  exclude header "Basic/BuiltinsNVPTX.def"
>> +  exclude header "Basic/BuiltinsPPC.def"
>> +  exclude header "Basic/BuiltinsX86.def"
>> +  exclude header "Basic/BuiltinsXCore.def"
>> +  exclude header "Basic/DiagnosticOptions.def"
>> +  exclude header "Basic/LangOptions.def"
>> +  exclude header "Basic/OpenCLExtensions.def"
>> +  exclude header "Basic/OpenMPKinds.def"
>> +  exclude header "Basic/OperatorKinds.def"
>> +  exclude header "Basic/Sanitizers.def"
>> +  exclude header "Basic/TokenKinds.def"
>> +
>> +  // This file is one big layering violation.
>> +  exclude header "Basic/AllDiagnostics.h"
>> +
>> +  // This file includes a header from Lex.
>> +  exclude header "Basic/PlistSupport.h"
>> +
>> +  // FIXME: This is logically a part of Basic, but has been put in the
>> wrong place.
>> +  header "StaticAnalyzer/Core/AnalyzerOptions.h"
>> +
>> +  module * { export * }
>> +}
>> +
>> +module Clang_CodeGen { requires cplusplus umbrella "CodeGen" module * {
>> export * } }
>> +module Clang_Config { requires cplusplus umbrella "Config" module * {
>> export * } }
>> +
>> +module Clang_Driver {
>> +  requires cplusplus
>> +  umbrella "Driver"
>> +
>> +  // This file is intended for repeated textual inclusion.
>> +  exclude header "Driver/Types.def"
>> +
>> +  module * { export * }
>> +}
>> +
>> +module Clang_Edit { requires cplusplus umbrella "Edit" module * { export
>> * } }
>> +module Clang_Format { requires cplusplus umbrella "Format" module * {
>> export * } }
>> +
>> +module Clang_Frontend {
>> +  requires cplusplus
>> +  umbrella "Frontend"
>> +
>> +  // These files are intended for repeated textual inclusion.
>> +  exclude header "Frontend/CodeGenOptions.def"
>> +  exclude header "Frontend/LangStandards.def"
>> +
>> +  module * { export * }
>> +}
>> +
>> +module Clang_FrontendTool { requires cplusplus umbrella "FrontendTool"
>> module * { export * } }
>> +module Clang_Index { requires cplusplus umbrella "Index" module * {
>> export * } }
>> +module Clang_Lex { requires cplusplus umbrella "Lex" module * { export *
>> } }
>> +module Clang_Parse { requires cplusplus umbrella "Parse" module * {
>> export * } }
>> +module Clang_Rewrite { requires cplusplus umbrella "Rewrite" module * {
>> export * } }
>> +module Clang_Sema { requires cplusplus umbrella "Sema" module * { export
>> * } }
>>
>
> Hi Richard,
>
> I'm trying to understand the clang modules setup and have a question for
> you:
>
> include/clang/Sema/CodeCompleteConsumer.h includes "clang-c/Index.h"
>
> Is that layered OK as far as modules are concerned? If not, how come it
> didn't show up as an issue in your modules build?


Looks fine to me. The clang-c module interface doesn't depend on any other
part of Clang. (Obviously the implementation of it does, but that's not a
problem for modules). That said, it seems like a layering violation in a
more general sense.

Alp.
>
>
>
>  +module Clang_Serialization { requires cplusplus umbrella "Serialization"
>> module * { export * } }
>> +
>> +module Clang_StaticAnalyzer {
>> +  requires cplusplus
>> +  umbrella "StaticAnalyzer"
>> +
>> +  // This file is intended for repeated textual inclusion.
>> +  exclude header "StaticAnalyzer/Core/Analyses.def"
>> +
>> +  // FIXME: This is logically a part of Basic, but has been put in the
>> wrong place.
>> +  exclude header "StaticAnalyzer/Core/AnalyzerOptions.h"
>> +
>> +  module * { export * }
>> +}
>> +
>> +module Clang_Tooling { requires cplusplus umbrella "Tooling" module * {
>> export * } }
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
> --
> http://www.nuanti.com
> the browser experts
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140627/a3ed9f2f/attachment.html>


More information about the cfe-commits mailing list