load("//bazel:macros.bzl", "exports_files_legacy")
load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary")
load("//bazel/common_config_settings:defs.bzl", "bool_flag")
load("//bazel:cc_binary_with_flags.bzl", "cc_binary_with_flags")
load("//bazel:karma_test.bzl", "karma_test")

licenses(["notice"])

exports_files_legacy()

package(default_visibility = ["//:__subpackages__"])

BASE_LINKOPTS = [
    #"-flto",  # https://github.com/emscripten-core/emsdk/issues/807
    "--bind",  # Compiles the source code using the Embind bindings to connect C/C++ and JavaScript
    "--no-entry",
    "-sALLOW_MEMORY_GROWTH",
    "-sUSE_PTHREADS=0",  # Disable pthreads
    "-sMODULARIZE",
    "-sDISABLE_EXCEPTION_CATCHING",  # Disable all exception catching
    "-sNODEJS_CATCH_EXIT=0",  # We don't have a 'main' so disable exit() catching
    "-sWASM",
    "-sMAX_WEBGL_VERSION=2",
    "-sUSE_WEBGL2=1",
    "-sFORCE_FILESYSTEM=0",
    "-sDYNAMIC_EXECUTION=0",
    "-sFILESYSTEM=0",
    "-sEXPORTED_FUNCTIONS=['_malloc','_free']",
]

RELEASE_OPTS = [
    "-sASSERTIONS=0",  # Turn off assertions
    "-Oz",
]

DEBUG_OPTS = [
    "--closure 0",  # Do not use closure
    "-sASSERTIONS",  # Turn on assertions
    "-sGL_ASSERTIONS",
    "-O0",
    "-g3",
    "--source-map-base=/build/",
]

GM_OPTS = [
    "-sEXPORT_NAME=InitWasmGMTests",
    "--pre-js",
    "modules/canvaskit/gm.js",
    "-sDEMANGLE_SUPPORT=1",
    "--profiling-funcs",
    "--profiling",
]

filegroup(
    name = "hdrs",
    srcs = [
        "WasmCommon.h",
    ],
)

cc_binary_with_flags(
    name = "wasm_gm_tests.with_flags",
    testonly = True,
    srcs = [
        "gm_bindings.cpp",
        ":hdrs",
        "//gm:gm_list",
        "//tests:test_list",
    ],
    additional_linker_inputs = ["gm.js"],
    linkopts = select({
        "//bazel/common_config_settings:debug_build": BASE_LINKOPTS + GM_OPTS + DEBUG_OPTS,
        "//bazel/common_config_settings:release_build": BASE_LINKOPTS + GM_OPTS + RELEASE_OPTS,
        "//conditions:default": BASE_LINKOPTS + GM_OPTS + RELEASE_OPTS,
    }),
    set_flags = {
        "include_decoder": [
            "jpeg_decode_codec",
            "png_decode_codec",
            "webp_decode_codec",
            "gif_decode_codec",
        ],
        "include_encoder": [
            "jpeg_encode_codec",
            "png_encode_codec",
            "webp_encode_codec",
        ],
        "gpu_backend": [
            "gl_backend",
        ],
        "with_gl_standard": [
            "webgl_standard",
        ],
        "is_skia_dev_build": [
            "True",
        ],
    },
    # This target won't build successfully on its own because of missing emscripten
    # headers etc. Therefore, we hide it from wildcards.
    tags = ["manual"],
    deps = [
        "//:skia_core",
        "//gm",
        "//src/core:SkFontMgrPriv_hdr",
        "//tests",
        "//tools:hash_and_encode",
        "//tools:resource_factory",
        "//tools/fonts:test_font_manager",
    ],
)

wasm_cc_binary(
    name = "wasm_gm_tests",
    testonly = True,
    cc_target = ":wasm_gm_tests.with_flags",
)

# See https://stackoverflow.com/a/57499321 for reference.
genrule(
    name = "create_notomono_cpp",
    srcs = ["fonts/NotoMono-Regular.ttf"],
    outs = ["fonts/NotoMono-Regular.ttf.bazel.cpp"],  # Distinct name from compile.sh's version
    cmd = "$(location //tools:embed_resources) --name=SK_EMBEDDED_FONTS " +
          "--input=modules/canvaskit/fonts/NotoMono-Regular.ttf " +
          # The $@ means substitute in the one and only output location, which will be located
          # in //bazel-out, not in the fonts subdirectory (although it will be available to clients
          # in the fonts/ subdirectory as if it had been there all along.
          "--output=$@ " +
          "--align=4",
    tools = ["//tools:embed_resources"],
)

