To compile CanvasKit, you will first need to install
emscripten. This will set the environment
EMSDK (among others) which is required for compilation.
make release # make debug is much faster and has better error messages make local-example
This will print a local endpoint for viewing the example. You can experiment with the CanvasKit API by modifying
./canvaskit/example.html and refreshing the page. For some more experimental APIs, there's also
For other available build targets, see
compile.sh. For example, building a stripped-down version of CanvasKit with no text support or any of the “extras”, one might run:
./compile.sh no_skottie no_particles no_font
Such a stripped-down version is about half the size of the default release build.
When dealing with CanvasKit (or PathKit) on our bots, we use Docker. Check out $SKIA_ROOT/infra/wasm-common/docker/README.md for more on building/editing the images used for building and testing.
This presumes you have updated emscripten locally to a newer version of the sdk and verified/fixed any build issues that have arisen.
$SKIA_ROOT/infra/wasm-common/docker/emsdk-base/Dockerfileto install and activate the desired version of Emscripten.
EMSDK_VERSIONbe set to that desired version. If there is a suffix that is not
_v1, reset it to be
_v1. If testing the image later does not work and edits are made to the emsdk-base Dockerfile to correct that, increment to
_v3, etc to force the bots to pick up the new image.
$SKIA_ROOT/infra/canvaskit/docker/canvaskit-emsdk/Dockerfileto be based off the new version from step 2. CanvasKit has its own docker image because it needs a few extra dependencies to build with font support.
$SKIA_ROOT/infra/canvaskit/docker/Makefileto have the same version from step 2. It's easiest to keep the
canvaskit-emsdkversions be in lock-step.
DOCKER_IMAAGEpoint to the desired tagged Docker containers from steps 2 and 5 (which should be the same).
make trainto re-train the recipes.
git grep 1\\.38\\.in
$SKIA_ROOTto see if there are any other references that need updating.