xref: /aosp_15_r20/external/skia/modules/canvaskit/BUILD.gn (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Copyright 2020 Google Inc.
2*c8dee2aaSAndroid Build Coastguard Worker#
3*c8dee2aaSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*c8dee2aaSAndroid Build Coastguard Worker# found in the LICENSE file.
5*c8dee2aaSAndroid Build Coastguard Workerimport("../../gn/skia.gni")
6*c8dee2aaSAndroid Build Coastguard Workerimport("../../gn/toolchain/wasm.gni")
7*c8dee2aaSAndroid Build Coastguard Workerimport("canvaskit.gni")
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard Worker# These targets depend on components that are only declared if
10*c8dee2aaSAndroid Build Coastguard Worker# `skia_enable_tools` is true.
11*c8dee2aaSAndroid Build Coastguard Workerif (skia_enable_tools) {
12*c8dee2aaSAndroid Build Coastguard Worker  component("viewer_wasm") {
13*c8dee2aaSAndroid Build Coastguard Worker    testonly = true
14*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [ "../.." ]
15*c8dee2aaSAndroid Build Coastguard Worker    sources = [
16*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGAttribute.cpp",
17*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGAttributeParser.cpp",
18*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGCircle.cpp",
19*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGClipPath.cpp",
20*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGContainer.cpp",
21*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGDOM.cpp",
22*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGEllipse.cpp",
23*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGFe.cpp",
24*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGFeColorMatrix.cpp",
25*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGFeComposite.cpp",
26*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGFeTurbulence.cpp",
27*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGFilter.cpp",
28*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGFilterContext.cpp",
29*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGGradient.cpp",
30*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGLine.cpp",
31*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGLinearGradient.cpp",
32*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGNode.cpp",
33*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGPath.cpp",
34*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGPattern.cpp",
35*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGPoly.cpp",
36*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGRadialGradient.cpp",
37*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGRect.cpp",
38*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGRenderContext.cpp",
39*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGSVG.cpp",
40*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGShape.cpp",
41*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGStop.cpp",
42*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGText.cpp",
43*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGTransformableNode.cpp",
44*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGUse.cpp",
45*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg/src/SkSVGValue.cpp",
46*c8dee2aaSAndroid Build Coastguard Worker      "../../tools/viewer/SKPSlide.cpp",
47*c8dee2aaSAndroid Build Coastguard Worker      "../../tools/viewer/SampleSlide.cpp",
48*c8dee2aaSAndroid Build Coastguard Worker      "../../tools/viewer/SvgSlide.cpp",
49*c8dee2aaSAndroid Build Coastguard Worker    ]
50*c8dee2aaSAndroid Build Coastguard Worker  }
51*c8dee2aaSAndroid Build Coastguard Worker
52*c8dee2aaSAndroid Build Coastguard Worker  component("gm_wasm") {
53*c8dee2aaSAndroid Build Coastguard Worker    testonly = true
54*c8dee2aaSAndroid Build Coastguard Worker    include_dirs = [ "../.." ]
55*c8dee2aaSAndroid Build Coastguard Worker    deps = [
56*c8dee2aaSAndroid Build Coastguard Worker      "../..:hash_and_encode",
57*c8dee2aaSAndroid Build Coastguard Worker      "../..:tool_utils",
58*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/svg:svg",
59*c8dee2aaSAndroid Build Coastguard Worker    ]
60*c8dee2aaSAndroid Build Coastguard Worker    defines = [ "SK_GANESH" ]
61*c8dee2aaSAndroid Build Coastguard Worker  }
62*c8dee2aaSAndroid Build Coastguard Worker}
63*c8dee2aaSAndroid Build Coastguard Worker
64*c8dee2aaSAndroid Build Coastguard Workercomponent("debugger") {
65*c8dee2aaSAndroid Build Coastguard Worker  include_dirs = [ "../.." ]
66*c8dee2aaSAndroid Build Coastguard Worker  sources = [
67*c8dee2aaSAndroid Build Coastguard Worker    "../../tools/SkSharingProc.cpp",
68*c8dee2aaSAndroid Build Coastguard Worker    "../../tools/UrlDataManager.cpp",
69*c8dee2aaSAndroid Build Coastguard Worker    "../../tools/debugger/DebugCanvas.cpp",
70*c8dee2aaSAndroid Build Coastguard Worker    "../../tools/debugger/DebugLayerManager.cpp",
71*c8dee2aaSAndroid Build Coastguard Worker    "../../tools/debugger/DrawCommand.cpp",
72*c8dee2aaSAndroid Build Coastguard Worker    "../../tools/debugger/JsonWriteBuffer.cpp",
73*c8dee2aaSAndroid Build Coastguard Worker  ]
74*c8dee2aaSAndroid Build Coastguard Worker  defines = [ "SK_GANESH" ]
75*c8dee2aaSAndroid Build Coastguard Worker}
76*c8dee2aaSAndroid Build Coastguard Worker
77*c8dee2aaSAndroid Build Coastguard Workeraction("create_notomono_cpp") {
78*c8dee2aaSAndroid Build Coastguard Worker  script = "../../tools/embed_resources.py"
79*c8dee2aaSAndroid Build Coastguard Worker
80*c8dee2aaSAndroid Build Coastguard Worker  inputs = [ "fonts/NotoMono-Regular.ttf" ]
81*c8dee2aaSAndroid Build Coastguard Worker
82*c8dee2aaSAndroid Build Coastguard Worker  output_path =
83*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/modules/canvaskit/fonts/NotoMono-Regular.ttf.ninja.cpp"
84*c8dee2aaSAndroid Build Coastguard Worker
85*c8dee2aaSAndroid Build Coastguard Worker  outputs = [ output_path ]
86*c8dee2aaSAndroid Build Coastguard Worker
87*c8dee2aaSAndroid Build Coastguard Worker  args = [
88*c8dee2aaSAndroid Build Coastguard Worker    "--name=SK_EMBEDDED_FONTS",
89*c8dee2aaSAndroid Build Coastguard Worker    "--input",
90*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("fonts/NotoMono-Regular.ttf"),
91*c8dee2aaSAndroid Build Coastguard Worker    "--output",
92*c8dee2aaSAndroid Build Coastguard Worker    rebase_path(output_path),
93*c8dee2aaSAndroid Build Coastguard Worker    "--align=4",
94*c8dee2aaSAndroid Build Coastguard Worker  ]
95*c8dee2aaSAndroid Build Coastguard Worker}
96*c8dee2aaSAndroid Build Coastguard Worker
97*c8dee2aaSAndroid Build Coastguard Workerskia_wasm_lib("canvaskit") {
98*c8dee2aaSAndroid Build Coastguard Worker  deps = [ "../..:skia" ]
99*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_paragraph) {
100*c8dee2aaSAndroid Build Coastguard Worker    deps += [
101*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skparagraph:skparagraph",
102*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skunicode:skunicode",
103*c8dee2aaSAndroid Build Coastguard Worker    ]
104*c8dee2aaSAndroid Build Coastguard Worker  }
105*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_skottie) {
106*c8dee2aaSAndroid Build Coastguard Worker    deps += [
107*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skottie:skottie",
108*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skresources:skresources",
109*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/sksg:sksg",
110*c8dee2aaSAndroid Build Coastguard Worker    ]
111*c8dee2aaSAndroid Build Coastguard Worker  }
112*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_include_viewer) {
113*c8dee2aaSAndroid Build Coastguard Worker    deps += [ ":viewer_wasm" ]
114*c8dee2aaSAndroid Build Coastguard Worker  }
115*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_embedded_font) {
116*c8dee2aaSAndroid Build Coastguard Worker    deps += [ ":create_notomono_cpp" ]
117*c8dee2aaSAndroid Build Coastguard Worker  }
118*c8dee2aaSAndroid Build Coastguard Worker
119*c8dee2aaSAndroid Build Coastguard Worker  sources = [
120*c8dee2aaSAndroid Build Coastguard Worker    "WasmCommon.h",
121*c8dee2aaSAndroid Build Coastguard Worker    "canvaskit_bindings.cpp",
122*c8dee2aaSAndroid Build Coastguard Worker  ]
123*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_paragraph) {
124*c8dee2aaSAndroid Build Coastguard Worker    sources += [
125*c8dee2aaSAndroid Build Coastguard Worker      "paragraph_bindings.cpp",
126*c8dee2aaSAndroid Build Coastguard Worker      "paragraph_bindings_gen.cpp",
127*c8dee2aaSAndroid Build Coastguard Worker    ]
128*c8dee2aaSAndroid Build Coastguard Worker  }
129*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_skottie) {
130*c8dee2aaSAndroid Build Coastguard Worker    sources += [
131*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skottie/utils/SkottieUtils.cpp",
132*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skottie/utils/TextEditor.cpp",
133*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skresources/src/SkResources.cpp",
134*c8dee2aaSAndroid Build Coastguard Worker      "skottie_bindings.cpp",
135*c8dee2aaSAndroid Build Coastguard Worker    ]
136*c8dee2aaSAndroid Build Coastguard Worker  }
137*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_include_viewer) {
138*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "viewer_bindings.cpp" ]
139*c8dee2aaSAndroid Build Coastguard Worker    # TODO(kjlubick): remove this
140*c8dee2aaSAndroid Build Coastguard Worker  }
141*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_debugger) {
142*c8dee2aaSAndroid Build Coastguard Worker    sources += [ "debugger_bindings.cpp" ]
143*c8dee2aaSAndroid Build Coastguard Worker    deps += [ ":debugger" ]
144*c8dee2aaSAndroid Build Coastguard Worker  }
145*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_embedded_font) {
146*c8dee2aaSAndroid Build Coastguard Worker    sources += [
147*c8dee2aaSAndroid Build Coastguard Worker      "$root_out_dir/modules/canvaskit/fonts/NotoMono-Regular.ttf.ninja.cpp",
148*c8dee2aaSAndroid Build Coastguard Worker    ]
149*c8dee2aaSAndroid Build Coastguard Worker  }
150*c8dee2aaSAndroid Build Coastguard Worker
151*c8dee2aaSAndroid Build Coastguard Worker  ldflags = []
152*c8dee2aaSAndroid Build Coastguard Worker  if (is_debug) {
153*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
154*c8dee2aaSAndroid Build Coastguard Worker      "-O0",
155*c8dee2aaSAndroid Build Coastguard Worker      "-sDEMANGLE_SUPPORT=1",
156*c8dee2aaSAndroid Build Coastguard Worker      "-sASSERTIONS=1",
157*c8dee2aaSAndroid Build Coastguard Worker      "-sGL_ASSERTIONS=1",
158*c8dee2aaSAndroid Build Coastguard Worker      "-g3",
159*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
160*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("debug.js"),
161*c8dee2aaSAndroid Build Coastguard Worker    ]
162*c8dee2aaSAndroid Build Coastguard Worker  } else {
163*c8dee2aaSAndroid Build Coastguard Worker    externs_path = rebase_path("externs.js")
164*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
165*c8dee2aaSAndroid Build Coastguard Worker      "-Oz",
166*c8dee2aaSAndroid Build Coastguard Worker      "--closure=1",
167*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
168*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("release.js"),
169*c8dee2aaSAndroid Build Coastguard Worker      "--closure-args=--externs=$externs_path",
170*c8dee2aaSAndroid Build Coastguard Worker    ]
171*c8dee2aaSAndroid Build Coastguard Worker  }
172*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_profile_build) {
173*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
174*c8dee2aaSAndroid Build Coastguard Worker      "--profiling-funcs",
175*c8dee2aaSAndroid Build Coastguard Worker      "--closure=0",
176*c8dee2aaSAndroid Build Coastguard Worker    ]
177*c8dee2aaSAndroid Build Coastguard Worker  }
178*c8dee2aaSAndroid Build Coastguard Worker  ldflags += [ "-fno-rtti" ]
179*c8dee2aaSAndroid Build Coastguard Worker
180*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_webgpu) {
181*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
182*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
183*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("cpu.js"),
184*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
185*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("webgpu.js"),
186*c8dee2aaSAndroid Build Coastguard Worker      "-sUSE_WEBGL2=0",
187*c8dee2aaSAndroid Build Coastguard Worker      "-sUSE_WEBGPU=1",
188*c8dee2aaSAndroid Build Coastguard Worker      "-sASYNCIFY",
189*c8dee2aaSAndroid Build Coastguard Worker
190*c8dee2aaSAndroid Build Coastguard Worker      # Modules from html5_webgpu for JS<->WASM interop
191*c8dee2aaSAndroid Build Coastguard Worker      "-sEXPORTED_RUNTIME_METHODS=WebGPU,JsValStore",
192*c8dee2aaSAndroid Build Coastguard Worker
193*c8dee2aaSAndroid Build Coastguard Worker      # TODO(skia:13429): The closure compiler doesn't play well with optimized builds and ASYNCIFY.
194*c8dee2aaSAndroid Build Coastguard Worker      "--closure=0",
195*c8dee2aaSAndroid Build Coastguard Worker    ]
196*c8dee2aaSAndroid Build Coastguard Worker  } else if (skia_canvaskit_enable_webgl) {
197*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
198*c8dee2aaSAndroid Build Coastguard Worker      "-lGL",
199*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
200*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("cpu.js"),
201*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
202*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("webgl.js"),
203*c8dee2aaSAndroid Build Coastguard Worker      "-sUSE_WEBGL2=1",
204*c8dee2aaSAndroid Build Coastguard Worker      "-sMAX_WEBGL_VERSION=2",
205*c8dee2aaSAndroid Build Coastguard Worker    ]
206*c8dee2aaSAndroid Build Coastguard Worker  } else {
207*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
208*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
209*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("cpu.js"),
210*c8dee2aaSAndroid Build Coastguard Worker      "-sUSE_WEBGL2=0",
211*c8dee2aaSAndroid Build Coastguard Worker    ]
212*c8dee2aaSAndroid Build Coastguard Worker  }
213*c8dee2aaSAndroid Build Coastguard Worker
214*c8dee2aaSAndroid Build Coastguard Worker  ldflags += [
215*c8dee2aaSAndroid Build Coastguard Worker    "-std=c++17",
216*c8dee2aaSAndroid Build Coastguard Worker    "--bind",
217*c8dee2aaSAndroid Build Coastguard Worker    "--no-entry",
218*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
219*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("preamble.js"),
220*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
221*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("color.js"),
222*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
223*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("memory.js"),
224*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
225*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("util.js"),
226*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
227*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("interface.js"),
228*c8dee2aaSAndroid Build Coastguard Worker  ]
229*c8dee2aaSAndroid Build Coastguard Worker
230*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_matrix_helper) {
231*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
232*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
233*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("matrix.js"),
234*c8dee2aaSAndroid Build Coastguard Worker    ]
235*c8dee2aaSAndroid Build Coastguard Worker  }
236*c8dee2aaSAndroid Build Coastguard Worker
237*c8dee2aaSAndroid Build Coastguard Worker  ldflags += [
238*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
239*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("paragraph.js"),
240*c8dee2aaSAndroid Build Coastguard Worker  ]
241*c8dee2aaSAndroid Build Coastguard Worker
242*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_skottie) {
243*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
244*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
245*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("skottie.js"),
246*c8dee2aaSAndroid Build Coastguard Worker    ]
247*c8dee2aaSAndroid Build Coastguard Worker  }
248*c8dee2aaSAndroid Build Coastguard Worker
249*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_pathops) {
250*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
251*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
252*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("pathops.js"),
253*c8dee2aaSAndroid Build Coastguard Worker    ]
254*c8dee2aaSAndroid Build Coastguard Worker  }
255*c8dee2aaSAndroid Build Coastguard Worker
256*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_font) {
257*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
258*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
259*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("font.js"),
260*c8dee2aaSAndroid Build Coastguard Worker    ]
261*c8dee2aaSAndroid Build Coastguard Worker  }
262*c8dee2aaSAndroid Build Coastguard Worker
263*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_skp_serialization) {
264*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
265*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
266*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("skp.js"),
267*c8dee2aaSAndroid Build Coastguard Worker    ]
268*c8dee2aaSAndroid Build Coastguard Worker  }
269*c8dee2aaSAndroid Build Coastguard Worker
270*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_rt_shader) {
271*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
272*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
273*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("rt_shader.js"),
274*c8dee2aaSAndroid Build Coastguard Worker    ]
275*c8dee2aaSAndroid Build Coastguard Worker  }
276*c8dee2aaSAndroid Build Coastguard Worker
277*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_debugger) {
278*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
279*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
280*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("debugger.js"),
281*c8dee2aaSAndroid Build Coastguard Worker    ]
282*c8dee2aaSAndroid Build Coastguard Worker  }
283*c8dee2aaSAndroid Build Coastguard Worker
284*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_canvas_bindings) {
285*c8dee2aaSAndroid Build Coastguard Worker    ldflags += [
286*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
287*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/preamble.js"),
288*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
289*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/util.js"),
290*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
291*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/color.js"),
292*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
293*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/font.js"),
294*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
295*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/canvas2dcontext.js"),
296*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
297*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/htmlcanvas.js"),
298*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
299*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/htmlimage.js"),
300*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
301*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/imagedata.js"),
302*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
303*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/lineargradient.js"),
304*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
305*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/path2d.js"),
306*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
307*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/pattern.js"),
308*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
309*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/radialgradient.js"),
310*c8dee2aaSAndroid Build Coastguard Worker      "--pre-js",
311*c8dee2aaSAndroid Build Coastguard Worker      rebase_path("htmlcanvas/postamble.js"),
312*c8dee2aaSAndroid Build Coastguard Worker    ]
313*c8dee2aaSAndroid Build Coastguard Worker  }
314*c8dee2aaSAndroid Build Coastguard Worker
315*c8dee2aaSAndroid Build Coastguard Worker  ldflags += [
316*c8dee2aaSAndroid Build Coastguard Worker    "--pre-js",
317*c8dee2aaSAndroid Build Coastguard Worker    rebase_path("postamble.js"),
318*c8dee2aaSAndroid Build Coastguard Worker    "-sALLOW_MEMORY_GROWTH",
319*c8dee2aaSAndroid Build Coastguard Worker    "-sDISABLE_EXCEPTION_CATCHING",
320*c8dee2aaSAndroid Build Coastguard Worker    "-sNODEJS_CATCH_EXIT=0",
321*c8dee2aaSAndroid Build Coastguard Worker    "-sDYNAMIC_EXECUTION=0",
322*c8dee2aaSAndroid Build Coastguard Worker    "-sEXPORT_NAME=CanvasKitInit",
323*c8dee2aaSAndroid Build Coastguard Worker    "-sEXPORTED_FUNCTIONS=[_malloc,_free]",
324*c8dee2aaSAndroid Build Coastguard Worker    "-sFORCE_FILESYSTEM=0",
325*c8dee2aaSAndroid Build Coastguard Worker    "-sFILESYSTEM=0",
326*c8dee2aaSAndroid Build Coastguard Worker    "-sMODULARIZE",
327*c8dee2aaSAndroid Build Coastguard Worker    "-sNO_EXIT_RUNTIME=1",
328*c8dee2aaSAndroid Build Coastguard Worker    "-sINITIAL_MEMORY=128MB",
329*c8dee2aaSAndroid Build Coastguard Worker    "-sWASM",
330*c8dee2aaSAndroid Build Coastguard Worker    "-sSTRICT=1",
331*c8dee2aaSAndroid Build Coastguard Worker  ]
332*c8dee2aaSAndroid Build Coastguard Worker
333*c8dee2aaSAndroid Build Coastguard Worker  defines = [
334*c8dee2aaSAndroid Build Coastguard Worker    "SK_FORCE_8_BYTE_ALIGNMENT",
335*c8dee2aaSAndroid Build Coastguard Worker    "EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0",
336*c8dee2aaSAndroid Build Coastguard Worker    "SK_DISABLE_LEGACY_PARAGRAPH_UNICODE=1",
337*c8dee2aaSAndroid Build Coastguard Worker  ]
338*c8dee2aaSAndroid Build Coastguard Worker  if (is_debug) {
339*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_DEBUG" ]
340*c8dee2aaSAndroid Build Coastguard Worker  } else {
341*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_RELEASE" ]
342*c8dee2aaSAndroid Build Coastguard Worker  }
343*c8dee2aaSAndroid Build Coastguard Worker  if (!is_debug && !skia_canvaskit_force_tracing) {
344*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_DISABLE_TRACING" ]
345*c8dee2aaSAndroid Build Coastguard Worker  }
346*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_embedded_font) {
347*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_EMBED_FONT" ]
348*c8dee2aaSAndroid Build Coastguard Worker  }
349*c8dee2aaSAndroid Build Coastguard Worker  if (skia_use_icu && skia_use_harfbuzz) {
350*c8dee2aaSAndroid Build Coastguard Worker    deps += [
351*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skshaper",
352*c8dee2aaSAndroid Build Coastguard Worker      "../../modules/skunicode",
353*c8dee2aaSAndroid Build Coastguard Worker    ]
354*c8dee2aaSAndroid Build Coastguard Worker  }
355*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_paragraph) {
356*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_INCLUDE_PARAGRAPH" ]
357*c8dee2aaSAndroid Build Coastguard Worker  }
358*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_skp_serialization) {
359*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_SERIALIZE_SKP" ]
360*c8dee2aaSAndroid Build Coastguard Worker  }
361*c8dee2aaSAndroid Build Coastguard Worker  if (skia_enable_ganesh) {
362*c8dee2aaSAndroid Build Coastguard Worker    defines += [
363*c8dee2aaSAndroid Build Coastguard Worker      "SK_GANESH",
364*c8dee2aaSAndroid Build Coastguard Worker      "SK_DISABLE_LEGACY_SHADERCONTEXT",
365*c8dee2aaSAndroid Build Coastguard Worker    ]
366*c8dee2aaSAndroid Build Coastguard Worker    if (skia_canvaskit_enable_webgl) {
367*c8dee2aaSAndroid Build Coastguard Worker      defines += [
368*c8dee2aaSAndroid Build Coastguard Worker        "SK_GL",
369*c8dee2aaSAndroid Build Coastguard Worker        "CK_ENABLE_WEBGL",
370*c8dee2aaSAndroid Build Coastguard Worker      ]
371*c8dee2aaSAndroid Build Coastguard Worker    }
372*c8dee2aaSAndroid Build Coastguard Worker  }
373*c8dee2aaSAndroid Build Coastguard Worker
374*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_pathops) {
375*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_INCLUDE_PATHOPS" ]
376*c8dee2aaSAndroid Build Coastguard Worker  }
377*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_enable_rt_shader) {
378*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_INCLUDE_RUNTIME_EFFECT" ]
379*c8dee2aaSAndroid Build Coastguard Worker  }
380*c8dee2aaSAndroid Build Coastguard Worker  if (!skia_canvaskit_enable_alias_font) {
381*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_NO_ALIAS_FONT" ]
382*c8dee2aaSAndroid Build Coastguard Worker  }
383*c8dee2aaSAndroid Build Coastguard Worker  if (skia_canvaskit_legacy_draw_vertices_blend_mode) {
384*c8dee2aaSAndroid Build Coastguard Worker    # https://github.com/flutter/flutter/issues/98531
385*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER" ]
386*c8dee2aaSAndroid Build Coastguard Worker  }
387*c8dee2aaSAndroid Build Coastguard Worker  if (!skia_canvaskit_enable_font) {
388*c8dee2aaSAndroid Build Coastguard Worker    defines += [ "CK_NO_FONTS" ]
389*c8dee2aaSAndroid Build Coastguard Worker  }
390*c8dee2aaSAndroid Build Coastguard Worker}
391