module.modulemap 12 KB

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