# Note: These are defines that only impact the _bindings.cpp files in this folder.
# Any defines that need to effect the entire Skia build should go in //bazel/BUILD.bazel
CK_DEFINES = [
    "CK_INCLUDE_PATHOPS",
] + select({
    ":enable_fonts_true": ["CK_INCLUDE_PARAGRAPH"],
    ":enable_fonts_false": ["CK_NO_FONTS"],
}) + select({
    ":enable_skp_serialization_true": ["CK_SERIALIZE_SKP=1"],
    ":enable_skp_serialization_false": [],
}) + select({
    ":enable_runtime_effect_true": ["CK_INCLUDE_RUNTIME_EFFECT=1"],
    ":enable_runtime_effect_false": [],
})

CK_RELEASE_OPTS = [
    "--closure 1",  # Run the closure compiler
    # pass the externs file in
    "--closure-args=--externs=$(location externs.js)",
]

CK_OPTS = BASE_LINKOPTS + [
    "-sEXPORT_NAME=CanvasKitInit",
    "-sINITIAL_MEMORY=128MB",
    # The order of these --pre-js flags matters! The preamble is a partially open scope and the
    # postamble closes it. TODO(kjlubick) do we need to do it this way anymore?
    "--pre-js",
    "modules/canvaskit/preamble.js",
    "--pre-js",
    "modules/canvaskit/color.js",
    "--pre-js",
    "modules/canvaskit/memory.js",
    "--pre-js",
    "modules/canvaskit/util.js",
    "--pre-js",
    "modules/canvaskit/interface.js",
    "--pre-js",
    "modules/canvaskit/pathops.js",
] + select({
    "//bazel/common_config_settings:gl_backend": [
        "--pre-js",
        "modules/canvaskit/cpu.js",
        "--pre-js",
        "modules/canvaskit/gpu.js",
    ],
    "//conditions:default": [
        "--pre-js",
        "modules/canvaskit/cpu.js",
    ],
}) + select({
    ":enable_fonts_true": [
        "--pre-js",
        "modules/canvaskit/font.js",
        "--pre-js",
        "modules/canvaskit/paragraph.js",
    ],
    ":enable_fonts_false": [],
}) + select({
    ":enable_canvas_polyfill_true": [
        "--pre-js",
        "modules/canvaskit/htmlcanvas/preamble.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/util.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/color.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/font.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/canvas2dcontext.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/htmlcanvas.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/htmlimage.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/imagedata.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/lineargradient.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/path2d.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/pattern.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/radialgradient.js",
        "--pre-js",
        "modules/canvaskit/htmlcanvas/postamble.js",
    ],
    ":enable_canvas_polyfill_false": [],
}) + select({
    ":enable_skottie_true": [
        "--pre-js",
        "modules/canvaskit/skottie.js",
    ],
    ":enable_skottie_false": [],
}) + select({
    ":enable_skp_serialization_true": [
        "--pre-js",
        "modules/canvaskit/skp.js",
    ],
    ":enable_skp_serialization_false": [],
}) + select({
    ":enable_particles_true": [
        "--pre-js",
        "modules/canvaskit/particles.js",
    ],
    ":enable_particles_false": [],
}) + select({
    ":enable_runtime_effect_true": [
        "--pre-js",
        "modules/canvaskit/rt_shader.js",
    ],
    ":enable_runtime_effect_false": [],
}) + select({
    ":include_matrix_js_true": [
        "--pre-js",
        "modules/canvaskit/matrix.js",
    ],
    ":include_matrix_js_false": [],
}) + [
    # This must come last
    "--pre-js",
    "modules/canvaskit/postamble.js",
] + select({
    "//bazel/common_config_settings:debug_build": DEBUG_OPTS + [
        "--pre-js",
        "modules/canvaskit/debug.js",
    ],
    "//conditions:default": RELEASE_OPTS + CK_RELEASE_OPTS + [
        "--pre-js",
        "modules/canvaskit/release.js",
    ],
})

# All JS files that could possibly be included via --pre-js or --post-js.
# Whether they actually will be or not will be controlled above in the construction of CK_OPTS.
JS_INTERFACE_FILES = [
    "color.js",
    "cpu.js",
    "debug.js",
    "font.js",
    "gpu.js",
    "interface.js",
    "matrix.js",
    "memory.js",
    "paragraph.js",
    "particles.js",
    "pathops.js",
    "postamble.js",
    "preamble.js",
    "release.js",
    "rt_shader.js",
    "skottie.js",
    "skp.js",
    "util.js",
] + [
    "htmlcanvas/canvas2dcontext.js",
    "htmlcanvas/color.js",
    "htmlcanvas/font.js",
    "htmlcanvas/htmlcanvas.js",
    "htmlcanvas/htmlimage.js",
    "htmlcanvas/imagedata.js",
    "htmlcanvas/lineargradient.js",
    "htmlcanvas/path2d.js",
    "htmlcanvas/pattern.js",
    "htmlcanvas/postamble.js",
    "htmlcanvas/preamble.js",
    "htmlcanvas/radialgradient.js",
    "htmlcanvas/util.js",
]

