1*c8dee2aaSAndroid Build Coastguard Workerload("@skia_user_config//:copts.bzl", "DEFAULT_COPTS") 2*c8dee2aaSAndroid Build Coastguard Workerload("//bazel:macros.bzl", "bool_flag", "skia_filegroup", "wasm_cc_binary") 3*c8dee2aaSAndroid Build Coastguard Workerload("//bazel/karma:karma_test.bzl", "karma_test") 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Workerpackage( 6*c8dee2aaSAndroid Build Coastguard Worker default_applicable_licenses = ["//:license"], 7*c8dee2aaSAndroid Build Coastguard Worker) 8*c8dee2aaSAndroid Build Coastguard Worker 9*c8dee2aaSAndroid Build Coastguard Workerlicenses(["notice"]) 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Workerexports_files( 12*c8dee2aaSAndroid Build Coastguard Worker ["npm_build/types/index.d.ts"], 13*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//infra:__subpackages__"], 14*c8dee2aaSAndroid Build Coastguard Worker) 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard WorkerBASE_LINKOPTS = [ 17*c8dee2aaSAndroid Build Coastguard Worker #"-flto", # https://github.com/emscripten-core/emsdk/issues/807 18*c8dee2aaSAndroid Build Coastguard Worker "--bind", # Compiles the source code using the Embind bindings to connect C/C++ and JavaScript 19*c8dee2aaSAndroid Build Coastguard Worker "-fno-rtti", 20*c8dee2aaSAndroid Build Coastguard Worker "--no-entry", 21*c8dee2aaSAndroid Build Coastguard Worker "-sALLOW_MEMORY_GROWTH", 22*c8dee2aaSAndroid Build Coastguard Worker "-sUSE_PTHREADS=0", # Disable pthreads 23*c8dee2aaSAndroid Build Coastguard Worker "-sMODULARIZE", 24*c8dee2aaSAndroid Build Coastguard Worker "-sDISABLE_EXCEPTION_CATCHING", # Disable all exception catching 25*c8dee2aaSAndroid Build Coastguard Worker "-sNODEJS_CATCH_EXIT=0", # We don't have a 'main' so disable exit() catching 26*c8dee2aaSAndroid Build Coastguard Worker "-sWASM", 27*c8dee2aaSAndroid Build Coastguard Worker "-sMAX_WEBGL_VERSION=2", 28*c8dee2aaSAndroid Build Coastguard Worker "-sUSE_WEBGL2=1", 29*c8dee2aaSAndroid Build Coastguard Worker "-sFORCE_FILESYSTEM=0", 30*c8dee2aaSAndroid Build Coastguard Worker "-sDYNAMIC_EXECUTION=0", 31*c8dee2aaSAndroid Build Coastguard Worker "-sFILESYSTEM=0", 32*c8dee2aaSAndroid Build Coastguard Worker "-sEXPORTED_FUNCTIONS=['_malloc','_free']", 33*c8dee2aaSAndroid Build Coastguard Worker] 34*c8dee2aaSAndroid Build Coastguard Worker 35*c8dee2aaSAndroid Build Coastguard WorkerRELEASE_OPTS = [ 36*c8dee2aaSAndroid Build Coastguard Worker "-sASSERTIONS=0", # Turn off assertions 37*c8dee2aaSAndroid Build Coastguard Worker "-Oz", 38*c8dee2aaSAndroid Build Coastguard Worker] 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard WorkerDEBUG_OPTS = [ 41*c8dee2aaSAndroid Build Coastguard Worker "--closure 0", # Do not use closure 42*c8dee2aaSAndroid Build Coastguard Worker "-sASSERTIONS", # Turn on assertions 43*c8dee2aaSAndroid Build Coastguard Worker "-sGL_ASSERTIONS", 44*c8dee2aaSAndroid Build Coastguard Worker "-O0", 45*c8dee2aaSAndroid Build Coastguard Worker "-g3", 46*c8dee2aaSAndroid Build Coastguard Worker] 47*c8dee2aaSAndroid Build Coastguard Worker 48*c8dee2aaSAndroid Build Coastguard Workerskia_filegroup( 49*c8dee2aaSAndroid Build Coastguard Worker name = "hdrs", 50*c8dee2aaSAndroid Build Coastguard Worker srcs = [ 51*c8dee2aaSAndroid Build Coastguard Worker "WasmCommon.h", 52*c8dee2aaSAndroid Build Coastguard Worker ], 53*c8dee2aaSAndroid Build Coastguard Worker) 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Worker# See https://stackoverflow.com/a/57499321 for reference. 56*c8dee2aaSAndroid Build Coastguard Workergenrule( 57*c8dee2aaSAndroid Build Coastguard Worker name = "create_notomono_cpp", 58*c8dee2aaSAndroid Build Coastguard Worker srcs = ["fonts/NotoMono-Regular.ttf"], 59*c8dee2aaSAndroid Build Coastguard Worker outs = ["fonts/NotoMono-Regular.ttf.bazel.cpp"], # Distinct name from compile.sh's version 60*c8dee2aaSAndroid Build Coastguard Worker cmd = "$(location //tools:embed_resources) --name=SK_EMBEDDED_FONTS " + 61*c8dee2aaSAndroid Build Coastguard Worker "--input=modules/canvaskit/fonts/NotoMono-Regular.ttf " + 62*c8dee2aaSAndroid Build Coastguard Worker # The $@ means substitute in the one and only output location, which will be located 63*c8dee2aaSAndroid Build Coastguard Worker # in //bazel-out, not in the fonts subdirectory (although it will be available to clients 64*c8dee2aaSAndroid Build Coastguard Worker # in the fonts/ subdirectory as if it had been there all along. 65*c8dee2aaSAndroid Build Coastguard Worker "--output=$@ " + 66*c8dee2aaSAndroid Build Coastguard Worker "--align=4", 67*c8dee2aaSAndroid Build Coastguard Worker tools = ["//tools:embed_resources"], 68*c8dee2aaSAndroid Build Coastguard Worker) 69*c8dee2aaSAndroid Build Coastguard Worker 70*c8dee2aaSAndroid Build Coastguard Worker# Note: These are defines that only impact the _bindings.cpp files in this folder. 71*c8dee2aaSAndroid Build Coastguard Worker# Any defines that need to effect the entire Skia build should go in //bazel/BUILD.bazel 72*c8dee2aaSAndroid Build Coastguard WorkerCK_DEFINES = [ 73*c8dee2aaSAndroid Build Coastguard Worker "CK_INCLUDE_PATHOPS", 74*c8dee2aaSAndroid Build Coastguard Worker "EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0", # Allows us to compile with -fno-rtti 75*c8dee2aaSAndroid Build Coastguard Worker "SK_DISABLE_LEGACY_PARAGRAPH_UNICODE=1", 76*c8dee2aaSAndroid Build Coastguard Worker] + select({ 77*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_true": ["CK_INCLUDE_PARAGRAPH"], 78*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_false": ["CK_NO_FONTS"], 79*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 80*c8dee2aaSAndroid Build Coastguard Worker ":include_embedded_font_true": ["CK_EMBED_FONT"], 81*c8dee2aaSAndroid Build Coastguard Worker ":include_embedded_font_false": [], 82*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 83*c8dee2aaSAndroid Build Coastguard Worker ":enable_skp_serialization_true": ["CK_SERIALIZE_SKP=1"], 84*c8dee2aaSAndroid Build Coastguard Worker ":enable_skp_serialization_false": [], 85*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 86*c8dee2aaSAndroid Build Coastguard Worker ":enable_runtime_effect_true": ["CK_INCLUDE_RUNTIME_EFFECT=1"], 87*c8dee2aaSAndroid Build Coastguard Worker ":enable_runtime_effect_false": [], 88*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 89*c8dee2aaSAndroid Build Coastguard Worker ":enable_webgl_true": ["CK_ENABLE_WEBGL"], 90*c8dee2aaSAndroid Build Coastguard Worker "//conditions:default": [], 91*c8dee2aaSAndroid Build Coastguard Worker}) 92*c8dee2aaSAndroid Build Coastguard Worker 93*c8dee2aaSAndroid Build Coastguard WorkerCK_RELEASE_OPTS = [ 94*c8dee2aaSAndroid Build Coastguard Worker "--closure 1", # Run the closure compiler 95*c8dee2aaSAndroid Build Coastguard Worker # pass the externs file in 96*c8dee2aaSAndroid Build Coastguard Worker "--closure-args=--externs=$(location externs.js)", 97*c8dee2aaSAndroid Build Coastguard Worker] 98*c8dee2aaSAndroid Build Coastguard Worker 99*c8dee2aaSAndroid Build Coastguard WorkerCK_LINKOPTS = BASE_LINKOPTS + [ 100*c8dee2aaSAndroid Build Coastguard Worker "-sEXPORT_NAME=CanvasKitInit", 101*c8dee2aaSAndroid Build Coastguard Worker "-sINITIAL_MEMORY=128MB", 102*c8dee2aaSAndroid Build Coastguard Worker # The order of these --pre-js flags matters! The preamble is a partially open scope and the 103*c8dee2aaSAndroid Build Coastguard Worker # postamble closes it. TODO(kjlubick) do we need to do it this way anymore? 104*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 105*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/preamble.js", 106*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 107*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/color.js", 108*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 109*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/memory.js", 110*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 111*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/util.js", 112*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 113*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/interface.js", 114*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 115*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/pathops.js", 116*c8dee2aaSAndroid Build Coastguard Worker] + select({ 117*c8dee2aaSAndroid Build Coastguard Worker ":enable_webgl_true": [ 118*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 119*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/cpu.js", 120*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 121*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/webgl.js", 122*c8dee2aaSAndroid Build Coastguard Worker ], 123*c8dee2aaSAndroid Build Coastguard Worker "//conditions:default": [ 124*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 125*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/cpu.js", 126*c8dee2aaSAndroid Build Coastguard Worker ], 127*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 128*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_true": [ 129*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 130*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/font.js", 131*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 132*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/paragraph.js", 133*c8dee2aaSAndroid Build Coastguard Worker ], 134*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_false": [], 135*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 136*c8dee2aaSAndroid Build Coastguard Worker ":enable_canvas_polyfill_true": [ 137*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 138*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/preamble.js", 139*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 140*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/util.js", 141*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 142*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/color.js", 143*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 144*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/font.js", 145*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 146*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/canvas2dcontext.js", 147*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 148*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/htmlcanvas.js", 149*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 150*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/htmlimage.js", 151*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 152*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/imagedata.js", 153*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 154*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/lineargradient.js", 155*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 156*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/path2d.js", 157*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 158*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/pattern.js", 159*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 160*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/radialgradient.js", 161*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 162*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/htmlcanvas/postamble.js", 163*c8dee2aaSAndroid Build Coastguard Worker ], 164*c8dee2aaSAndroid Build Coastguard Worker ":enable_canvas_polyfill_false": [], 165*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 166*c8dee2aaSAndroid Build Coastguard Worker ":enable_skottie_true": [ 167*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 168*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/skottie.js", 169*c8dee2aaSAndroid Build Coastguard Worker ], 170*c8dee2aaSAndroid Build Coastguard Worker ":enable_skottie_false": [], 171*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 172*c8dee2aaSAndroid Build Coastguard Worker ":enable_skp_serialization_true": [ 173*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 174*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/skp.js", 175*c8dee2aaSAndroid Build Coastguard Worker ], 176*c8dee2aaSAndroid Build Coastguard Worker ":enable_skp_serialization_false": [], 177*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 178*c8dee2aaSAndroid Build Coastguard Worker ":enable_runtime_effect_true": [ 179*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 180*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/rt_shader.js", 181*c8dee2aaSAndroid Build Coastguard Worker ], 182*c8dee2aaSAndroid Build Coastguard Worker ":enable_runtime_effect_false": [], 183*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 184*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_true": [ 185*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 186*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/debugger.js", 187*c8dee2aaSAndroid Build Coastguard Worker ], 188*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_false": [], 189*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 190*c8dee2aaSAndroid Build Coastguard Worker ":include_matrix_js_true": [ 191*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 192*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/matrix.js", 193*c8dee2aaSAndroid Build Coastguard Worker ], 194*c8dee2aaSAndroid Build Coastguard Worker ":include_matrix_js_false": [], 195*c8dee2aaSAndroid Build Coastguard Worker}) + [ 196*c8dee2aaSAndroid Build Coastguard Worker # This must come last 197*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 198*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/postamble.js", 199*c8dee2aaSAndroid Build Coastguard Worker] + select({ 200*c8dee2aaSAndroid Build Coastguard Worker "//bazel/common_config_settings:debug_build": DEBUG_OPTS + [ 201*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 202*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/debug.js", 203*c8dee2aaSAndroid Build Coastguard Worker ], 204*c8dee2aaSAndroid Build Coastguard Worker "//conditions:default": RELEASE_OPTS + CK_RELEASE_OPTS + [ 205*c8dee2aaSAndroid Build Coastguard Worker "--pre-js", 206*c8dee2aaSAndroid Build Coastguard Worker "modules/canvaskit/release.js", 207*c8dee2aaSAndroid Build Coastguard Worker ], 208*c8dee2aaSAndroid Build Coastguard Worker}) 209*c8dee2aaSAndroid Build Coastguard Worker 210*c8dee2aaSAndroid Build Coastguard Worker# All JS files that could possibly be included via --pre-js or --post-js. 211*c8dee2aaSAndroid Build Coastguard Worker# Whether they actually will be or not will be controlled above in the construction of CK_LINKOPTS. 212*c8dee2aaSAndroid Build Coastguard WorkerJS_INTERFACE_FILES = [ 213*c8dee2aaSAndroid Build Coastguard Worker "color.js", 214*c8dee2aaSAndroid Build Coastguard Worker "cpu.js", 215*c8dee2aaSAndroid Build Coastguard Worker "debug.js", 216*c8dee2aaSAndroid Build Coastguard Worker "font.js", 217*c8dee2aaSAndroid Build Coastguard Worker "interface.js", 218*c8dee2aaSAndroid Build Coastguard Worker "matrix.js", 219*c8dee2aaSAndroid Build Coastguard Worker "memory.js", 220*c8dee2aaSAndroid Build Coastguard Worker "paragraph.js", 221*c8dee2aaSAndroid Build Coastguard Worker "pathops.js", 222*c8dee2aaSAndroid Build Coastguard Worker "postamble.js", 223*c8dee2aaSAndroid Build Coastguard Worker "preamble.js", 224*c8dee2aaSAndroid Build Coastguard Worker "release.js", 225*c8dee2aaSAndroid Build Coastguard Worker "rt_shader.js", 226*c8dee2aaSAndroid Build Coastguard Worker "skottie.js", 227*c8dee2aaSAndroid Build Coastguard Worker "skp.js", 228*c8dee2aaSAndroid Build Coastguard Worker "util.js", 229*c8dee2aaSAndroid Build Coastguard Worker "webgl.js", 230*c8dee2aaSAndroid Build Coastguard Worker "webgpu.js", 231*c8dee2aaSAndroid Build Coastguard Worker] + [ 232*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/canvas2dcontext.js", 233*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/color.js", 234*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/font.js", 235*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/htmlcanvas.js", 236*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/htmlimage.js", 237*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/imagedata.js", 238*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/lineargradient.js", 239*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/path2d.js", 240*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/pattern.js", 241*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/postamble.js", 242*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/preamble.js", 243*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/radialgradient.js", 244*c8dee2aaSAndroid Build Coastguard Worker "htmlcanvas/util.js", 245*c8dee2aaSAndroid Build Coastguard Worker] + select({ 246*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_true": ["debugger.js"], 247*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_false": [], 248*c8dee2aaSAndroid Build Coastguard Worker}) 249*c8dee2aaSAndroid Build Coastguard Worker 250*c8dee2aaSAndroid Build Coastguard WorkerCK_SRCS = [ 251*c8dee2aaSAndroid Build Coastguard Worker "canvaskit_bindings.cpp", 252*c8dee2aaSAndroid Build Coastguard Worker ":hdrs", 253*c8dee2aaSAndroid Build Coastguard Worker] + select({ 254*c8dee2aaSAndroid Build Coastguard Worker ":include_embedded_font_true": ["fonts/NotoMono-Regular.ttf.bazel.cpp"], 255*c8dee2aaSAndroid Build Coastguard Worker ":include_embedded_font_false": [], 256*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 257*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_true": [ 258*c8dee2aaSAndroid Build Coastguard Worker "paragraph_bindings.cpp", 259*c8dee2aaSAndroid Build Coastguard Worker "paragraph_bindings_gen.cpp", 260*c8dee2aaSAndroid Build Coastguard Worker ], 261*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_false": [], 262*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 263*c8dee2aaSAndroid Build Coastguard Worker ":enable_skottie_true": ["skottie_bindings.cpp"], 264*c8dee2aaSAndroid Build Coastguard Worker ":enable_skottie_false": [], 265*c8dee2aaSAndroid Build Coastguard Worker}) + select({ 266*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_true": ["debugger_bindings.cpp"], 267*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_false": [], 268*c8dee2aaSAndroid Build Coastguard Worker}) 269*c8dee2aaSAndroid Build Coastguard Worker 270*c8dee2aaSAndroid Build Coastguard WorkerCK_COPTS = [ 271*c8dee2aaSAndroid Build Coastguard Worker "-Wno-header-hygiene", 272*c8dee2aaSAndroid Build Coastguard Worker] 273*c8dee2aaSAndroid Build Coastguard Worker 274*c8dee2aaSAndroid Build Coastguard Workercc_binary( 275*c8dee2aaSAndroid Build Coastguard Worker name = "canvaskit.build", 276*c8dee2aaSAndroid Build Coastguard Worker srcs = CK_SRCS, 277*c8dee2aaSAndroid Build Coastguard Worker additional_linker_inputs = JS_INTERFACE_FILES + ["externs.js"], 278*c8dee2aaSAndroid Build Coastguard Worker copts = DEFAULT_COPTS + CK_COPTS, 279*c8dee2aaSAndroid Build Coastguard Worker linkopts = CK_LINKOPTS, 280*c8dee2aaSAndroid Build Coastguard Worker local_defines = CK_DEFINES, 281*c8dee2aaSAndroid Build Coastguard Worker # This target won't build successfully on its own because of missing emscripten 282*c8dee2aaSAndroid Build Coastguard Worker # headers etc. Therefore, we hide it from wildcards. 283*c8dee2aaSAndroid Build Coastguard Worker tags = ["manual"], 284*c8dee2aaSAndroid Build Coastguard Worker deps = [ 285*c8dee2aaSAndroid Build Coastguard Worker "//:bmp_decode_codec", 286*c8dee2aaSAndroid Build Coastguard Worker "//:core", 287*c8dee2aaSAndroid Build Coastguard Worker "//:gif_decode_codec", 288*c8dee2aaSAndroid Build Coastguard Worker "//:ico_decode_codec", 289*c8dee2aaSAndroid Build Coastguard Worker "//:jpeg_decode_codec", 290*c8dee2aaSAndroid Build Coastguard Worker "//:jpeg_encode_codec", 291*c8dee2aaSAndroid Build Coastguard Worker "//:png_decode_codec", 292*c8dee2aaSAndroid Build Coastguard Worker "//:png_encode_codec", 293*c8dee2aaSAndroid Build Coastguard Worker "//:wbmp_decode_codec", 294*c8dee2aaSAndroid Build Coastguard Worker "//:webp_decode_codec", 295*c8dee2aaSAndroid Build Coastguard Worker "//:webp_encode_codec", 296*c8dee2aaSAndroid Build Coastguard Worker "//src/android:animated_image", 297*c8dee2aaSAndroid Build Coastguard Worker ] + select({ 298*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_true": [ 299*c8dee2aaSAndroid Build Coastguard Worker "//:fontmgr_data_freetype", 300*c8dee2aaSAndroid Build Coastguard Worker "//:fontmgr_empty_freetype", 301*c8dee2aaSAndroid Build Coastguard Worker "//modules/skparagraph:skparagraph_harfbuzz_skunicode", 302*c8dee2aaSAndroid Build Coastguard Worker "//modules/skunicode:skunicode_icu", 303*c8dee2aaSAndroid Build Coastguard Worker ], 304*c8dee2aaSAndroid Build Coastguard Worker ":enable_fonts_false": [], 305*c8dee2aaSAndroid Build Coastguard Worker }) + select({ 306*c8dee2aaSAndroid Build Coastguard Worker ":enable_skottie_true": [ 307*c8dee2aaSAndroid Build Coastguard Worker "//:skshaper_harfbuzz", 308*c8dee2aaSAndroid Build Coastguard Worker "//:skshaper_unicode", 309*c8dee2aaSAndroid Build Coastguard Worker "//:skunicode_icu", 310*c8dee2aaSAndroid Build Coastguard Worker "//modules/skottie", 311*c8dee2aaSAndroid Build Coastguard Worker "//modules/skottie/utils:skottie_utils", 312*c8dee2aaSAndroid Build Coastguard Worker "//modules/skottie/utils:text_editor", 313*c8dee2aaSAndroid Build Coastguard Worker ], 314*c8dee2aaSAndroid Build Coastguard Worker ":enable_skottie_false": [], 315*c8dee2aaSAndroid Build Coastguard Worker }) + select({ 316*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_true": [ 317*c8dee2aaSAndroid Build Coastguard Worker "//tools/debugger", 318*c8dee2aaSAndroid Build Coastguard Worker ], 319*c8dee2aaSAndroid Build Coastguard Worker ":build_for_debugger_false": [], 320*c8dee2aaSAndroid Build Coastguard Worker }) + select({ 321*c8dee2aaSAndroid Build Coastguard Worker ":enable_webgl_true": [ 322*c8dee2aaSAndroid Build Coastguard Worker "//:ganesh_gl", 323*c8dee2aaSAndroid Build Coastguard Worker "//:ganesh_webgl_factory", 324*c8dee2aaSAndroid Build Coastguard Worker ], 325*c8dee2aaSAndroid Build Coastguard Worker "//conditions:default": [], 326*c8dee2aaSAndroid Build Coastguard Worker }), 327*c8dee2aaSAndroid Build Coastguard Worker) 328*c8dee2aaSAndroid Build Coastguard Worker 329*c8dee2aaSAndroid Build Coastguard Workerwasm_cc_binary( 330*c8dee2aaSAndroid Build Coastguard Worker name = "canvaskit", 331*c8dee2aaSAndroid Build Coastguard Worker # Whatever is before the dot will be the name of the output js and wasm, aka "the stem". 332*c8dee2aaSAndroid Build Coastguard Worker # https://github.com/emscripten-core/emsdk/blob/82ad00499a42abde16b363239d2bc83bf5d863ab/bazel/emscripten_toolchain/wasm_cc_binary.bzl#L91 333*c8dee2aaSAndroid Build Coastguard Worker cc_target = ":canvaskit.build", 334*c8dee2aaSAndroid Build Coastguard Worker visibility = [ 335*c8dee2aaSAndroid Build Coastguard Worker "//infra/debugger-app:__pkg__", 336*c8dee2aaSAndroid Build Coastguard Worker "//infra/jsfiddle:__pkg__", 337*c8dee2aaSAndroid Build Coastguard Worker "//infra/shaders:__pkg__", 338*c8dee2aaSAndroid Build Coastguard Worker "//infra/skottie:__pkg__", 339*c8dee2aaSAndroid Build Coastguard Worker ], 340*c8dee2aaSAndroid Build Coastguard Worker) 341*c8dee2aaSAndroid Build Coastguard Worker 342*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 343*c8dee2aaSAndroid Build Coastguard Worker name = "enable_canvas_polyfill", 344*c8dee2aaSAndroid Build Coastguard Worker default = False, 345*c8dee2aaSAndroid Build Coastguard Worker) 346*c8dee2aaSAndroid Build Coastguard Worker 347*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 348*c8dee2aaSAndroid Build Coastguard Worker name = "enable_fonts", 349*c8dee2aaSAndroid Build Coastguard Worker default = False, 350*c8dee2aaSAndroid Build Coastguard Worker) 351*c8dee2aaSAndroid Build Coastguard Worker 352*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 353*c8dee2aaSAndroid Build Coastguard Worker name = "include_embedded_font", 354*c8dee2aaSAndroid Build Coastguard Worker default = False, 355*c8dee2aaSAndroid Build Coastguard Worker) 356*c8dee2aaSAndroid Build Coastguard Worker 357*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 358*c8dee2aaSAndroid Build Coastguard Worker name = "include_matrix_js", 359*c8dee2aaSAndroid Build Coastguard Worker default = False, 360*c8dee2aaSAndroid Build Coastguard Worker) 361*c8dee2aaSAndroid Build Coastguard Worker 362*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 363*c8dee2aaSAndroid Build Coastguard Worker name = "enable_skottie", 364*c8dee2aaSAndroid Build Coastguard Worker default = False, 365*c8dee2aaSAndroid Build Coastguard Worker) 366*c8dee2aaSAndroid Build Coastguard Worker 367*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 368*c8dee2aaSAndroid Build Coastguard Worker name = "enable_skp_serialization", 369*c8dee2aaSAndroid Build Coastguard Worker default = False, 370*c8dee2aaSAndroid Build Coastguard Worker) 371*c8dee2aaSAndroid Build Coastguard Worker 372*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 373*c8dee2aaSAndroid Build Coastguard Worker name = "enable_runtime_effect", 374*c8dee2aaSAndroid Build Coastguard Worker default = False, 375*c8dee2aaSAndroid Build Coastguard Worker) 376*c8dee2aaSAndroid Build Coastguard Worker 377*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 378*c8dee2aaSAndroid Build Coastguard Worker name = "enable_webgl", 379*c8dee2aaSAndroid Build Coastguard Worker default = False, 380*c8dee2aaSAndroid Build Coastguard Worker) 381*c8dee2aaSAndroid Build Coastguard Worker 382*c8dee2aaSAndroid Build Coastguard Workerbool_flag( 383*c8dee2aaSAndroid Build Coastguard Worker name = "build_for_debugger", 384*c8dee2aaSAndroid Build Coastguard Worker default = False, 385*c8dee2aaSAndroid Build Coastguard Worker) 386*c8dee2aaSAndroid Build Coastguard Worker 387*c8dee2aaSAndroid Build Coastguard Workerkarma_test( 388*c8dee2aaSAndroid Build Coastguard Worker name = "canvaskit_js_tests", 389*c8dee2aaSAndroid Build Coastguard Worker srcs = [ 390*c8dee2aaSAndroid Build Coastguard Worker ":canvaskit/canvaskit.js", 391*c8dee2aaSAndroid Build Coastguard Worker # We want to make sure the CanvasKit JS is loaded before the loader script, so 392*c8dee2aaSAndroid Build Coastguard Worker # CanvasKitInit is defined. This loader script makes a promise... 393*c8dee2aaSAndroid Build Coastguard Worker "tests/init_with_gold_server.js", 394*c8dee2aaSAndroid Build Coastguard Worker "tests/util.js", 395*c8dee2aaSAndroid Build Coastguard Worker "tests/bazel_test_reporter.js", 396*c8dee2aaSAndroid Build Coastguard Worker # ...which is used by all of the tests 397*c8dee2aaSAndroid Build Coastguard Worker "tests/canvas_test.js", 398*c8dee2aaSAndroid Build Coastguard Worker "tests/canvas2d_test.js", 399*c8dee2aaSAndroid Build Coastguard Worker "tests/core_test.js", 400*c8dee2aaSAndroid Build Coastguard Worker "tests/font_test.js", 401*c8dee2aaSAndroid Build Coastguard Worker "tests/matrix_test.js", 402*c8dee2aaSAndroid Build Coastguard Worker "tests/paragraph_test.js", 403*c8dee2aaSAndroid Build Coastguard Worker "tests/path_test.js", 404*c8dee2aaSAndroid Build Coastguard Worker "tests/rtshader_test.js", 405*c8dee2aaSAndroid Build Coastguard Worker "tests/skottie_test.js", 406*c8dee2aaSAndroid Build Coastguard Worker ], 407*c8dee2aaSAndroid Build Coastguard Worker config_file = "karma.bazel.js", 408*c8dee2aaSAndroid Build Coastguard Worker # The tests need the Gold server to be up and running so they can make POST requests to 409*c8dee2aaSAndroid Build Coastguard Worker # exfiltrate the PNGs they create. 410*c8dee2aaSAndroid Build Coastguard Worker env = "//modules/canvaskit/go/gold_test_env:gold_test_env", 411*c8dee2aaSAndroid Build Coastguard Worker static_files = [ 412*c8dee2aaSAndroid Build Coastguard Worker ":canvaskit/canvaskit.wasm", 413*c8dee2aaSAndroid Build Coastguard Worker "//modules/canvaskit/tests/assets:test_assets", 414*c8dee2aaSAndroid Build Coastguard Worker ], 415*c8dee2aaSAndroid Build Coastguard Worker) 416*c8dee2aaSAndroid Build Coastguard Worker 417*c8dee2aaSAndroid Build Coastguard Workergenrule( 418*c8dee2aaSAndroid Build Coastguard Worker name = "make version file", 419*c8dee2aaSAndroid Build Coastguard Worker srcs = ["make_version.sh"], 420*c8dee2aaSAndroid Build Coastguard Worker outs = ["version.js"], 421*c8dee2aaSAndroid Build Coastguard Worker cmd = "$< $@", 422*c8dee2aaSAndroid Build Coastguard Worker # This script uses the Git executable, which is not on the remote builders. 423*c8dee2aaSAndroid Build Coastguard Worker # Forcing the execution to be local ensures it will be in the path. 424*c8dee2aaSAndroid Build Coastguard Worker local = True, 425*c8dee2aaSAndroid Build Coastguard Worker visibility = ["//infra:__subpackages__"], 426*c8dee2aaSAndroid Build Coastguard Worker) 427