mirror of
https://github.com/penpot/penpot.git
synced 2026-02-25 22:04:14 +00:00
50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
# Renderer
|
|
|
|
## How this works?
|
|
|
|
First of all we need a proper environment to build Skia, this
|
|
environment is heavily based on the [Skia docker image](https://github.com/google/skia/blob/main/docker/skia-release/Dockerfile) but with some tweaks to support building
|
|
a C++ WebAssembly module using [Emscripten](https://emscripten.org/index.html).
|
|
|
|
## Building everything
|
|
|
|
From the root directory of `frontend/renderer` just run:
|
|
|
|
```sh
|
|
./build
|
|
```
|
|
|
|
This is going to build the docker image and run the container to build
|
|
the artifacts and then copy them to the necessary directories.
|
|
|
|
> :smile_cat: Be patient, the first time the docker image is built usually takes
|
|
> a few minutes.
|
|
|
|
## Building the Skia build tools Docker image
|
|
|
|
To build just the Skia build tools image:
|
|
|
|
```sh
|
|
cd frontend/renderer
|
|
docker build . -t skia-build-tools
|
|
```
|
|
|
|
## Building the renderer WebAssembly module
|
|
|
|
Just run the container and it will generate all the necessary
|
|
artifacts in the `out` directory.
|
|
|
|
```sh
|
|
cd frontend/renderer
|
|
docker run -t -v ${PWD}:/tmp/renderer skia-build-tools
|
|
```
|
|
|
|
Once the `renderer.js` and `renderer.wasm` are created in the `out` directory
|
|
we need to move them where Penpot can have access to them, so we need to execute
|
|
`./scripts/copy-artifacts`.
|
|
|
|
## C++ <-> JS
|
|
|
|
To add some extra functionality to the exported `Module` by the Emscripten
|
|
compiler, we use a series of javascript scripts that exist on the `js` directory.
|