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

declare_args() {
}

import("../../gn/skia.gni")
import("../third_party.gni")

if (skia_use_icu) {
  third_party("sfntly") {
    _src = "../externals/sfntly/cpp/src"
    public_include_dirs = [ _src ]
    defines = [ "SFNTLY_NO_EXCEPTION" ]
    public_deps = [ "//third_party/icu" ]
    deps = []
    if (is_win) {
      defines += [ "WIN32" ]
    }
    sources = [
      "$_src/sample/chromium/font_subsetter.cc",
      "$_src/sample/chromium/subsetter_impl.cc",
      "$_src/sfntly/data/byte_array.cc",
      "$_src/sfntly/data/font_data.cc",
      "$_src/sfntly/data/font_input_stream.cc",
      "$_src/sfntly/data/font_output_stream.cc",
      "$_src/sfntly/data/growable_memory_byte_array.cc",
      "$_src/sfntly/data/memory_byte_array.cc",
      "$_src/sfntly/data/readable_font_data.cc",
      "$_src/sfntly/data/writable_font_data.cc",
      "$_src/sfntly/font.cc",
      "$_src/sfntly/font_factory.cc",
      "$_src/sfntly/port/file_input_stream.cc",
      "$_src/sfntly/port/lock.cc",
      "$_src/sfntly/port/memory_input_stream.cc",
      "$_src/sfntly/port/memory_output_stream.cc",
      "$_src/sfntly/table/bitmap/big_glyph_metrics.cc",
      "$_src/sfntly/table/bitmap/bitmap_glyph.cc",
      "$_src/sfntly/table/bitmap/bitmap_glyph_info.cc",
      "$_src/sfntly/table/bitmap/bitmap_size_table.cc",
      "$_src/sfntly/table/bitmap/composite_bitmap_glyph.cc",
      "$_src/sfntly/table/bitmap/ebdt_table.cc",
      "$_src/sfntly/table/bitmap/eblc_table.cc",
      "$_src/sfntly/table/bitmap/ebsc_table.cc",
      "$_src/sfntly/table/bitmap/glyph_metrics.cc",
      "$_src/sfntly/table/bitmap/index_sub_table.cc",
      "$_src/sfntly/table/bitmap/index_sub_table_format1.cc",
      "$_src/sfntly/table/bitmap/index_sub_table_format2.cc",
      "$_src/sfntly/table/bitmap/index_sub_table_format3.cc",
      "$_src/sfntly/table/bitmap/index_sub_table_format4.cc",
      "$_src/sfntly/table/bitmap/index_sub_table_format5.cc",
      "$_src/sfntly/table/bitmap/simple_bitmap_glyph.cc",
      "$_src/sfntly/table/bitmap/small_glyph_metrics.cc",
      "$_src/sfntly/table/byte_array_table_builder.cc",
      "$_src/sfntly/table/core/cmap_table.cc",
      "$_src/sfntly/table/core/font_header_table.cc",
      "$_src/sfntly/table/core/horizontal_device_metrics_table.cc",
      "$_src/sfntly/table/core/horizontal_header_table.cc",
      "$_src/sfntly/table/core/horizontal_metrics_table.cc",
      "$_src/sfntly/table/core/maximum_profile_table.cc",
      "$_src/sfntly/table/core/name_table.cc",
      "$_src/sfntly/table/core/os2_table.cc",
      "$_src/sfntly/table/font_data_table.cc",
      "$_src/sfntly/table/generic_table_builder.cc",
      "$_src/sfntly/table/header.cc",
      "$_src/sfntly/table/subtable.cc",
      "$_src/sfntly/table/table.cc",
      "$_src/sfntly/table/table_based_table_builder.cc",
      "$_src/sfntly/table/truetype/glyph_table.cc",
      "$_src/sfntly/table/truetype/loca_table.cc",
      "$_src/sfntly/tag.cc",
      "$_src/sfntly/tools/subsetter/glyph_table_subsetter.cc",
      "$_src/sfntly/tools/subsetter/subsetter.cc",
      "$_src/sfntly/tools/subsetter/table_subsetter_impl.cc",
    ]
  }
}
