Index: README.md |
=================================================================== |
--- a/README.md |
+++ b/README.md |
@@ -13,33 +13,60 @@ |
In order to improve performance and memory usage, some of the code (located |
inside the `compiled` directory) is written in C++ and compiled to JavaScript |
via Empscripten. |
### Requirements |
* [Emscripten 1.37.3](https://github.com/kripken/emscripten) |
-* [Python 2.7](https://www.python.org) |
+* [Python 2.7 & 3](https://www.python.org) |
+* [meson 0.40.0+](https://www.mesonbuild.com) |
+* [ninja](https://www.ninja-build.org) |
+ |
+### Installation |
+ |
+#### macOS |
+ |
+Whenever possible, install from brew. |
+ |
+#### Linux |
+ |
+Use the distribution package if possible. Some "LTS" might have a too |
+old version of meson. |
Wladimir Palant
2017/10/26 19:27:00
Ubuntu 17.04 isn't LTS - it was the latest stable
hub
2017/10/26 19:36:04
I'll remove that sentence. Or if you prefer the wh
Wladimir Palant
2017/11/03 10:50:12
I definitely prefer removing the entire installati
|
+ |
+#### Windows |
+ |
+TBD |
### Running Emscripten |
-After installing and configuring Emscripten you can run the following command: |
+After installing and configuring Emscripten you can setup the build |
+with the following commands: |
+ |
+ meson build |
- python compile |
+By default it will create a debug build. Pass `--buildtype release` to |
+create a release build. |
+ |
+Then to build just do: |
+ |
+ ninja -C build |
+ |
+This will regenerate the build files as needed. |
This will produce a `lib/compiled.js` exporting the classes defined in C++ code. |
### Technical details |
Compilation is currently a two-step process. In the bindings generation step, |
the source files are compiled into `compiled/bindings.cpp.js` with the |
`PRINT_BINDINGS` symbol defined. This application is then executed via Node.js |
and will print JavaScript wrappers for the C++ classes to |
-`compiled/bindings.js` according to definitions within the `EMSCRIPTEN_BINDINGS` |
+`build/bindings.js` according to definitions within the `EMSCRIPTEN_BINDINGS` |
macro in `compiled/bindings.cpp`. |
In the actual compilation step the source files are compiled into |
`lib/compiled.js` without the `PRINT_BINDINGS` symbol, so that the |
`EMSCRIPTEN_BINDINGS` macro ignores its contents and merely emits some generic |
functions necessary for the JavaScript bindings to work. The previously |
generated `compiled/bindings.js` file is added to the end of Emscripten output. |