# 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",
    ]
    deps = [ "../..:samples" ]
  }

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

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",
  ]
}

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" ]
  }
  if (skia_canvaskit_enable_skottie) {
    deps += [
      "../../modules/skottie:skottie",
      "../../modules/sksg:sksg",
    ]
  }
  if (skia_canvaskit_enable_particles) {
    deps += [ "../../modules/particles:particles" ]
  }
  if (skia_canvaskit_enable_skottie || skia_canvaskit_enable_particles) {
    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_particles) {
    sources += [ "particles_bindings.cpp" ]
  }
  if (skia_canvaskit_enable_skottie || skia_canvaskit_enable_particles) {
    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_enable_gpu) {
    ldflags += [
      "-lGL",
      "--pre-js",
      rebase_path("cpu.js"),
      "--pre-js",
      rebase_path("gpu.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_particles) {
    ldflags += [
      "--pre-js",
      rebase_path("particles.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_HAS_ANDROID_CODEC",
    "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_gpu) {
    defines += [
      "SK_SUPPORT_GPU=1",
      "SK_GL",
      "SK_DISABLE_LEGACY_SHADERCONTEXT",
    ]
  } else {
    defines += [
      "SK_SUPPORT_GPU=0",
      "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 += [ "CANVASKIT_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" ]
  }
}
