OLD | NEW |
1 # Mojo EDK (embedder development kit) | 1 # Mojo EDK (embedder development kit) |
2 | 2 |
3 The Mojo EDK is a "library" that provides implementations of the basic Mojo | 3 The Mojo EDK is a "library" that provides implementations of the basic Mojo |
4 system primitives (e.g., message pipes). It is not meant for ordinary | 4 system primitives (e.g., message pipes). It is not meant for ordinary |
5 applications, but for _embedders_ who in turn expose the basic Mojo primitives | 5 applications, but for _embedders_ who in turn expose the basic Mojo primitives |
6 to other applications/content. | 6 to other applications/content. |
7 | 7 |
8 For example, this is used by `mojo_shell` to implement the Mojo primitives, | 8 For example, this is used by `mojo_shell` to implement the Mojo primitives, |
9 which it in turn exposes to Mojo applications, and by Flutter, which exposes | 9 which it in turn exposes to Mojo applications, and by Flutter, which exposes |
10 Mojo primitives to Flutter applications. (`mojo_shell` and Flutter are embedders | 10 Mojo primitives to Flutter applications. (`mojo_shell` and Flutter are embedders |
11 of the Mojo system implementation.) | 11 of the Mojo system implementation.) |
12 | 12 |
13 Note: The embedder API is not stable (neither at the source nor at the binary | 13 Note: The embedder API is not stable (neither at the source nor at the binary |
14 level) and will evolve over time. | 14 level) and will evolve over time. |
15 | 15 |
16 ## Organization | 16 ## Organization |
17 | 17 |
18 ### Subdirectories | 18 ### Subdirectories |
19 | 19 |
20 * [//mojo/edk/base_edk](base_edk): The embedder API requires various things to | 20 * [//mojo/edk/base_edk](base_edk): The embedder API requires various things to |
21 be implemented or injected by the embedder. This contains implementations of | 21 be implemented or injected by the embedder. This contains implementations of |
22 these things for use with [//base](../../base). (This may also be usable with | 22 these things for use with [//base](../../base). (This may also be usable with |
23 other sufficiently-similar derivatives of Chromium's | 23 other sufficiently-similar derivatives of Chromium's |
24 [//base](https://chromium.googlesource.com/chromium/src/+/master/base/).) | 24 [//base](https://chromium.googlesource.com/chromium/src/+/master/base/).) |
25 * [//mojo/edk/embedder](embedder): The header files in this directory constitute | 25 * [//mojo/edk/embedder](embedder): The header files in this directory constitute |
26 the public API available to embedders. (The .cc files are private and mostly | 26 the public API available to embedders. (The .cc files are private and mostly |
27 serve to bridge between the public API and the private API in | 27 serve to bridge between the public API and the private API in |
28 [system](system).) | 28 [system](system).) |
| 29 * [//mojo/edk/platform](platform): This contains platform abstractions and |
| 30 declarations of embedder-dependent things. Some of these must be provided by |
| 31 the embedder, either by implementing an interface or by implementing a class |
| 32 outright. |
29 * [//mojo/edk/system](system): This contains the bulk of the actual | 33 * [//mojo/edk/system](system): This contains the bulk of the actual |
30 implementation, and is entirely private. | 34 implementation, and is entirely private. |
31 * [//mojo/edk/system/test](system/test): This contains private test helpers used | 35 * [//mojo/edk/system/test](system/test): This contains private test helpers used |
32 by the EDK's internal tests. | 36 by the EDK's internal tests. |
33 * [//mojo/edk/test](test): In principle, this contains test helpers for use by | 37 * [//mojo/edk/test](test): In principle, this contains test helpers for use by |
34 embedders (but see the **TODO** below). | 38 embedders (but see the **TODO** below). |
35 * [//mojo/edk/util](util): This contains basic helpers built on top of the C++ | 39 * [//mojo/edk/util](util): This contains basic helpers built on top of the C++ |
36 library and also some POSIX APIs, notably pthreads. These are used by all the | 40 library and also some POSIX APIs, notably pthreads. These are used by all the |
37 other parts of the EDK, and are also available for embedders to use. (Outside | 41 other parts of the EDK, and are also available for embedders to use. (Outside |
38 its tests, it should not depend on other parts of the EDK.) | 42 its tests, it should not depend on other parts of the EDK.) |
39 | 43 |
40 ### TODO(vtl) | 44 ### TODO(vtl) |
41 | 45 |
42 * [//mojo/edk/test](test) currently contains things that aren't meant for | 46 * [//mojo/edk/test](test) currently contains things that aren't meant for |
43 embedders. (They can't be moved to [//mojo/edk/system/test](system/test) | 47 embedders. (They can't be moved to [//mojo/edk/system/test](system/test) |
44 because of their dependencies, but they should be moved elsewhere instead.) | 48 because of their dependencies, but they should be moved elsewhere instead.) |
45 * There should be a "platform" directory. Many of the things in | 49 * There should be a "platform" directory. Many of the things in |
46 [//mojo/edk/embedder](embedder) (especially in the `platform` target) should | 50 [//mojo/edk/embedder](embedder) (especially in the `platform` target) should |
47 be moved here (though some of the implementations should be moved to | 51 be moved here (though some of the implementations should be moved to |
48 [//mojo/edk/base_edk](base_edk). | 52 [//mojo/edk/base_edk](base_edk). |
49 | 53 |
50 ## See also | 54 ## See also |
51 | 55 |
52 * [//mojo/public](../public): the Mojo public SDK | 56 * [//mojo/public](../public): the Mojo public SDK |
OLD | NEW |