# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//flutter/third_party/flatbuffers/flatbuffers.gni")
import("../tools/impeller.gni")

config("shader_archive_config") {
  configs = [ "//flutter/impeller:impeller_public_config" ]
  include_dirs = [ "$root_gen_dir/flutter" ]
}

flatbuffers("shader_archive_flatbuffers") {
  flatbuffers = [
    "shader_archive.fbs",
    "multi_arch_shader_archive.fbs",
  ]
  public_configs = [ ":shader_archive_config" ]
  public_deps = [ "//flutter/third_party/flatbuffers" ]
}

impeller_component("shader_archive") {
  sources = [
    "multi_arch_shader_archive.cc",
    "multi_arch_shader_archive.h",
    "multi_arch_shader_archive_writer.cc",
    "multi_arch_shader_archive_writer.h",
    "shader_archive.cc",
    "shader_archive.h",
    "shader_archive_types.h",
    "shader_archive_writer.cc",
    "shader_archive_writer.h",
  ]

  public_deps = [
    ":shader_archive_flatbuffers",
    "../base",
    "//flutter/fml",
  ]
}

impeller_component("shader_archiver") {
  target_type = "executable"

  sources = [ "shader_archive_main.cc" ]

  deps = [
    ":shader_archive",
    "../base",
    "//flutter/fml",
  ]
}

impeller_component("shader_archive_unittests") {
  testonly = true

  sources = [ "shader_archive_unittests.cc" ]

  deps = [
    ":shader_archive",
    "//flutter/fml",
    "//flutter/testing",
  ]
}
