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

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) {
  source_set("tests") {
    testonly = true

    configs += [
      "../..:skia_private",
      "../..:tests_config",  # TODO: refactor to make this nicer
    ]
    sources = [
      "tests/SGTest.cpp",
    ]
    deps = [
      ":sksg",
      "../..:gpu_tool_utils",  # TODO: refactor to make this nicer
      "../..:skia",
    ]
  }

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

      configs += [
        "../..:skia_private",
        "../..:samples_config",  # TODO: refactor to make this nicer
      ]
      sources = [
        "samples/SampleSVGPong.cpp",
      ]
      deps = [
        ":sksg",
        "../..:samples",
        "../..:skia",
      ]
    }
  }
}
