0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-09 00:28:20 -05:00
penpot/frontend/render_v2/cpp
2024-10-09 15:18:36 +02:00
..
docker
js wip: renderer redone completely 2024-10-09 15:18:36 +02:00
scripts
src wip: renderer redone completely 2024-10-09 15:18:36 +02:00
.gitignore
build
Dockerfile
Makefile
README.md
TODO.md

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 but with some tweaks to support building a C++ WebAssembly module using Emscripten.

Building everything

From the root directory of frontend/renderer just run:

./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.

😸 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:

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.

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.