# Copyright 2018 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

declare_args() {
  skia_enable_skottie = true
}

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

source_set("skottie") {
  if (skia_enable_skottie) {
    public_configs = [ ":public_config" ]
    public = [
      "include/Skottie.h",
    ]
    sources = [
      "src/Skottie.cpp",
      "src/SkottieAdapter.cpp",
      "src/SkottieAdapter.h",
      "src/SkottieAnimator.cpp",
      "src/SkottieAnimator.h",
      "src/SkottieJson.cpp",
      "src/SkottieJson.h",
      "src/SkottieValue.cpp",
      "src/SkottieValue.h",
    ]
    configs += [ "../../:skia_private" ]
    deps = [
      "../..:skia",
      "../../third_party/rapidjson",
      "../sksg:sksg",
    ]
  }
}

source_set("fuzz") {
  if (skia_enable_skottie) {
    testonly = true

    configs += [ "../..:skia_private" ]
    sources = [
      "fuzz/FuzzSkottieJSON.cpp",
    ]

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

    public_deps = [
      ":skottie",
    ]
  }
}
