module.modulemap 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. // define the module for __config outside of the top level 'std' module
  2. // since __config may be included from C headers which may create an
  3. // include cycle.
  4. module std_config [system] [extern_c] {
  5. header "__config"
  6. }
  7. module std [system] {
  8. export std_config
  9. // FIXME: The standard does not require that each of these submodules
  10. // re-exports its imported modules. We should provide an alternative form of
  11. // export that issues a warning if a name from the submodule is used, and
  12. // use that to provide a 'strict mode' for libc++.
  13. // Deprecated C-compatibility headers. These can all be included from within
  14. // an 'extern "C"' context.
  15. module depr [extern_c] {
  16. // <assert.h> provided by C library.
  17. module ctype_h {
  18. header "ctype.h"
  19. export *
  20. }
  21. module errno_h {
  22. header "errno.h"
  23. export *
  24. }
  25. module fenv_h {
  26. header "fenv.h"
  27. export *
  28. }
  29. // <float.h> provided by compiler or C library.
  30. module inttypes_h {
  31. header "inttypes.h"
  32. export stdint_h
  33. export *
  34. }
  35. // <iso646.h> provided by compiler.
  36. // <limits.h> provided by compiler or C library.
  37. module locale_h {
  38. header "locale.h"
  39. export *
  40. }
  41. module math_h {
  42. header "math.h"
  43. export *
  44. }
  45. module setjmp_h {
  46. header "setjmp.h"
  47. export *
  48. }
  49. // FIXME: <stdalign.h> is missing.
  50. // <signal.h> provided by C library.
  51. // <stdarg.h> provided by compiler.
  52. // <stdbool.h> provided by compiler.
  53. module stddef_h {
  54. // <stddef.h>'s __need_* macros require textual inclusion.
  55. textual header "stddef.h"
  56. }
  57. module stdint_h {
  58. header "stdint.h"
  59. export *
  60. // FIXME: This module only exists on OS X and for some reason the
  61. // wildcard above doesn't export it.
  62. export Darwin.C.stdint
  63. }
  64. module stdio_h {
  65. // <stdio.h>'s __need_* macros require textual inclusion.
  66. textual header "stdio.h"
  67. export *
  68. export Darwin.C.stdio
  69. }
  70. module stdlib_h {
  71. // <stdlib.h>'s __need_* macros require textual inclusion.
  72. textual header "stdlib.h"
  73. export *
  74. }
  75. module string_h {
  76. header "string.h"
  77. export *
  78. }
  79. // FIXME: <uchar.h> is missing.
  80. // <time.h> provided by C library.
  81. module wchar_h {
  82. // <wchar.h>'s __need_* macros require textual inclusion.
  83. textual header "wchar.h"
  84. export *
  85. }
  86. module wctype_h {
  87. header "wctype.h"
  88. export *
  89. }
  90. }
  91. // <complex.h> and <tgmath.h> are not C headers in any real sense, do not
  92. // allow their use in extern "C" contexts.
  93. module complex_h {
  94. header "complex.h"
  95. export ccomplex
  96. export *
  97. }
  98. module tgmath_h {
  99. header "tgmath.h"
  100. export ccomplex
  101. export cmath
  102. export *
  103. }
  104. // C compatibility headers.
  105. module compat {
  106. module cassert {
  107. // <cassert>'s use of NDEBUG requires textual inclusion.
  108. textual header "cassert"
  109. }
  110. module ccomplex {
  111. header "ccomplex"
  112. export complex
  113. export *
  114. }
  115. module cctype {
  116. header "cctype"
  117. export *
  118. }
  119. module cerrno {
  120. header "cerrno"
  121. export *
  122. }
  123. module cfenv {
  124. header "cfenv"
  125. export *
  126. }
  127. module cfloat {
  128. header "cfloat"
  129. export *
  130. }
  131. module cinttypes {
  132. header "cinttypes"
  133. export cstdint
  134. export *
  135. }
  136. module ciso646 {
  137. header "ciso646"
  138. export *
  139. }
  140. module climits {
  141. header "climits"
  142. export *
  143. }
  144. module clocale {
  145. header "clocale"
  146. export *
  147. }
  148. module cmath {
  149. header "cmath"
  150. export *
  151. }
  152. module csetjmp {
  153. header "csetjmp"
  154. export *
  155. }
  156. module csignal {
  157. header "csignal"
  158. export *
  159. }
  160. // FIXME: <cstdalign> is missing.
  161. module cstdarg {
  162. header "cstdarg"
  163. export *
  164. }
  165. module cstdbool {
  166. header "cstdbool"
  167. export *
  168. }
  169. module cstddef {
  170. header "cstddef"
  171. export *
  172. }
  173. module cstdint {
  174. header "cstdint"
  175. export depr.stdint_h
  176. export *
  177. }
  178. module cstdio {
  179. header "cstdio"
  180. export *
  181. }
  182. module cstdlib {
  183. header "cstdlib"
  184. export *
  185. }
  186. module cstring {
  187. header "cstring"
  188. export *
  189. }
  190. module ctgmath {
  191. header "ctgmath"
  192. export ccomplex
  193. export cmath
  194. export *
  195. }
  196. module ctime {
  197. header "ctime"
  198. export *
  199. }
  200. // FIXME: <cuchar> is missing.
  201. module cwchar {
  202. header "cwchar"
  203. export depr.stdio_h
  204. export *
  205. }
  206. module cwctype {
  207. header "cwctype"
  208. export *
  209. }
  210. }
  211. module algorithm {
  212. header "algorithm"
  213. export initializer_list
  214. export *
  215. }
  216. module any {
  217. header "any"
  218. export *
  219. }
  220. module array {
  221. header "array"
  222. export initializer_list
  223. export *
  224. }
  225. module atomic {
  226. header "atomic"
  227. export *
  228. }
  229. module bit {
  230. header "bit"
  231. export *
  232. }
  233. module bitset {
  234. header "bitset"
  235. export string
  236. export iosfwd
  237. export *
  238. }
  239. // No submodule for cassert. It fundamentally needs repeated, textual inclusion.
  240. module charconv {
  241. header "charconv"
  242. export *
  243. }
  244. module chrono {
  245. header "chrono"
  246. export *
  247. }
  248. module codecvt {
  249. header "codecvt"
  250. export *
  251. }
  252. module compare {
  253. header "compare"
  254. export *
  255. }
  256. module complex {
  257. header "complex"
  258. export *
  259. }
  260. module condition_variable {
  261. header "condition_variable"
  262. export *
  263. }
  264. module deque {
  265. header "deque"
  266. export initializer_list
  267. export *
  268. }
  269. module exception {
  270. header "exception"
  271. export *
  272. }
  273. module filesystem {
  274. header "filesystem"
  275. export *
  276. }
  277. module forward_list {
  278. header "forward_list"
  279. export initializer_list
  280. export *
  281. }
  282. module fstream {
  283. header "fstream"
  284. export *
  285. }
  286. module functional {
  287. header "functional"
  288. export *
  289. }
  290. module future {
  291. header "future"
  292. export *
  293. }
  294. module initializer_list {
  295. header "initializer_list"
  296. export *
  297. }
  298. module iomanip {
  299. header "iomanip"
  300. export *
  301. }
  302. module ios {
  303. header "ios"
  304. export iosfwd
  305. export *
  306. }
  307. module iosfwd {
  308. header "iosfwd"
  309. export *
  310. }
  311. module iostream {
  312. header "iostream"
  313. export ios
  314. export streambuf
  315. export istream
  316. export ostream
  317. export *
  318. }
  319. module istream {
  320. header "istream"
  321. // FIXME: should re-export ios, streambuf?
  322. export *
  323. }
  324. module iterator {
  325. header "iterator"
  326. export *
  327. }
  328. module limits {
  329. header "limits"
  330. export *
  331. }
  332. module list {
  333. header "list"
  334. export initializer_list
  335. export *
  336. }
  337. module locale {
  338. header "locale"
  339. export *
  340. }
  341. module map {
  342. header "map"
  343. export initializer_list
  344. export *
  345. }
  346. module memory {
  347. header "memory"
  348. export *
  349. }
  350. module mutex {
  351. header "mutex"
  352. export *
  353. }
  354. module new {
  355. header "new"
  356. export *
  357. }
  358. module numeric {
  359. header "numeric"
  360. export *
  361. }
  362. module optional {
  363. header "optional"
  364. export *
  365. }
  366. module ostream {
  367. header "ostream"
  368. // FIXME: should re-export ios, streambuf?
  369. export *
  370. }
  371. module queue {
  372. header "queue"
  373. export initializer_list
  374. export *
  375. }
  376. module random {
  377. header "random"
  378. export initializer_list
  379. export *
  380. }
  381. module ratio {
  382. header "ratio"
  383. export *
  384. }
  385. module regex {
  386. header "regex"
  387. export initializer_list
  388. export *
  389. }
  390. module scoped_allocator {
  391. header "scoped_allocator"
  392. export *
  393. }
  394. module set {
  395. header "set"
  396. export initializer_list
  397. export *
  398. }
  399. module sstream {
  400. header "sstream"
  401. // FIXME: should re-export istream, ostream, ios, streambuf, string?
  402. export *
  403. }
  404. module stack {
  405. header "stack"
  406. export initializer_list
  407. export *
  408. }
  409. module stdexcept {
  410. header "stdexcept"
  411. export *
  412. }
  413. module streambuf {
  414. header "streambuf"
  415. export *
  416. }
  417. module string {
  418. header "string"
  419. export initializer_list
  420. export string_view
  421. export __string
  422. export *
  423. }
  424. module string_view {
  425. header "string_view"
  426. export initializer_list
  427. export __string
  428. export *
  429. }
  430. module strstream {
  431. header "strstream"
  432. export *
  433. }
  434. module system_error {
  435. header "system_error"
  436. export *
  437. }
  438. module thread {
  439. header "thread"
  440. export *
  441. }
  442. module tuple {
  443. header "tuple"
  444. export *
  445. }
  446. module type_traits {
  447. header "type_traits"
  448. export *
  449. }
  450. module typeindex {
  451. header "typeindex"
  452. export *
  453. }
  454. module typeinfo {
  455. header "typeinfo"
  456. export *
  457. }
  458. module unordered_map {
  459. header "unordered_map"
  460. export initializer_list
  461. export *
  462. }
  463. module unordered_set {
  464. header "unordered_set"
  465. export initializer_list
  466. export *
  467. }
  468. module utility {
  469. header "utility"
  470. export initializer_list
  471. export *
  472. }
  473. module valarray {
  474. header "valarray"
  475. export initializer_list
  476. export *
  477. }
  478. module variant {
  479. header "variant"
  480. export *
  481. }
  482. module vector {
  483. header "vector"
  484. export initializer_list
  485. export *
  486. }
  487. module version {
  488. header "version"
  489. export *
  490. }
  491. // FIXME: These should be private.
  492. module __bit_reference { header "__bit_reference" export * }
  493. module __debug { header "__debug" export * }
  494. module __errc { header "__errc" export * }
  495. module __functional_base { header "__functional_base" export * }
  496. module __hash_table { header "__hash_table" export * }
  497. module __locale { header "__locale" export * }
  498. module __mutex_base { header "__mutex_base" export * }
  499. module __split_buffer { header "__split_buffer" export * }
  500. module __sso_allocator { header "__sso_allocator" export * }
  501. module __std_stream { header "__std_stream" export * }
  502. module __string { header "__string" export * }
  503. module __tree { header "__tree" export * }
  504. module __tuple { header "__tuple" export * }
  505. module __undef_macros { header "__undef_macros" export * }
  506. module __node_handle { header "__node_handle" export * }
  507. module experimental {
  508. requires cplusplus11
  509. module algorithm {
  510. header "experimental/algorithm"
  511. export *
  512. }
  513. module coroutine {
  514. requires coroutines
  515. header "experimental/coroutine"
  516. export *
  517. }
  518. module deque {
  519. header "experimental/deque"
  520. export *
  521. }
  522. module filesystem {
  523. header "experimental/filesystem"
  524. export *
  525. }
  526. module forward_list {
  527. header "experimental/forward_list"
  528. export *
  529. }
  530. module functional {
  531. header "experimental/functional"
  532. export *
  533. }
  534. module iterator {
  535. header "experimental/iterator"
  536. export *
  537. }
  538. module list {
  539. header "experimental/list"
  540. export *
  541. }
  542. module map {
  543. header "experimental/map"
  544. export *
  545. }
  546. module memory_resource {
  547. header "experimental/memory_resource"
  548. export *
  549. }
  550. module propagate_const {
  551. header "experimental/propagate_const"
  552. export *
  553. }
  554. module regex {
  555. header "experimental/regex"
  556. export *
  557. }
  558. module simd {
  559. header "experimental/simd"
  560. export *
  561. }
  562. module set {
  563. header "experimental/set"
  564. export *
  565. }
  566. module span {
  567. header "span"
  568. export *
  569. }
  570. module string {
  571. header "experimental/string"
  572. export *
  573. }
  574. module type_traits {
  575. header "experimental/type_traits"
  576. export *
  577. }
  578. module unordered_map {
  579. header "experimental/unordered_map"
  580. export *
  581. }
  582. module unordered_set {
  583. header "experimental/unordered_set"
  584. export *
  585. }
  586. module utility {
  587. header "experimental/utility"
  588. export *
  589. }
  590. module vector {
  591. header "experimental/vector"
  592. export *
  593. }
  594. // FIXME these should be private
  595. module __memory {
  596. header "experimental/__memory"
  597. export *
  598. }
  599. } // end experimental
  600. }