xref: /aosp_15_r20/external/skia/modules/canvaskit/compile.sh (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker#!/bin/bash
2*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2018 Google LLC
3*c8dee2aaSAndroid Build Coastguard Worker#
4*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Workerset -ex
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Worker# Navigate to SKIA_HOME from where this file is located.
10*c8dee2aaSAndroid Build Coastguard WorkerBASE_DIR=`cd $(dirname ${BASH_SOURCE[0]}) && pwd`
11*c8dee2aaSAndroid Build Coastguard Workerpushd $BASE_DIR/../..
12*c8dee2aaSAndroid Build Coastguard Worker./bin/fetch-gn
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard WorkerIS_OFFICIAL_BUILD="true"
15*c8dee2aaSAndroid Build Coastguard WorkerIS_DEBUG="false"
16*c8dee2aaSAndroid Build Coastguard WorkerFORCE_TRACING="false"
17*c8dee2aaSAndroid Build Coastguard WorkerPROFILE_BUILD="false"
18*c8dee2aaSAndroid Build Coastguard Worker# Tracing will be disabled in release/profiling unless this flag is seen. Tracing will
19*c8dee2aaSAndroid Build Coastguard Worker# be on debug builds always.
20*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ != *force_tracing* ]] ; then
21*c8dee2aaSAndroid Build Coastguard Worker  FORCE_TRACING="true"
22*c8dee2aaSAndroid Build Coastguard Workerfi
23*c8dee2aaSAndroid Build Coastguard Worker
24*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *debug_build* ]]; then
25*c8dee2aaSAndroid Build Coastguard Worker  echo "Building a Debug build"
26*c8dee2aaSAndroid Build Coastguard Worker  IS_DEBUG="true"
27*c8dee2aaSAndroid Build Coastguard Worker  IS_OFFICIAL_BUILD="false"
28*c8dee2aaSAndroid Build Coastguard Worker  BUILD_DIR=${BUILD_DIR:="out/canvaskit_wasm_debug"}
29*c8dee2aaSAndroid Build Coastguard Workerelif [[ $@ == *profiling* ]]; then
30*c8dee2aaSAndroid Build Coastguard Worker  echo "Building a build for profiling"
31*c8dee2aaSAndroid Build Coastguard Worker  PROFILE_BUILD="true"
32*c8dee2aaSAndroid Build Coastguard Worker  BUILD_DIR=${BUILD_DIR:="out/canvaskit_wasm_profile"}
33*c8dee2aaSAndroid Build Coastguard Workerelse
34*c8dee2aaSAndroid Build Coastguard Worker  BUILD_DIR=${BUILD_DIR:="out/canvaskit_wasm"}
35*c8dee2aaSAndroid Build Coastguard Workerfi
36*c8dee2aaSAndroid Build Coastguard Worker
37*c8dee2aaSAndroid Build Coastguard Workermkdir -p $BUILD_DIR
38*c8dee2aaSAndroid Build Coastguard Worker# sometimes the .a files keep old symbols around - cleaning them out makes sure
39*c8dee2aaSAndroid Build Coastguard Worker# we get a fresh build.
40*c8dee2aaSAndroid Build Coastguard Workerrm -f $BUILD_DIR/*.a
41*c8dee2aaSAndroid Build Coastguard Worker
42*c8dee2aaSAndroid Build Coastguard WorkerENABLE_GANESH="true"
43*c8dee2aaSAndroid Build Coastguard WorkerENABLE_GRAPHITE="false"
44*c8dee2aaSAndroid Build Coastguard WorkerENABLE_WEBGL="false"
45*c8dee2aaSAndroid Build Coastguard WorkerENABLE_WEBGPU="false"
46*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *cpu* ]]; then
47*c8dee2aaSAndroid Build Coastguard Worker  echo "Using the CPU backend instead of the GPU backend"
48*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_GANESH="false"
49*c8dee2aaSAndroid Build Coastguard Workerelif [[ $@ == *webgpu* ]]; then
50*c8dee2aaSAndroid Build Coastguard Worker  echo "Using WebGPU instead of WebGL"
51*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_WEBGPU="true"
52*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_GRAPHITE="true"
53*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_GANESH="false"
54*c8dee2aaSAndroid Build Coastguard Workerelse
55*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_WEBGL="true"
56*c8dee2aaSAndroid Build Coastguard Workerfi
57*c8dee2aaSAndroid Build Coastguard Worker
58*c8dee2aaSAndroid Build Coastguard WorkerSERIALIZE_SKP="true"
59*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_skp_serialization* ]]; then
60*c8dee2aaSAndroid Build Coastguard Worker  # This saves about 20kb compressed.
61*c8dee2aaSAndroid Build Coastguard Worker  echo "disabling SKP serialization"
62*c8dee2aaSAndroid Build Coastguard Worker  SERIALIZE_SKP="false"
63*c8dee2aaSAndroid Build Coastguard Workerfi
64*c8dee2aaSAndroid Build Coastguard WorkerDESERIALIZE_EFFECTS="true"
65*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_effects_deserialization* ]]; then
66*c8dee2aaSAndroid Build Coastguard Worker  # This saves about 60kb compressed.
67*c8dee2aaSAndroid Build Coastguard Worker  echo "disabling effects deserialization"
68*c8dee2aaSAndroid Build Coastguard Worker  DESERIALIZE_EFFECTS="false"
69*c8dee2aaSAndroid Build Coastguard Workerfi
70*c8dee2aaSAndroid Build Coastguard Worker
71*c8dee2aaSAndroid Build Coastguard WorkerENABLE_SKOTTIE="true"
72*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_skottie* ]]; then
73*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting Skottie"
74*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_SKOTTIE="false"
75*c8dee2aaSAndroid Build Coastguard Workerfi
76*c8dee2aaSAndroid Build Coastguard Worker
77*c8dee2aaSAndroid Build Coastguard WorkerINCLUDE_VIEWER="false"
78*c8dee2aaSAndroid Build Coastguard WorkerUSE_EXPAT="false"
79*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *viewer* ]]; then
80*c8dee2aaSAndroid Build Coastguard Worker  echo "Including viewer"
81*c8dee2aaSAndroid Build Coastguard Worker  INCLUDE_VIEWER="true"
82*c8dee2aaSAndroid Build Coastguard Worker  USE_EXPAT="true"
83*c8dee2aaSAndroid Build Coastguard Worker  IS_OFFICIAL_BUILD="false"
84*c8dee2aaSAndroid Build Coastguard Workerfi
85*c8dee2aaSAndroid Build Coastguard Worker
86*c8dee2aaSAndroid Build Coastguard WorkerENABLE_PATHOPS="true"
87*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_pathops* ]] ; then
88*c8dee2aaSAndroid Build Coastguard Worker  # This saves about 2kb compressed.
89*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting PathOps"
90*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_PATHOPS="false"
91*c8dee2aaSAndroid Build Coastguard Workerfi
92*c8dee2aaSAndroid Build Coastguard Worker
93*c8dee2aaSAndroid Build Coastguard WorkerENABLE_MATRIX="true"
94*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_matrix* ]]; then
95*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting matrix helper code"
96*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_MATRIX="false"
97*c8dee2aaSAndroid Build Coastguard Workerfi
98*c8dee2aaSAndroid Build Coastguard Worker
99*c8dee2aaSAndroid Build Coastguard WorkerENABLE_CANVAS="true"
100*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_canvas* || $@ == *no_matrix* ]]; then
101*c8dee2aaSAndroid Build Coastguard Worker  # Note: HTML Canvas bindings depend on the matrix helpers.
102*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting bindings for HTML Canvas API"
103*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_CANVAS="false"
104*c8dee2aaSAndroid Build Coastguard Workerfi
105*c8dee2aaSAndroid Build Coastguard Worker
106*c8dee2aaSAndroid Build Coastguard WorkerGN_FONT="skia_enable_fontmgr_custom_directory=false "
107*c8dee2aaSAndroid Build Coastguard WorkerWOFF2_FONT="skia_use_freetype_woff2=true"
108*c8dee2aaSAndroid Build Coastguard WorkerENABLE_FONT="true"
109*c8dee2aaSAndroid Build Coastguard WorkerENABLE_EMBEDDED_FONT="true"
110*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_font* ]]; then
111*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting the built-in font(s), font manager and all code dealing with fonts"
112*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_FONT="false"
113*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_EMBEDDED_FONT="false"
114*c8dee2aaSAndroid Build Coastguard Worker  GN_FONT+="skia_enable_fontmgr_custom_embedded=false skia_enable_fontmgr_custom_empty=false "
115*c8dee2aaSAndroid Build Coastguard Workerelse
116*c8dee2aaSAndroid Build Coastguard Worker  if [[ $@ == *no_embedded_font* ]]; then
117*c8dee2aaSAndroid Build Coastguard Worker    echo "Omitting the built-in font(s)"
118*c8dee2aaSAndroid Build Coastguard Worker    ENABLE_EMBEDDED_FONT="false"
119*c8dee2aaSAndroid Build Coastguard Worker  fi
120*c8dee2aaSAndroid Build Coastguard Worker  # Generate the font's binary file (which is covered by .gitignore)
121*c8dee2aaSAndroid Build Coastguard Worker  GN_FONT+="skia_enable_fontmgr_custom_embedded=true skia_enable_fontmgr_custom_empty=true "
122*c8dee2aaSAndroid Build Coastguard Workerfi
123*c8dee2aaSAndroid Build Coastguard Worker
124*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_woff2* ]]; then
125*c8dee2aaSAndroid Build Coastguard Worker  WOFF2_FONT="skia_use_freetype_woff2=false"
126*c8dee2aaSAndroid Build Coastguard Workerfi
127*c8dee2aaSAndroid Build Coastguard Worker
128*c8dee2aaSAndroid Build Coastguard WorkerENABLE_ALIAS_FONT="true"
129*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_alias_font* ]]; then
130*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_ALIAS_FONT="false"
131*c8dee2aaSAndroid Build Coastguard Workerfi
132*c8dee2aaSAndroid Build Coastguard Worker
133*c8dee2aaSAndroid Build Coastguard WorkerLEGACY_DRAW_VERTICES="false"
134*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *legacy_draw_vertices* ]]; then
135*c8dee2aaSAndroid Build Coastguard Worker  LEGACY_DRAW_VERTICES="true"
136*c8dee2aaSAndroid Build Coastguard Workerfi
137*c8dee2aaSAndroid Build Coastguard Worker
138*c8dee2aaSAndroid Build Coastguard WorkerDEBUGGER_ENABLED="false"
139*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *enable_debugger* ]]; then
140*c8dee2aaSAndroid Build Coastguard Worker  DEBUGGER_ENABLED="true"
141*c8dee2aaSAndroid Build Coastguard Workerfi
142*c8dee2aaSAndroid Build Coastguard Worker
143*c8dee2aaSAndroid Build Coastguard WorkerGN_SHAPER="skia_use_icu=true skia_use_client_icu=false skia_use_libgrapheme=false skia_use_icu4x=false skia_use_system_icu=false skia_use_harfbuzz=true skia_use_system_harfbuzz=false"
144*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *primitive_shaper* ]] || [[ $@ == *no_font* ]]; then
145*c8dee2aaSAndroid Build Coastguard Worker  echo "Using the primitive shaper instead of the harfbuzz/icu one"
146*c8dee2aaSAndroid Build Coastguard Worker  GN_SHAPER="skia_use_icu=false skia_use_harfbuzz=false"
147*c8dee2aaSAndroid Build Coastguard Workerfi
148*c8dee2aaSAndroid Build Coastguard Worker
149*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *client_unicode* ]] ; then
150*c8dee2aaSAndroid Build Coastguard Worker  echo "Using the client-provided skunicode data and harfbuz instead of the icu-provided data"
151*c8dee2aaSAndroid Build Coastguard Worker  GN_SHAPER="skia_use_icu=false skia_use_client_icu=true skia_use_libgrapheme=false skia_use_icu4x=false skia_use_harfbuzz=true skia_use_system_harfbuzz=false"
152*c8dee2aaSAndroid Build Coastguard Workerfi
153*c8dee2aaSAndroid Build Coastguard Worker
154*c8dee2aaSAndroid Build Coastguard WorkerENABLE_PARAGRAPH="true"
155*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_paragraph* ]] || [[ $@ == *primitive_shaper* ]] || [[ $@ == *no_font* ]]; then
156*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting paragraph (must have fonts and non-primitive shaper)"
157*c8dee2aaSAndroid Build Coastguard Worker  ENABLE_PARAGRAPH="false"
158*c8dee2aaSAndroid Build Coastguard Workerfi
159*c8dee2aaSAndroid Build Coastguard Worker
160*c8dee2aaSAndroid Build Coastguard WorkerDO_DECODE="true"
161*c8dee2aaSAndroid Build Coastguard Workerif [[ $@ == *no_codecs* ]]; then
162*c8dee2aaSAndroid Build Coastguard Worker  echo "Omitting codecs"
163*c8dee2aaSAndroid Build Coastguard Worker  DO_DECODE="false"
164*c8dee2aaSAndroid Build Coastguard Worker  ENCODE_JPEG="false"
165*c8dee2aaSAndroid Build Coastguard Worker  ENCODE_PNG="false"
166*c8dee2aaSAndroid Build Coastguard Worker  ENCODE_WEBP="false"
167*c8dee2aaSAndroid Build Coastguard Worker  NO_ENCODE_JPEG="true"
168*c8dee2aaSAndroid Build Coastguard Worker  NO_ENCODE_PNG="true"
169*c8dee2aaSAndroid Build Coastguard Worker  NO_ENCODE_WEBP="true"
170*c8dee2aaSAndroid Build Coastguard Workerelse
171*c8dee2aaSAndroid Build Coastguard Worker
172*c8dee2aaSAndroid Build Coastguard Worker  ENCODE_PNG="true"
173*c8dee2aaSAndroid Build Coastguard Worker  NO_ENCODE_PNG="false"
174*c8dee2aaSAndroid Build Coastguard Worker  if [[ $@ == *no_encode_png* ]]; then
175*c8dee2aaSAndroid Build Coastguard Worker    ENCODE_PNG="false"
176*c8dee2aaSAndroid Build Coastguard Worker    NO_ENCODE_PNG="true"
177*c8dee2aaSAndroid Build Coastguard Worker  fi
178*c8dee2aaSAndroid Build Coastguard Worker
179*c8dee2aaSAndroid Build Coastguard Worker  ENCODE_JPEG="true"
180*c8dee2aaSAndroid Build Coastguard Worker  NO_ENCODE_JPEG="false"
181*c8dee2aaSAndroid Build Coastguard Worker  if [[ $@ == *no_encode_jpeg* ]]; then
182*c8dee2aaSAndroid Build Coastguard Worker    ENCODE_JPEG="false"
183*c8dee2aaSAndroid Build Coastguard Worker    NO_ENCODE_JPEG="true"
184*c8dee2aaSAndroid Build Coastguard Worker  fi
185*c8dee2aaSAndroid Build Coastguard Worker
186*c8dee2aaSAndroid Build Coastguard Worker  ENCODE_WEBP="true"
187*c8dee2aaSAndroid Build Coastguard Worker  NO_ENCODE_WEBP="false"
188*c8dee2aaSAndroid Build Coastguard Worker  if [[ $@ == *no_encode_webp* ]]; then
189*c8dee2aaSAndroid Build Coastguard Worker    ENCODE_WEBP="false"
190*c8dee2aaSAndroid Build Coastguard Worker    NO_ENCODE_WEBP="true"
191*c8dee2aaSAndroid Build Coastguard Worker  fi
192*c8dee2aaSAndroid Build Coastguard Worker
193*c8dee2aaSAndroid Build Coastguard Workerfi # no_codecs
194*c8dee2aaSAndroid Build Coastguard Worker
195*c8dee2aaSAndroid Build Coastguard Worker./bin/fetch-ninja
196*c8dee2aaSAndroid Build Coastguard WorkerNINJA=third_party/ninja/ninja
197*c8dee2aaSAndroid Build Coastguard Worker
198*c8dee2aaSAndroid Build Coastguard Workerecho "Compiling"
199*c8dee2aaSAndroid Build Coastguard Worker
200*c8dee2aaSAndroid Build Coastguard Worker./bin/gn gen ${BUILD_DIR} \
201*c8dee2aaSAndroid Build Coastguard Worker  --args="is_debug=${IS_DEBUG} \
202*c8dee2aaSAndroid Build Coastguard Worker  is_official_build=${IS_OFFICIAL_BUILD} \
203*c8dee2aaSAndroid Build Coastguard Worker  is_component_build=false \
204*c8dee2aaSAndroid Build Coastguard Worker  is_trivial_abi=true \
205*c8dee2aaSAndroid Build Coastguard Worker  werror=true \
206*c8dee2aaSAndroid Build Coastguard Worker  target_cpu=\"wasm\" \
207*c8dee2aaSAndroid Build Coastguard Worker  \
208*c8dee2aaSAndroid Build Coastguard Worker  skia_use_angle=false \
209*c8dee2aaSAndroid Build Coastguard Worker  skia_use_dng_sdk=false \
210*c8dee2aaSAndroid Build Coastguard Worker  skia_use_dawn=${ENABLE_WEBGPU} \
211*c8dee2aaSAndroid Build Coastguard Worker  skia_use_webgl=${ENABLE_WEBGL} \
212*c8dee2aaSAndroid Build Coastguard Worker  skia_use_webgpu=${ENABLE_WEBGPU} \
213*c8dee2aaSAndroid Build Coastguard Worker  skia_use_expat=${USE_EXPAT} \
214*c8dee2aaSAndroid Build Coastguard Worker  skia_use_fontconfig=false \
215*c8dee2aaSAndroid Build Coastguard Worker  skia_use_freetype=true \
216*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libheif=false \
217*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libjpeg_turbo_decode=${DO_DECODE} \
218*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libjpeg_turbo_encode=${ENCODE_JPEG} \
219*c8dee2aaSAndroid Build Coastguard Worker  skia_use_no_jpeg_encode=${NO_ENCODE_JPEG} \
220*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libpng_decode=${DO_DECODE} \
221*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libpng_encode=${ENCODE_PNG} \
222*c8dee2aaSAndroid Build Coastguard Worker  skia_use_no_png_encode=${NO_ENCODE_PNG} \
223*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libwebp_decode=${DO_DECODE} \
224*c8dee2aaSAndroid Build Coastguard Worker  skia_use_libwebp_encode=${ENCODE_WEBP} \
225*c8dee2aaSAndroid Build Coastguard Worker  skia_use_no_webp_encode=${NO_ENCODE_WEBP} \
226*c8dee2aaSAndroid Build Coastguard Worker  skia_use_lua=false \
227*c8dee2aaSAndroid Build Coastguard Worker  skia_use_piex=false \
228*c8dee2aaSAndroid Build Coastguard Worker  skia_use_system_freetype2=false \
229*c8dee2aaSAndroid Build Coastguard Worker  skia_use_system_libjpeg_turbo=false \
230*c8dee2aaSAndroid Build Coastguard Worker  skia_use_system_libpng=false \
231*c8dee2aaSAndroid Build Coastguard Worker  skia_use_system_libwebp=false \
232*c8dee2aaSAndroid Build Coastguard Worker  skia_use_system_zlib=false\
233*c8dee2aaSAndroid Build Coastguard Worker  skia_use_vulkan=false \
234*c8dee2aaSAndroid Build Coastguard Worker  skia_use_wuffs=true \
235*c8dee2aaSAndroid Build Coastguard Worker  skia_use_zlib=true \
236*c8dee2aaSAndroid Build Coastguard Worker  skia_enable_ganesh=${ENABLE_GANESH} \
237*c8dee2aaSAndroid Build Coastguard Worker  skia_enable_graphite=${ENABLE_GRAPHITE} \
238*c8dee2aaSAndroid Build Coastguard Worker  skia_build_for_debugger=${DEBUGGER_ENABLED} \
239*c8dee2aaSAndroid Build Coastguard Worker  skia_enable_skottie=${ENABLE_SKOTTIE} \
240*c8dee2aaSAndroid Build Coastguard Worker  \
241*c8dee2aaSAndroid Build Coastguard Worker  ${GN_SHAPER} \
242*c8dee2aaSAndroid Build Coastguard Worker  ${GN_FONT} \
243*c8dee2aaSAndroid Build Coastguard Worker  ${WOFF2_FONT} \
244*c8dee2aaSAndroid Build Coastguard Worker  \
245*c8dee2aaSAndroid Build Coastguard Worker  skia_enable_skshaper=true \
246*c8dee2aaSAndroid Build Coastguard Worker  skia_enable_skparagraph=true \
247*c8dee2aaSAndroid Build Coastguard Worker  skia_enable_pdf=false \
248*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_rt_shader=true \
249*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_force_tracing=${FORCE_TRACING} \
250*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_profile_build=${PROFILE_BUILD} \
251*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_skp_serialization=${SERIALIZE_SKP} \
252*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_effects_deserialization=${DESERIALIZE_EFFECTS} \
253*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_include_viewer=${INCLUDE_VIEWER} \
254*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_pathops=${ENABLE_PATHOPS} \
255*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_matrix_helper=${ENABLE_MATRIX} \
256*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_canvas_bindings=${ENABLE_CANVAS} \
257*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_font=${ENABLE_FONT} \
258*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_embedded_font=${ENABLE_EMBEDDED_FONT} \
259*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_alias_font=${ENABLE_ALIAS_FONT} \
260*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_legacy_draw_vertices_blend_mode=${LEGACY_DRAW_VERTICES} \
261*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_debugger=${DEBUGGER_ENABLED} \
262*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_paragraph=${ENABLE_PARAGRAPH} \
263*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_webgl=${ENABLE_WEBGL} \
264*c8dee2aaSAndroid Build Coastguard Worker  skia_canvaskit_enable_webgpu=${ENABLE_WEBGPU}"
265*c8dee2aaSAndroid Build Coastguard Worker
266*c8dee2aaSAndroid Build Coastguard Worker${NINJA} -C ${BUILD_DIR} canvaskit.js
267