xref: /llvm-project/clang/test/Modules/Inputs/module.modulemap (revision ee044d5e651787c5d73b37b2cbb7ca6444bb0502)
1module c_library [extern_c] { module inner { header "c-header.h" } }
2module cxx_library { header "cxx-header.h" requires cplusplus }
3module c_library_bad [extern_c] { header "c-header-bad.h" }
4module diamond_top { header "diamond_top.h" }
5module diamond_left {
6  header "diamond_left.h"
7  export diamond_top
8}
9module diamond_right {
10  header "diamond_right.h"
11  export diamond_top
12}
13module diamond_bottom {
14  header "diamond_bottom.h"
15  export *
16}
17module irgen { header "irgen.h" }
18module cxx_irgen_top { header "cxx-irgen-top.h" }
19module cxx_irgen_left { header "cxx-irgen-left.h" }
20module cxx_irgen_right { header "cxx-irgen-right.h" }
21module lookup_left_objc { header "lookup_left.h" }
22module lookup_right_objc { header "lookup_right.h" }
23module lookup_left_cxx { header "lookup_left.hpp" }
24module lookup_right_cxx { header "lookup_right.hpp" }
25module module_private_left { header "module_private_left.h" }
26module module_private_right { header "module_private_right.h" }
27module macros_top {
28  header "macros_top.h"
29  explicit module b { header "macros_top_b.h" }
30  explicit module c { header "macros_top_c.h" }
31}
32module macros_left {
33  header "macros_left.h"
34  export *
35}
36module macros_right {
37  header "macros_right.h"
38  export *
39  explicit module undef {
40    header "macros_right_undef.h"
41  }
42}
43module macros_bottom {
44  header "macros_bottom.h"
45  export *
46}
47module macros { header "macros.h" }
48module macros_other { header "macros_other.h" }
49module category_top { header "category_top.h" }
50module category_left {
51  header "category_left.h"
52  export category_top
53
54  explicit module sub {
55    header "category_left_sub.h"
56  }
57}
58module category_right {
59  header "category_right.h"
60  export category_top
61
62  explicit module sub {
63    header "category_right_sub.h"
64  }
65}
66module category_bottom {
67  header "category_bottom.h"
68  export category_left
69  export category_right
70}
71module category_other { header "category_other.h" }
72module redeclarations_left { header "redeclarations_left.h" }
73module redeclarations_right { header "redeclarations_right.h" }
74module redecl_namespaces_left { header "redecl_namespaces_left.h" }
75module redecl_namespaces_right { header "redecl_namespaces_right.h" }
76module redecl_add_after_load_top { header "redecl-add-after-load-top.h" }
77module redecl_add_after_load_decls { header "redecl-add-after-load-decls.h" }
78module redecl_add_after_load { header "redecl-add-after-load.h" }
79module load_failure { header "load_failure.h" }
80
81module decldef {
82  explicit module Decl { header "decl.h" }
83  explicit module Decl2 { header "decl2.h" }
84  explicit module Def { header "def.h" }
85}
86
87module redecl_merge_top {
88  header "redecl-merge-top.h"
89  explicit module Explicit { header "redecl-merge-top-explicit.h" }
90  exclude header "nonexistent.h"
91}
92module redecl_merge_left {
93  header "redecl-merge-left.h"
94  export *
95}
96module redecl_merge_left_left {
97  header "redecl-merge-left-left.h"
98  export *
99}
100module redecl_merge_right {
101  header "redecl-merge-right.h"
102  export *
103}
104module redecl_merge_bottom {
105  explicit module prefix {
106    header "redecl-merge-bottom-prefix.h"
107  }
108
109  header "redecl-merge-bottom.h"
110  export *
111}
112module namespaces_top {
113  header "namespaces-top.h"
114  export *
115}
116module namespaces_left {
117  header "namespaces-left.h"
118  export *
119}
120module namespaces_right {
121  header "namespaces-right.h"
122  export *
123}
124module templates_top {
125  header "templates-top.h"
126  export *
127}
128module templates_left {
129  header "templates-left.h"
130  export *
131}
132module templates_right {
133  header "templates-right.h"
134  export *
135}
136module MethodPoolA {
137  header "MethodPoolA.h"
138
139  explicit module Sub2 {
140    header "MethodPoolASub2.h"
141  }
142
143  explicit module Sub {
144    header "MethodPoolASub.h"
145  }
146}
147module MethodPoolB {
148  header "MethodPoolB.h"
149
150  explicit module Sub2 {
151    header "MethodPoolBSub2.h"
152  }
153
154  explicit module Sub {
155    header "MethodPoolBSub.h"
156  }
157}
158module import_decl {
159  header "import-decl.h"
160}
161
162framework module * {
163  exclude NotAModule
164}
165
166module linkage_merge_left {
167  explicit module sub {
168    header "linkage-merge-sub.h"
169  }
170}
171
172module autolink {
173  header "autolink.h"
174  link "autolink"
175
176  explicit module sub {
177    header "autolink-sub.h"
178    link "autolink_sub"
179  }
180
181  explicit module sub2 {
182    header "autolink-sub2.h"
183    link framework "autolink_framework"
184  }
185
186  explicit module sub3 {
187    header "autolink-sub3.h"
188    link "autolink_from_pch"
189  }
190}
191
192module weird_objc {
193  header "weird_objc.h"
194}
195
196module objc_type_param {
197  header "objc_type_param.h"
198}
199
200module ignored_macros {
201  header "ignored_macros.h"
202}
203
204module cxx_many_overloads {
205  header "cxx-many-overloads.h"
206}
207
208module cxx_inline_namespace {
209  header "cxx-inline-namespace.h"
210}
211
212module cxx_inline_namespace_b {
213  header "cxx-inline-namespace-b.h"
214}
215
216module cxx_linkage_cache {
217  header "cxx-linkage-cache.h"
218}
219
220module cxx_templates_common {
221  header "cxx-templates-common.h"
222
223  explicit module unimported { header "cxx-templates-unimported.h" }
224}
225
226module cxx_templates_a {
227  header "cxx-templates-a.h"
228}
229
230module cxx_templates_b_impl {
231  header "cxx-templates-b-impl.h"
232}
233
234module cxx_templates_b {
235  header "cxx-templates-b.h"
236}
237
238module cxx_templates_c {
239  header "cxx-templates-c.h"
240}
241
242module cxx_templates_d {
243  header "cxx-templates-d.h"
244}
245
246module cxx_decls {
247  module unimported {
248    header "cxx-decls-unimported.h"
249  }
250  module imported {
251    header "cxx-decls-imported.h"
252  }
253}
254
255module cxx_decls_premerged {
256  header "cxx-decls-premerged.h"
257}
258
259module cxx_decls_merged {
260  header "cxx-decls-merged.h"
261}
262
263module diag_flags {
264  header "diag_flags.h"
265}
266
267module diag_pragma {
268  header "diag_pragma.h"
269}
270
271module pragma_pack {
272  module set { header "pragma_pack_set.h" }
273  module empty { header "empty.h" }
274}
275
276module dummy {
277  header "dummy.h"
278}
279
280module builtin {
281  header "builtin.h"
282  explicit module sub {
283    header "builtin_sub.h"
284  }
285}
286
287module linkage_merge {
288  explicit module foo {
289    header "linkage-merge-foo.h"
290  }
291  explicit module bar {
292    header "linkage-merge-bar.h"
293  }
294
295}
296
297module incomplete_mod {
298  header "incomplete_mod.h"
299}
300
301module warning {
302  header "warning.h"
303}
304
305module warn_unused_local_typedef {
306  header "warn-unused-local-typedef.h"
307}
308
309module using_decl {
310  module a { header "using-decl-a.h" export * }
311  module b { header "using-decl-b.h" export * }
312}
313
314module recursive_visibility_a1 {
315  module inner { header "recursive_visibility_a1_inner.h" }
316}
317module recursive_visibility_a2 {
318  module inner {
319    module more_inner {
320      header "recursive_visibility_a2_more_inner.h"
321    }
322  }
323}
324module recursive_visibility_b {
325  header "recursive_visibility_b.h"
326  export *
327}
328module recursive_visibility_c {
329  header "recursive_visibility_c.h"
330}
331module recursive1 {
332  header "recursive1.h"
333}
334module recursive2 {
335  header "recursive2.h"
336}
337module crash {
338  header "crash.h"
339}
340
341module DebugCXX {
342  header "DebugCXX.h"
343}
344
345module DebugObjC {
346  header "DebugObjC.h"
347}
348
349module DebugObjCImport {
350  module SubModule {
351    header "DebugObjCImport.h"
352  }
353}
354
355module DebugDwoId {
356  header "DebugDwoId.h"
357}
358
359module ImportNameInDir {
360  header "ImportNameInDir.h"
361  export *
362}
363
364module RequiresWithMissingHeader {
365  module HeaderBefore {
366    header "RequiresWithMissingHeader-Missing1.h"
367    requires missing
368  }
369  module HeaderAfter {
370    requires missing
371    header "RequiresWithMissingHeader-Missing2.h"
372  }
373}
374
375module TargetFeatures {
376  module arm {
377    requires arm
378    module aarch32 { requires aarch32 }
379    module aarch64 { requires aarch64 }
380  }
381  module x86 {
382    requires x86
383    module x86_32 { requires x86_32 }
384    module x86_64 { requires x86_64 }
385  }
386  module riscv {
387    requires riscv
388    module riscv32 { requires riscv32 }
389    module riscv64 { requires riscv64 }
390  }
391}
392
393module DebugSubmodules {
394  module DebugSubmoduleA {
395    header "DebugSubmoduleA.h"
396    export *
397  }
398  module DebugSubmoduleB {
399    header "DebugSubmoduleB.h"
400    export *
401  }
402}
403
404module ExtensionTestA {
405  header "ExtensionTestA.h"
406}
407
408module TypedefTag {
409  header "typedef-tag.h"
410  explicit module Hidden {
411    header "typedef-tag-hidden.h"
412  }
413}
414
415module ElaboratedTypeStructs {
416  module Empty {}
417  module Structs {
418    header "elaborated-type-structs.h"
419  }
420}
421
422// We import a module, then declare a method with selector stringValue in
423// MethodPoolCombined1.h. In MethodPoolCombined2.h, we import another module
424// that also contains a method for selector stringValue. We make sure that
425// the method pool entry for stringValue in this module is complete.
426module MethodPoolCombined {
427  header "MethodPoolCombined1.h"
428  header "MethodPoolCombined2.h"
429}
430
431module MethodPoolString1 {
432  header "MethodPoolString1.h"
433}
434
435module MethodPoolString2 {
436  header "MethodPoolString2.h"
437}
438
439module Empty {}
440
441module MacroFabs1 {
442  header "MacroFabs1.h"
443}
444
445module DiagOutOfDate {
446  header "DiagOutOfDate.h"
447}
448
449module DebugNestedA {
450  header "DebugNestedA.h"
451  export *
452}
453
454module DebugNestedB {
455  header "DebugNestedB.h"
456  export *
457}
458
459module objcAtKeywordMissingEnd {
460  header "objcAtKeywordMissingEnd.h"
461}
462
463module innerstructredef {
464  module one {
465    header "empty.h"
466  }
467  module two {
468   header "innerstructredef.h"
469  }
470}
471
472module template_nontrivial0 {
473  header "template-nontrivial0.h"
474  export *
475}
476
477module template_nontrivial1 {
478  header "template-nontrivial1.h"
479  export *
480}
481