# 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",
  ]

if (is_starboard) {
  configs -= [ "//starboard/build/config:size" ]
  configs += [ "//starboard/build/config:speed" ]
} else {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]
}

  deps = [ "//third_party/brotli:dec" ]
  deps += [ "//starboard/common" ]

  public_configs = [ ":woff2_includes" ]

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