# 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" ]
    sources = [ "tests/SGTest.cpp" ]
    deps = [
      ":sksg",
      "../..:skia",
      "../..:test",
    ]
  }

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