Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: README.md

Issue 29527808: Noissue - Use meson to build the C++ code (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Reworked. Now build source files one by one. Created Oct. 11, 2017, 6:22 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « .hgignore ('k') | meson.build » ('j') | meson.build » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: README.md
===================================================================
--- a/README.md
+++ b/README.md
@@ -14,36 +14,45 @@
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)
+* [meson](https://www.mesonbuild.com)
+* [ninja](https://www.ninja-build.org)
### 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:
- python compile
+ mkdir build
Wladimir Palant 2017/10/12 08:46:09 This step is unnecessary, meson will create the di
hub 2017/10/12 18:12:10 Done.
+ meson build
Wladimir Palant 2017/10/12 08:46:09 By default, a debug build will be created. So we s
hub 2017/10/12 18:12:11 Done.
+
+Then to build just do:
+
+ cd build
+ ninja
Wladimir Palant 2017/10/12 08:46:08 We should mention that running meson is normally a
hub 2017/10/12 18:12:10 Done.
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
+`build/compiled.js` without the `PRINT_BINDINGS` symbol, so that the
Wladimir Palant 2017/10/12 08:46:08 It's still lib/compiled.js right now. We should u
hub 2017/10/12 18:12:11 Done.
`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.
The binding generation approach is heavily inspired by
[embind](http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/embind.html).
However, embind doesn't use a separate build step to produce the bindings, the
bindings are rather generated dynamically at run time. As a side-effect, it
« no previous file with comments | « .hgignore ('k') | meson.build » ('j') | meson.build » ('J')

Powered by Google App Engine
This is Rietveld