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

if (skia_enable_skottie) {
  config("public_config") {
    defines = [ "SK_ENABLE_SKOTTIE" ]
    include_dirs = [ "include" ]
  }

  skia_component("skottie") {
    check_includes = false
    import("skottie.gni")
    public_configs = [ ":public_config" ]
    public = skia_skottie_public
    sources = skia_skottie_sources
    configs = [ "../../:skia_private" ]
    deps = [
      "../..:skia",
      "../skresources",
      "../sksg",
      "../skshaper",
      "../skunicode",
    ]
  }

  if (defined(is_skia_standalone)) {
    config("utils_config") {
      include_dirs = [ "utils" ]
    }
    skia_source_set("utils") {
      check_includes = false
      testonly = true

      public_configs = [ ":utils_config" ]
      configs = [ "../../:skia_private" ]

      sources = [ "utils/SkottieUtils.cpp" ]
      deps = [
        ":skottie",
        "../..:skia",
      ]
    }

    if (skia_enable_tools) {
      skia_source_set("tests") {
        testonly = true

        configs = [
          "../..:skia_private",
          "../..:tests_config",
        ]
        sources = [
          "src/SkottieTest.cpp",
          "tests/AudioLayer.cpp",
          "tests/Expression.cpp",
          "tests/Image.cpp",
          "tests/Keyframe.cpp",
          "tests/Text.cpp",
        ]

        deps = [
          ":skottie",
          "../..:skia",
          "../..:test",
          "../skshaper",
        ]
      }

      skia_source_set("fuzz") {
        check_includes = false
        testonly = true

        configs = [ "../..:skia_private" ]
        include_dirs = [
          "../../tools",
          "../../tools/flags",
          "../../tools/fonts",
        ]
        sources = [
          "../../tools/Resources.cpp",
          "../../tools/fonts/TestFontMgr.cpp",
          "../../tools/fonts/TestSVGTypeface.cpp",
          "../../tools/fonts/TestTypeface.cpp",
          "fuzz/FuzzSkottieJSON.cpp",
        ]

        deps = [
          "../..:skia",
          "../svg",
        ]

        public_deps = [ ":skottie" ]
      }

      skia_source_set("tool") {
        check_includes = false
        testonly = true

        configs = [ "../..:skia_private" ]
        sources = [ "src/SkottieTool.cpp" ]

        deps = [
          "../..:flags",
          "../..:gpu_tool_utils",
          "../..:skia",
          "../../experimental/ffmpeg:video_encoder",
        ]

        public_deps = [
          ":skottie",
          ":utils",
        ]
      }

      # A couple of backend specific targets, to facilitate binary size experiments.
      skia_source_set("tool_cpu") {
        check_includes = false
        testonly = true

        configs = [ "../..:skia_private" ]
        sources = [ "src/SkottieTool.cpp" ]
        defines = [ "CPU_ONLY" ]

        deps = [
          "../..:flags",
          "../..:gpu_tool_utils",
          "../..:skia",
          "../../experimental/ffmpeg:video_encoder",
        ]

        public_deps = [
          ":skottie",
          ":utils",
        ]
      }

      skia_source_set("tool_gpu") {
        check_includes = false
        testonly = true

        configs = [ "../..:skia_private" ]
        sources = [ "src/SkottieTool.cpp" ]
        defines = [ "GPU_ONLY" ]

        deps = [
          "../..:flags",
          "../..:gpu_tool_utils",
          "../..:skia",
          "../../experimental/ffmpeg:video_encoder",
        ]

        public_deps = [
          ":skottie",
          ":utils",
        ]
      }

      skia_source_set("gm") {
        check_includes = false
        testonly = true

        # would be nice to have a gm_config
        include_dirs = [ "../../gm" ]

        configs = [ "../..:skia_private" ]
        sources = [
          "gm/ExternalProperties.cpp",
          "gm/SkottieGM.cpp",
        ]

        deps = [
          ":skottie",
          ":utils",
          "../..:gpu_tool_utils",
          "../..:skia",
          "../..:tool_utils",
        ]
      }
    }
  }
} else {
  group("skottie") {
  }
  group("fuzz") {
  }
  group("gm") {
  }
  group("tests") {
  }
  group("utils") {
  }
}