CK_SRCS = [
    "canvaskit_bindings.cpp",
    ":hdrs",
] + select({
    ":include_embedded_font_true": ["fonts/NotoMono-Regular.ttf.bazel.cpp"],
    ":include_embedded_font_false": [],
}) + select({
    ":enable_fonts_true": [
        "paragraph_bindings.cpp",
        "paragraph_bindings_gen.cpp",
    ],
    ":enable_fonts_false": [],
}) + select({
    ":enable_skottie_true": ["skottie_bindings.cpp"],
    ":enable_skottie_false": [],
}) + select({
    ":enable_particles_true": ["particles_bindings.cpp"],
    ":enable_particles_false": [],
})

cc_binary_with_flags(
    name = "canvaskit.with_flags",
    srcs = CK_SRCS,
    additional_linker_inputs = JS_INTERFACE_FILES + ["externs.js"],
    # wasm_cc_binary makes the canvaskit.js/canvaskit.wasm based on the actual name
    # of the executable.
    linkopts = CK_OPTS,
    local_defines = CK_DEFINES,
    set_flags = {
        "disable_tracing": ["True"],
        "include_decoder": [
            "jpeg_decode_codec",
            "png_decode_codec",
            "webp_decode_codec",
            "gif_decode_codec",
        ],
        "include_encoder": [
            "jpeg_encode_codec",
            "png_encode_codec",
            "webp_encode_codec",
        ],
        # TODO(kjlubick) make this optional, depending on enable_fonts
        "fontmgr_factory": [
            "custom_embedded_fontmgr_factory",
        ],
        "gpu_backend": [
            "gl_backend",
        ],
        "with_gl_standard": [
            "webgl_standard",
        ],
        "use_icu": [
            "True",
        ],
        "enable_sksl_tracing": [
            "True",
        ],
        "shaper_backend": [
            "harfbuzz_shaper",
        ],
    },
    # This target won't build successfully on its own because of missing emscripten
    # headers etc. Therefore, we hide it from wildcards.
    tags = ["manual"],
    deps = [
        "//:skia_core",
    ] + select({
        ":enable_fonts_true": [
            "//modules/skparagraph",
        ],
        ":enable_fonts_false": [],
    }) + select({
        ":enable_skottie_true": [
            "//modules/skottie",
            "//modules/skottie:utils",
        ],
        ":enable_skottie_false": [],
    }) + select({
        ":enable_particles_true": [
            "//modules/particles",
        ],
        ":enable_particles_false": [],
    }),
)

wasm_cc_binary(
    name = "canvaskit_wasm",
    # Whatever is before the dot will be the name of the output js and wasm, aka "the stem".
    # https://github.com/emscripten-core/emsdk/blob/82ad00499a42abde16b363239d2bc83bf5d863ab/bazel/emscripten_toolchain/wasm_cc_binary.bzl#L91
    cc_target = ":canvaskit.with_flags",
)

bool_flag(
    default = True,
    flag_name = "enable_canvas_polyfill",
)

bool_flag(
    default = True,
    flag_name = "enable_fonts",
)

bool_flag(
    default = True,
    flag_name = "include_embedded_font",
)

bool_flag(
    default = True,
    flag_name = "enable_skottie",
)

bool_flag(
    default = True,
    flag_name = "enable_skp_serialization",
)

bool_flag(
    default = True,
    flag_name = "enable_particles",
)

bool_flag(
    default = True,
    flag_name = "enable_runtime_effect",
)

bool_flag(
    default = True,
    flag_name = "include_matrix_js",
)

karma_test(
    name = "canvaskit_js_wasms",
    srcs = [
        ":canvaskit_wasm/canvaskit.js",
        # We want to make sure the CanvasKit JS is loaded before the loader script
        "tests/bazel/canvaskitinit.js",
        "tests/bazel/util.js",
        "tests/bazel/test_reporter.js",
        # which is loaded before the tests...
        "tests/bazel/smoke_test.js",
        "tests/bazel/canvas_test.js",
        "tests/bazel/canvas2d_test.js",
        "tests/bazel/core_test.js",
        "tests/bazel/font_test.js",
        "tests/bazel/matrix_test.js",
        "tests/bazel/paragraph_test.js",
        "tests/bazel/path_test.js",
        "tests/bazel/rtshader_test.js",
        "tests/bazel/skottie_test.js",
    ],
    config_file = "karma.bazel.js",
    # The tests need the Gold server to be up and running so they can make POST requests to
    # exfiltrate the PNGs they create.
    env = "//modules/canvaskit/go/gold_test_env:gold_test_env",
    static_files = [
        ":canvaskit_wasm/canvaskit.wasm",
        "//modules/canvaskit/tests/assets:test_assets",
    ],
)
