# 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/impeller/tools/impeller.gni")
import("//flutter/shell/version/version.gni")
import("//flutter/third_party/flatbuffers/flatbuffers.gni")

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

flatbuffers("importer_flatbuffers") {
  flatbuffers = [ "scene.fbs" ]
  public_configs = [ ":runtime_stage_config" ]
  public_deps = [ "//flutter/third_party/flatbuffers" ]
}

impeller_component("conversions") {
  sources = [
    "conversions.cc",
    "conversions.h",
  ]

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

impeller_component("importer_lib") {
  # Current versions of libcxx have deprecated some of the UTF-16 string
  # conversion APIs.
  defines = [ "_LIBCPP_DISABLE_DEPRECATION_WARNINGS" ]

  sources = [
    "importer.h",
    "importer_gltf.cc",
    "switches.cc",
    "switches.h",
    "types.h",
    "vertices_builder.cc",
    "vertices_builder.h",
  ]

  public_deps = [
    ":conversions",
    ":importer_flatbuffers",
    "../../base",
    "../../compiler:utilities",
    "../../geometry",
    "//flutter/fml",

    # All third_party deps must be reflected below in the scenec_license
    # target.
    "//third_party/tinygltf",
  ]
}

generated_file("scenec_license") {
  source_path = rebase_path(".", "//flutter")
  git_url = "https://github.com/flutter/engine/tree/$engine_version"
  outputs = [ "$target_gen_dir/LICENSE.scenec.md" ]
  contents = [
    "# scenec",
    "",
    "This tool is used by the Flutter SDK to import 3D geometry.",
    "",
    "Source code for this tool: [flutter/engine/$source_path]($git_url/$source_path).",
    "",
    "## Licenses",
    "",
    "### scenec",
    "",
    read_file("//flutter/sky/packages/sky_engine/LICENSE", "string"),
    "",

    # These licenses are ignored by the main license checker, since they are not
    # shipped to end-application binaries and only shipped as part of developer
    # tooling in scenec. Add them here.
    "## Additional open source licenses",
    "",
    "### tinygltf",
    "",
    read_file("//third_party/tinygltf/LICENSE", "string"),
  ]
}

group("importer") {
  deps = [
    ":scenec",
    ":scenec_license",
  ]
}

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

  sources = [ "scenec_main.cc" ]

  deps = [ ":importer_lib" ]

  metadata = {
    entitlement_file_path = [ "scenec" ]
  }
}

impeller_component("importer_unittests") {
  testonly = true

  output_name = "scenec_unittests"

  sources = [ "importer_unittests.cc" ]

  deps = [
    ":importer_lib",
    "../../fixtures",
    "../../geometry:geometry_asserts",
    "//flutter/testing:testing_lib",
  ]
}
