# Copyright 2020 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("../../gn/skia.gni")
import("../../gn/toolchain/wasm.gni")
import("canvaskit.gni")

# These targets depend on components that are only declared if
# `skia_enable_tools` is true.
if (skia_enable_tools) {
  component("viewer_wasm") {
    testonly = true
    include_dirs = [ "../.." ]
    sources = [
      "../../modules/svg/src/SkSVGAttribute.cpp",
      "../../modules/svg/src/SkSVGAttributeParser.cpp",
      "../../modules/svg/src/SkSVGCircle.cpp",
      "../../modules/svg/src/SkSVGClipPath.cpp",
      "../../modules/svg/src/SkSVGContainer.cpp",
      "../../modules/svg/src/SkSVGDOM.cpp",
      "../../modules/svg/src/SkSVGEllipse.cpp",
      "../../modules/svg/src/SkSVGFe.cpp",
      "../../modules/svg/src/SkSVGFeColorMatrix.cpp",
      "../../modules/svg/src/SkSVGFeComposite.cpp",
      "../../modules/svg/src/SkSVGFeTurbulence.cpp",
      "../../modules/svg/src/SkSVGFilter.cpp",
      "../../modules/svg/src/SkSVGFilterContext.cpp",
      "../../modules/svg/src/SkSVGGradient.cpp",
      "../../modules/svg/src/SkSVGLine.cpp",
      "../../modules/svg/src/SkSVGLinearGradient.cpp",
      "../../modules/svg/src/SkSVGNode.cpp",
      "../../modules/svg/src/SkSVGPath.cpp",
      "../../modules/svg/src/SkSVGPattern.cpp",
      "../../modules/svg/src/SkSVGPoly.cpp",
      "../../modules/svg/src/SkSVGRadialGradient.cpp",
      "../../modules/svg/src/SkSVGRect.cpp",
      "../../modules/svg/src/SkSVGRenderContext.cpp",
      "../../modules/svg/src/SkSVGSVG.cpp",
      "../../modules/svg/src/SkSVGShape.cpp",
      "../../modules/svg/src/SkSVGStop.cpp",
      "../../modules/svg/src/SkSVGText.cpp",
      "../../modules/svg/src/SkSVGTransformableNode.cpp",
      "../../modules/svg/src/SkSVGUse.cpp",
      "../../modules/svg/src/SkSVGValue.cpp",
      "../../tools/viewer/SKPSlide.cpp",
      "../../tools/viewer/SampleSlide.cpp",
      "../../tools/viewer/SvgSlide.cpp",
    ]
  }

  component("gm_wasm") {
    testonly = true
    include_dirs = [ "../.." ]
    deps = [
      "../..:hash_and_encode",
      "../..:tool_utils",
      "../../modules/svg:svg",
    ]
    defines = [ "SK_GANESH" ]
  }
}

component("debugger") {
  include_dirs = [ "../.." ]
  sources = [
    "../../tools/SkSharingProc.cpp",
    "../../tools/UrlDataManager.cpp",
    "../../tools/debugger/DebugCanvas.cpp",
    "../../tools/debugger/DebugLayerManager.cpp",
    "../../tools/debugger/DrawCommand.cpp",
    "../../tools/debugger/JsonWriteBuffer.cpp",
  ]
  defines = [ "SK_GANESH" ]
}

action("create_notomono_cpp") {
  script = "../../tools/embed_resources.py"

  inputs = [ "fonts/NotoMono-Regular.ttf" ]

  output_path =
      "$root_out_dir/modules/canvaskit/fonts/NotoMono-Regular.ttf.ninja.cpp"

  outputs = [ output_path ]

  args = [
    "--name=SK_EMBEDDED_FONTS",
    "--input",
    rebase_path("fonts/NotoMono-Regular.ttf"),
    "--output",
    rebase_path(output_path),
    "--align=4",
  ]
}

