# 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("tools/impeller.gni")

config("impeller_public_config") {
  include_dirs = [ ".." ]

  defines = []

  if (impeller_supports_platform) {
    defines += [ "IMPELLER_SUPPORTS_PLATFORM=1" ]
  }

  if (impeller_supports_rendering) {
    defines += [ "IMPELLER_SUPPORTS_RENDERING=1" ]
  }

  if (impeller_enable_metal) {
    defines += [ "IMPELLER_ENABLE_METAL=1" ]
  }

  if (impeller_enable_opengles) {
    defines += [ "IMPELLER_ENABLE_OPENGLES=1" ]
  }

  if (impeller_enable_vulkan) {
    defines += [ "IMPELLER_ENABLE_VULKAN=1" ]
  }

  if (impeller_trace_all_gl_calls) {
    defines += [ "IMPELLER_TRACE_ALL_GL_CALLS" ]
  }

  if (impeller_error_check_all_gl_calls) {
    defines += [ "IMPELLER_ERROR_CHECK_ALL_GL_CALLS" ]
  }

  if (is_win) {
    defines += [
      "_USE_MATH_DEFINES",

      # TODO(dnfield): https://github.com/flutter/flutter/issues/50053
      "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING",
    ]
  }
}

group("impeller") {
  public_deps = [
    "archivist",
    "base",
    "geometry",
    "tessellator",
  ]

  if (impeller_supports_rendering) {
    public_deps += [
      "aiks",
      "display_list",
      "entity",
      "image",
      "renderer",
      "renderer/backend",
      "typographer",
    ]
  }
}

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

  testonly = true

  deps = [
    "archivist:archivist_unittests",
    "base:base_unittests",
    "blobcat:blobcat_unittests",
    "compiler:compiler_unittests",
    "geometry:geometry_unittests",
    "runtime_stage:runtime_stage_unittests",
    "tessellator:tessellator_unittests",
  ]

  if (impeller_supports_rendering) {
    deps += [
      "aiks:aiks_unittests",
      "display_list:display_list_unittests",
      "entity:entity_unittests",
      "fixtures",
      "image:image_unittests",
      "playground",
      "renderer:renderer_unittests",
      "typographer:typographer_unittests",
    ]
  }
}
