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