# Copyright 2018 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")

config("public_config") {
  include_dirs = [ "include" ]
}

skia_component("sksg") {
  check_includes = false
  import("sksg.gni")
  public_configs = [ ":public_config" ]
  sources = skia_sksg_sources
  configs = [ "../../:skia_private" ]
  deps = [ "../..:skia" ]
}

if (defined(is_skia_standalone) && skia_enable_tools) {
  skia_source_set("tests") {
    testonly = true

    configs = [ "../..:skia_private" ]
    sources = [ "tests/SGTest.cpp" ]
    deps = [
      ":sksg",
      "../..:skia",
      "../..:test",
    ]
  }

  skia_source_set("slides") {
    if (target_cpu != "wasm") {  # TODO: clean up wasm test
      testonly = true

      configs = [
        "../..:skia_private",
        "../..:slides_config",  # TODO: refactor to make this nicer
      ]
      sources = [ "slides/SVGPongSlide.cpp" ]
      deps = [
        ":sksg",
        "../..:skia",
        "../..:slides",
      ]
    }
  }
}
