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

config("woff2_includes") {
  include_dirs = [ "include" ]
}

static_library("woff2_dec") {
  sources = [
    "include/woff2/decode.h",
    "include/woff2/encode.h",
    "include/woff2/output.h",
    "src/buffer.h",
    "src/file.h",
    "src/round.h",
    "src/store_bytes.h",
    "src/table_tags.cc",
    "src/table_tags.h",
    "src/variable_length.cc",
    "src/variable_length.h",
    "src/woff2_common.cc",
    "src/woff2_common.h",
    "src/woff2_dec.cc",
    "src/woff2_out.cc",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  deps = [
    "//third_party/brotli:dec",
  ]

  public_configs = [ ":woff2_includes" ]

  # TODO(ksakamoto): http://crbug.com/167187
  if (is_win) {
    cflags = [ "/wd4267" ]  # Conversion from size_t to 'type'.
  }
}