skia_wasm_lib("canvaskit") {
  deps = [ "../..:skia" ]
  if (skia_canvaskit_enable_paragraph) {
    deps += [
      "../../modules/skparagraph:skparagraph",
      "../../modules/skunicode:skunicode",
    ]
  }
  if (skia_canvaskit_enable_skottie) {
    deps += [
      "../../modules/skottie:skottie",
      "../../modules/sksg:sksg",
    ]
  }
  if (skia_canvaskit_enable_skottie) {
    deps += [ "../../modules/skresources:skresources" ]
  }
  if (skia_canvaskit_include_viewer) {
    deps += [ ":viewer_wasm" ]
  }
  if (skia_canvaskit_enable_embedded_font) {
    deps += [ ":create_notomono_cpp" ]
  }

  sources = [
    "WasmCommon.h",
    "canvaskit_bindings.cpp",
  ]
  if (skia_canvaskit_enable_paragraph) {
    sources += [
      "paragraph_bindings.cpp",
      "paragraph_bindings_gen.cpp",
    ]
  }
  if (skia_canvaskit_enable_skottie) {
    sources += [
      "../../modules/skottie/utils/SkottieUtils.cpp",
      "skottie_bindings.cpp",
    ]
  }
  if (skia_canvaskit_enable_skottie) {
    sources += [ "../../modules/skresources/src/SkResources.cpp" ]
  }
  if (skia_canvaskit_include_viewer) {
    sources += [ "viewer_bindings.cpp" ]
    # TODO(kjlubick): remove this
  }
  if (skia_canvaskit_enable_debugger) {
    sources += [ "debugger_bindings.cpp" ]
    deps += [ ":debugger" ]
  }
  if (skia_canvaskit_enable_embedded_font) {
    sources += [
      "$root_out_dir/modules/canvaskit/fonts/NotoMono-Regular.ttf.ninja.cpp",
    ]
  }

  ldflags = []
  if (is_debug) {
    ldflags += [
      "-O0",
      "-sDEMANGLE_SUPPORT=1",
      "-sASSERTIONS=1",
      "-sGL_ASSERTIONS=1",
      "-g3",
      "--source-map-base",
      "/node_modules/canvaskit/bin/",
      "--pre-js",
      rebase_path("debug.js"),
    ]
  } else {
    externs_path = rebase_path("externs.js")
    ldflags += [
      "-Oz",
      "--closure=1",
      "--pre-js",
      rebase_path("release.js"),
      "--closure-args=--externs=$externs_path",
    ]
  }
  if (skia_canvaskit_profile_build) {
    ldflags += [
      "--profiling-funcs",
      "--closure=0",
    ]
  }
  ldflags += [ "-fno-rtti" ]

  if (skia_canvaskit_enable_webgpu) {
    ldflags += [
      "--pre-js",
      rebase_path("cpu.js"),
      "--pre-js",
      rebase_path("webgpu.js"),
      "-sUSE_WEBGL2=0",
      "-sUSE_WEBGPU=1",
      "-sASYNCIFY",

      # Modules from html5_webgpu for JS<->WASM interop
      "-sEXPORTED_RUNTIME_METHODS=WebGPU,JsValStore",

      # TODO(skia:13429): The closure compiler doesn't play well with optimized builds and ASYNCIFY.
      "--closure=0",
    ]
  } else if (skia_canvaskit_enable_webgl) {
    ldflags += [
      "-lGL",
      "--pre-js",
      rebase_path("cpu.js"),
      "--pre-js",
      rebase_path("webgl.js"),
      "-sUSE_WEBGL2=1",
      "-sMAX_WEBGL_VERSION=2",
    ]
  } else {
    ldflags += [
      "--pre-js",
      rebase_path("cpu.js"),
      "-sUSE_WEBGL2=0",
    ]
  }

  ldflags += [
    "-std=c++17",
    "--bind",
    "--no-entry",
    "--pre-js",
    rebase_path("preamble.js"),
    "--pre-js",
    rebase_path("color.js"),
    "--pre-js",
    rebase_path("memory.js"),
    "--pre-js",
    rebase_path("util.js"),
    "--pre-js",
    rebase_path("interface.js"),
  ]

  if (skia_canvaskit_enable_matrix_helper) {
    ldflags += [
      "--pre-js",
      rebase_path("matrix.js"),
    ]
  }

  ldflags += [
    "--pre-js",
    rebase_path("paragraph.js"),
  ]

  if (skia_canvaskit_enable_skottie) {
    ldflags += [
      "--pre-js",
      rebase_path("skottie.js"),
    ]
  }

  if (skia_canvaskit_enable_pathops) {
    ldflags += [
      "--pre-js",
      rebase_path("pathops.js"),
    ]
  }

  if (skia_canvaskit_enable_font) {
    ldflags += [
      "--pre-js",
      rebase_path("font.js"),
    ]
  }

  if (skia_canvaskit_enable_skp_serialization) {
    ldflags += [
      "--pre-js",
      rebase_path("skp.js"),
    ]
  }

  if (skia_canvaskit_enable_rt_shader) {
    ldflags += [
      "--pre-js",
      rebase_path("rt_shader.js"),
    ]
  }

  if (skia_canvaskit_enable_debugger) {
    ldflags += [
      "--pre-js",
      rebase_path("debugger.js"),
    ]
  }

  if (skia_canvaskit_enable_canvas_bindings) {
    ldflags += [
      "--pre-js",
      rebase_path("htmlcanvas/preamble.js"),
      "--pre-js",
      rebase_path("htmlcanvas/util.js"),
      "--pre-js",
      rebase_path("htmlcanvas/color.js"),
      "--pre-js",
      rebase_path("htmlcanvas/font.js"),
      "--pre-js",
      rebase_path("htmlcanvas/canvas2dcontext.js"),
      "--pre-js",
      rebase_path("htmlcanvas/htmlcanvas.js"),
      "--pre-js",
      rebase_path("htmlcanvas/htmlimage.js"),
      "--pre-js",
      rebase_path("htmlcanvas/imagedata.js"),
      "--pre-js",
      rebase_path("htmlcanvas/lineargradient.js"),
      "--pre-js",
      rebase_path("htmlcanvas/path2d.js"),
      "--pre-js",
      rebase_path("htmlcanvas/pattern.js"),
      "--pre-js",
      rebase_path("htmlcanvas/radialgradient.js"),
      "--pre-js",
      rebase_path("htmlcanvas/postamble.js"),
    ]
  }

  ldflags += [
    "--pre-js",
    rebase_path("postamble.js"),
    "-sLLD_REPORT_UNDEFINED",
    "-sALLOW_MEMORY_GROWTH",
    "-sUSE_PTHREADS=0",
    "-sDISABLE_EXCEPTION_CATCHING",
    "-sNODEJS_CATCH_EXIT=0",
    "-sDYNAMIC_EXECUTION=0",
    "-sEXPORT_NAME=CanvasKitInit",
    "-sEXPORTED_FUNCTIONS=[_malloc,_free]",
    "-sFORCE_FILESYSTEM=0",
    "-sFILESYSTEM=0",
    "-sMODULARIZE",
    "-sNO_EXIT_RUNTIME=1",
    "-sINITIAL_MEMORY=128MB",
    "-sWASM",
    "-sSTRICT=1",
  ]

  defines = []
  if (is_debug) {
    defines += [ "SK_DEBUG" ]
  } else {
    defines += [ "SK_RELEASE" ]
  }
  if (!is_debug && !skia_canvaskit_force_tracing) {
    defines += [ "SK_DISABLE_TRACING" ]
  }
  defines += [
    "SK_DISABLE_AAA",
    "SK_FORCE_8_BYTE_ALIGNMENT",
    "EMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0",
    "SK_SHAPER_HARFBUZZ_AVAILABLE",
  ]
  if (skia_canvaskit_enable_paragraph) {
    defines += [ "CK_INCLUDE_PARAGRAPH" ]
  }
  if (skia_canvaskit_enable_skp_serialization) {
    defines += [ "CK_SERIALIZE_SKP" ]
  }
  if (skia_enable_ganesh) {
    defines += [
      "SK_GANESH",
      "SK_DISABLE_LEGACY_SHADERCONTEXT",
    ]
    if (skia_canvaskit_enable_webgl) {
      defines += [
        "SK_GL",
        "CK_ENABLE_WEBGL",
      ]
    }
    if (skia_canvaskit_enable_webgpu) {
      defines += [
        "SK_DAWN",
        "CK_ENABLE_WEBGPU",
      ]
    }
  } else {
    defines += [ "SK_ENABLE_SKSL" ]
  }

  if (skia_canvaskit_enable_pathops) {
    defines += [ "CK_INCLUDE_PATHOPS" ]
  }
  if (skia_canvaskit_enable_rt_shader) {
    defines += [ "CK_INCLUDE_RUNTIME_EFFECT" ]
  }
  if (!skia_canvaskit_enable_alias_font) {
    defines += [ "CK_NO_ALIAS_FONT" ]
  }
  if (skia_canvaskit_legacy_draw_vertices_blend_mode) {
    # https://github.com/flutter/flutter/issues/98531
    defines += [ "SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER" ]
  }
  if (!skia_canvaskit_enable_font) {
    defines += [ "CK_NO_FONTS" ]
  }
  if (skia_enable_sksl_tracing) {
    defines += [ "SKSL_ENABLE_TRACING" ]
  }
}
