# 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/common/config.gni")

source_set("base") {
  visibility = [ "//flutter/third_party/accessibility/*" ]
  include_dirs = [ "//flutter/third_party/accessibility" ]

  sources = [
    "auto_reset.h",
    "color_utils.h",
    "compiler_specific.h",
    "container_utils.h",
    "logging.cc",
    "logging.h",
    "macros.h",
    "no_destructor.h",
    "simple_token.cc",
    "simple_token.h",
    "string_utils.cc",
    "string_utils.h",
  ]
  if (is_win) {
    sources += [
      "win/atl.h",
      "win/atl_module.h",
      "win/display.cc",
      "win/display.h",
      "win/enum_variant.cc",
      "win/enum_variant.h",
      "win/scoped_bstr.cc",
      "win/scoped_bstr.h",
      "win/scoped_safearray.h",
      "win/scoped_variant.cc",
      "win/scoped_variant.h",
      "win/variant_util.h",
      "win/variant_vector.cc",
      "win/variant_vector.h",
    ]
    libs = [ "propsys.lib" ]
  }
  if (is_mac) {
    sources += [
      "platform/darwin/scoped_nsobject.h",
      "platform/darwin/scoped_nsobject.mm",
    ]
  }

  public_deps = [
    "numerics",
    "//flutter/fml:string_conversion",
    "//flutter/third_party/accessibility/ax_build",
    "//third_party/dart/runtime/third_party/double-conversion/src:libdouble_conversion",
  ]
}
