# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

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

static_library("ots") {
  sources = [
    "include/opentype-sanitiser.h",
    "include/ots-memory-stream.h",
    "src/cff.cc",
    "src/cff.h",
    "src/cff_type2_charstring.cc",
    "src/cff_type2_charstring.h",
    "src/cmap.cc",
    "src/cmap.h",
    "src/cvt.cc",
    "src/cvt.h",
    "src/feat.cc",
    "src/feat.h",
    "src/fpgm.cc",
    "src/fpgm.h",
    "src/gasp.cc",
    "src/gasp.h",
    "src/gdef.cc",
    "src/gdef.h",
    "src/glat.h",
    "src/gloc.cc",
    "src/gloc.h",
    "src/glyf.cc",
    "src/glyf.h",
    "src/gpos.cc",
    "src/gpos.h",
    "src/graphite.h",
    "src/gsub.cc",
    "src/gsub.h",
    "src/hdmx.cc",
    "src/hdmx.h",
    "src/head.cc",
    "src/head.h",
    "src/hhea.cc",
    "src/hhea.h",
    "src/hmtx.cc",
    "src/hmtx.h",
    "src/kern.cc",
    "src/kern.h",
    "src/layout.cc",
    "src/layout.h",
    "src/loca.cc",
    "src/loca.h",
    "src/ltsh.cc",
    "src/ltsh.h",
    "src/math.cc",
    "src/math_.h",
    "src/maxp.cc",
    "src/maxp.h",
    "src/metrics.cc",
    "src/metrics.h",
    "src/name.cc",
    "src/name.h",
    "src/os2.cc",
    "src/os2.h",
    "src/ots.cc",
    "src/ots.h",
    "src/post.cc",
    "src/post.h",
    "src/prep.cc",
    "src/prep.h",
    "src/sile.cc",
    "src/sile.h",
    "src/silf.h",
    "src/sill.cc",
    "src/sill.h",
    "src/vdmx.cc",
    "src/vdmx.h",
    "src/vhea.cc",
    "src/vhea.h",
    "src/vmtx.cc",
    "src/vmtx.h",
    "src/vorg.cc",
    "src/vorg.h",
  ]

  public_configs = [ ":ots_config" ]

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

  deps = [
    "//starboard/common",
    "//third_party/woff2:woff2_dec",
    "//third_party/brotli:dec",
    "//third_party/zlib",
  ]
}
