<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jun 23, 2014 at 8:06 AM, Alp Toker <span dir="ltr"><<a href="mailto:alp@nuanti.com" target="_blank">alp@nuanti.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class=""><br>
On 12/06/2014 03:32, Richard Smith wrote:<br>
</div><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: rsmith<br>
Date: Wed Jun 11 19:32:32 2014<br>
New Revision: 210726<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=210726&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=210726&view=rev</a><br>
Log:<br>
[modules] Add first-draft module maps for Clang. These don't cover everything<br>
yet, but they're enough for a clean bootstrap (with a few local patches that<br>
are yet to be committed).<br>
<br>
Added:<br>
     cfe/trunk/include/clang-c/<u></u>module.modulemap<br>
     cfe/trunk/include/clang/<u></u>module.modulemap<br>
<br>
Added: cfe/trunk/include/clang-c/<u></u>module.modulemap<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/module.modulemap?rev=210726&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/include/<u></u>clang-c/module.modulemap?rev=<u></u>210726&view=auto</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/include/clang-c/<u></u>module.modulemap (added)<br>
+++ cfe/trunk/include/clang-c/<u></u>module.modulemap Wed Jun 11 19:32:32 2014<br>
@@ -0,0 +1,5 @@<br>
+module Clang_C {<br>
+  requires cplusplus<br>
+  umbrella "."<br>
+  module * { export * }<br>
+}<br>
<br>
Added: cfe/trunk/include/clang/<u></u>module.modulemap<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/module.modulemap?rev=210726&view=auto" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/include/<u></u>clang/module.modulemap?rev=<u></u>210726&view=auto</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/include/clang/<u></u>module.modulemap (added)<br>
+++ cfe/trunk/include/clang/<u></u>module.modulemap Wed Jun 11 19:32:32 2014<br>
@@ -0,0 +1,109 @@<br>
+module Clang_Analysis {<br>
+  requires cplusplus<br>
+  umbrella "Analysis"<br>
+<br>
+  // This file is intended for repeated textual inclusion.<br>
+  exclude header "Analysis/Analyses/<u></u>ThreadSafetyOps.def"<br>
+<br>
+  module * { export * }<br>
+}<br>
+<br>
+module Clang_AST {<br>
+  requires cplusplus<br>
+  umbrella "AST"<br>
+<br>
+  // These files are intended for repeated textual inclusion.<br>
+  exclude header "AST/BuiltinTypes.def"<br>
+  exclude header "AST/TypeLocNodes.def"<br>
+  exclude header "AST/TypeNodes.def"<br>
+<br>
+  module * { export * }<br>
+}<br>
+<br>
+module Clang_ASTMatchers { requires cplusplus umbrella "ASTMatchers" module * { export * } }<br>
+<br>
+module Clang_Basic {<br>
+  requires cplusplus<br>
+  umbrella "Basic"<br>
+<br>
+  // These files are intended for repeated textual inclusion.<br>
+  exclude header "Basic/BuiltinsAArch64.def"<br>
+  exclude header "Basic/BuiltinsARM64.def"<br>
+  exclude header "Basic/BuiltinsARM.def"<br>
+  exclude header "Basic/Builtins.def"<br>
+  exclude header "Basic/BuiltinsHexagon.def"<br>
+  exclude header "Basic/BuiltinsMips.def"<br>
+  exclude header "Basic/BuiltinsNEON.def"<br>
+  exclude header "Basic/BuiltinsNVPTX.def"<br>
+  exclude header "Basic/BuiltinsPPC.def"<br>
+  exclude header "Basic/BuiltinsX86.def"<br>
+  exclude header "Basic/BuiltinsXCore.def"<br>
+  exclude header "Basic/DiagnosticOptions.def"<br>
+  exclude header "Basic/LangOptions.def"<br>
+  exclude header "Basic/OpenCLExtensions.def"<br>
+  exclude header "Basic/OpenMPKinds.def"<br>
+  exclude header "Basic/OperatorKinds.def"<br>
+  exclude header "Basic/Sanitizers.def"<br>
+  exclude header "Basic/TokenKinds.def"<br>
+<br>
+  // This file is one big layering violation.<br>
+  exclude header "Basic/AllDiagnostics.h"<br>
+<br>
+  // This file includes a header from Lex.<br>
+  exclude header "Basic/PlistSupport.h"<br>
+<br>
+  // FIXME: This is logically a part of Basic, but has been put in the wrong place.<br>
+  header "StaticAnalyzer/Core/<u></u>AnalyzerOptions.h"<br>
+<br>
+  module * { export * }<br>
+}<br>
+<br>
+module Clang_CodeGen { requires cplusplus umbrella "CodeGen" module * { export * } }<br>
+module Clang_Config { requires cplusplus umbrella "Config" module * { export * } }<br>
+<br>
+module Clang_Driver {<br>
+  requires cplusplus<br>
+  umbrella "Driver"<br>
+<br>
+  // This file is intended for repeated textual inclusion.<br>
+  exclude header "Driver/Types.def"<br>
+<br>
+  module * { export * }<br>
+}<br>
+<br>
+module Clang_Edit { requires cplusplus umbrella "Edit" module * { export * } }<br>
+module Clang_Format { requires cplusplus umbrella "Format" module * { export * } }<br>
+<br>
+module Clang_Frontend {<br>
+  requires cplusplus<br>
+  umbrella "Frontend"<br>
+<br>
+  // These files are intended for repeated textual inclusion.<br>
+  exclude header "Frontend/CodeGenOptions.def"<br>
+  exclude header "Frontend/LangStandards.def"<br>
+<br>
+  module * { export * }<br>
+}<br>
+<br>
+module Clang_FrontendTool { requires cplusplus umbrella "FrontendTool" module * { export * } }<br>
+module Clang_Index { requires cplusplus umbrella "Index" module * { export * } }<br>
+module Clang_Lex { requires cplusplus umbrella "Lex" module * { export * } }<br>
+module Clang_Parse { requires cplusplus umbrella "Parse" module * { export * } }<br>
+module Clang_Rewrite { requires cplusplus umbrella "Rewrite" module * { export * } }<br>
+module Clang_Sema { requires cplusplus umbrella "Sema" module * { export * } }<br>
</blockquote>
<br></div></div>
Hi Richard,<br>
<br>
I'm trying to understand the clang modules setup and have a question for you:<br>
<br>
include/clang/Sema/<u></u>CodeCompleteConsumer.h includes "clang-c/Index.h"<br>
<br>
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?</blockquote><div><br></div><div>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.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="HOEnZb"><font color="#888888">
Alp.</font></span><div class="im HOEnZb"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+module Clang_Serialization { requires cplusplus umbrella "Serialization" module * { export * } }<br>
+<br>
+module Clang_StaticAnalyzer {<br>
+  requires cplusplus<br>
+  umbrella "StaticAnalyzer"<br>
+<br>
+  // This file is intended for repeated textual inclusion.<br>
+  exclude header "StaticAnalyzer/Core/Analyses.<u></u>def"<br>
+<br>
+  // FIXME: This is logically a part of Basic, but has been put in the wrong place.<br>
+  exclude header "StaticAnalyzer/Core/<u></u>AnalyzerOptions.h"<br>
+<br>
+  module * { export * }<br>
+}<br>
+<br>
+module Clang_Tooling { requires cplusplus umbrella "Tooling" module * { export * } }<br>
<br>
<br>
______________________________<u></u>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-commits</a><br>
</blockquote>
<br></div><div class="HOEnZb"><div class="h5">
-- <br>
<a href="http://www.nuanti.com" target="_blank">http://www.nuanti.com</a><br>
the browser experts<br>
<br>
</div></div></blockquote></div><br></div></div>