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

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

declare_args() {
  skia_use_system_harfbuzz = is_official_build
}

if (skia_use_system_harfbuzz) {
  system("harfbuzz") {
    include_dirs = [ "/usr/include/harfbuzz" ]
    libs = [ "harfbuzz" ]
  }
} else {
  third_party("harfbuzz") {
    _src = "../externals/harfbuzz/src"
    public_include_dirs = [
      ".",
      _src,
    ]
    defines = [
      "HAVE_ICU",
      "HAVE_ICU_BUILTIN",
      "HAVE_OT",
    ]
    deps = [
      "//third_party/icu",
    ]
    sources = [
      "$_src/hb-aat-fdsc-table.hh",
      "$_src/hb-aat-layout-ankr-table.hh",
      "$_src/hb-aat-layout-bsln-table.hh",
      "$_src/hb-aat-layout-feat-table.hh",
      "$_src/hb-aat-layout-kerx-table.hh",
      "$_src/hb-aat-layout-morx-table.hh",
      "$_src/hb-aat-layout-trak-table.hh",
      "$_src/hb-aat-layout.cc",
      "$_src/hb-aat-ltag-table.hh",
      "$_src/hb-aat-map.cc",
      "$_src/hb-aat-map.hh",
      "$_src/hb-array.hh",
      "$_src/hb-atomic.hh",
      "$_src/hb-blob.cc",
      "$_src/hb-blob.h",
      "$_src/hb-blob.hh",
      "$_src/hb-buffer-deserialize-json.hh",
      "$_src/hb-buffer-deserialize-text.hh",
      "$_src/hb-buffer-serialize.cc",
      "$_src/hb-buffer.cc",
      "$_src/hb-buffer.h",
      "$_src/hb-buffer.hh",
      "$_src/hb-cache.hh",
      "$_src/hb-cff-interp-common.hh",
      "$_src/hb-cff-interp-cs-common.hh",
      "$_src/hb-cff-interp-dict-common.hh",
      "$_src/hb-cff1-interp-cs.hh",
      "$_src/hb-cff2-interp-cs.hh",
      "$_src/hb-common.cc",
      "$_src/hb-common.h",
      "$_src/hb-debug.hh",
      "$_src/hb-deprecated.h",
      "$_src/hb-dsalgs.hh",
      "$_src/hb-face.cc",
      "$_src/hb-face.h",
      "$_src/hb-face.hh",
      "$_src/hb-font.cc",
      "$_src/hb-font.h",
      "$_src/hb-font.hh",
      "$_src/hb-icu.cc",
      "$_src/hb-icu.h",
      "$_src/hb-map.cc",
      "$_src/hb-mutex.hh",
      "$_src/hb-object.hh",
      "$_src/hb-open-file.hh",
      "$_src/hb-open-type.hh",
      "$_src/hb-ot-cff-common.hh",
      "$_src/hb-ot-cff1-table.cc",
      "$_src/hb-ot-cff1-table.hh",
      "$_src/hb-ot-cff2-table.cc",
      "$_src/hb-ot-cff2-table.hh",
      "$_src/hb-ot-color-cbdt-table.hh",
      "$_src/hb-ot-color-colr-table.hh",
      "$_src/hb-ot-color-cpal-table.hh",
      "$_src/hb-ot-deprecated.h",
      "$_src/hb-ot-face.cc",
      "$_src/hb-ot-face.hh",
      "$_src/hb-ot-font.cc",
      "$_src/hb-ot-font.h",
      "$_src/hb-ot-gasp-table.hh",
      "$_src/hb-ot-hdmx-table.hh",
      "$_src/hb-ot-head-table.hh",
      "$_src/hb-ot-hhea-table.hh",
      "$_src/hb-ot-hmtx-table.hh",
      "$_src/hb-ot-kern-table.hh",
      "$_src/hb-ot-layout-base-table.hh",
      "$_src/hb-ot-layout-common.hh",
      "$_src/hb-ot-layout-gdef-table.hh",
      "$_src/hb-ot-layout-gpos-table.hh",
      "$_src/hb-ot-layout-gsub-table.hh",
      "$_src/hb-ot-layout-gsubgpos.hh",
      "$_src/hb-ot-layout.cc",
      "$_src/hb-ot-layout.h",
      "$_src/hb-ot-layout.hh",
      "$_src/hb-ot-map.cc",
      "$_src/hb-ot-map.hh",
      "$_src/hb-ot-math-table.hh",
      "$_src/hb-ot-math.cc",
      "$_src/hb-ot-math.h",
      "$_src/hb-ot-maxp-table.hh",
      "$_src/hb-ot-name-language.cc",
      "$_src/hb-ot-name-language.hh",
      "$_src/hb-ot-name-table.hh",
      "$_src/hb-ot-name.cc",
      "$_src/hb-ot-os2-unicode-ranges.hh",
      "$_src/hb-ot-post-macroman.hh",
      "$_src/hb-ot-shape-complex-arabic-fallback.hh",
      "$_src/hb-ot-shape-complex-arabic-table.hh",
      "$_src/hb-ot-shape-complex-arabic.cc",
      "$_src/hb-ot-shape-complex-arabic.hh",
      "$_src/hb-ot-shape-complex-default.cc",
      "$_src/hb-ot-shape-complex-hangul.cc",
      "$_src/hb-ot-shape-complex-hebrew.cc",
      "$_src/hb-ot-shape-complex-indic-machine.hh",
      "$_src/hb-ot-shape-complex-indic-table.cc",
      "$_src/hb-ot-shape-complex-indic.cc",
      "$_src/hb-ot-shape-complex-indic.hh",
      "$_src/hb-ot-shape-complex-khmer-machine.hh",
      "$_src/hb-ot-shape-complex-khmer.cc",
      "$_src/hb-ot-shape-complex-khmer.hh",
      "$_src/hb-ot-shape-complex-myanmar-machine.hh",
      "$_src/hb-ot-shape-complex-myanmar.cc",
      "$_src/hb-ot-shape-complex-myanmar.hh",
      "$_src/hb-ot-shape-complex-thai.cc",
      "$_src/hb-ot-shape-complex-use-machine.hh",
      "$_src/hb-ot-shape-complex-use-table.cc",
      "$_src/hb-ot-shape-complex-use.cc",
      "$_src/hb-ot-shape-complex-use.hh",
      "$_src/hb-ot-shape-complex-vowel-constraints.cc",
      "$_src/hb-ot-shape-complex-vowel-constraints.hh",
      "$_src/hb-ot-shape-complex.hh",
      "$_src/hb-ot-shape-fallback.cc",
      "$_src/hb-ot-shape-fallback.hh",
      "$_src/hb-ot-shape-normalize.cc",
      "$_src/hb-ot-shape-normalize.hh",
      "$_src/hb-ot-shape.cc",
      "$_src/hb-ot-shape.h",
      "$_src/hb-ot-shape.hh",
      "$_src/hb-ot-tag.cc",
      "$_src/hb-ot-var-avar-table.hh",
      "$_src/hb-ot-var-fvar-table.hh",
      "$_src/hb-ot-var-hvar-table.hh",
      "$_src/hb-ot-var-mvar-table.hh",
      "$_src/hb-ot-var.cc",
      "$_src/hb-ot-var.h",
      "$_src/hb-ot.h",
      "$_src/hb-set-digest.hh",
      "$_src/hb-set.cc",
      "$_src/hb-set.h",
      "$_src/hb-set.hh",
      "$_src/hb-shape-plan.cc",
      "$_src/hb-shape-plan.h",
      "$_src/hb-shape-plan.hh",
      "$_src/hb-shape.cc",
      "$_src/hb-shape.h",
      "$_src/hb-shaper-impl.hh",
      "$_src/hb-shaper-list.hh",
      "$_src/hb-shaper.cc",
      "$_src/hb-shaper.hh",
      "$_src/hb-static.cc",
      "$_src/hb-string-array.hh",
      "$_src/hb-subset-cff-common.cc",
      "$_src/hb-subset-cff-common.hh",
      "$_src/hb-subset-cff1.cc",
      "$_src/hb-subset-cff2.cc",
      "$_src/hb-subset-glyf.cc",
      "$_src/hb-subset-glyf.hh",
      "$_src/hb-subset-input.cc",
      "$_src/hb-subset-plan.cc",
      "$_src/hb-subset-plan.hh",
      "$_src/hb-subset.cc",
      "$_src/hb-subset.h",
      "$_src/hb-subset.hh",
      "$_src/hb-unicode-emoji-table.hh",
      "$_src/hb-unicode.cc",
      "$_src/hb-unicode.h",
      "$_src/hb-unicode.hh",
      "$_src/hb-utf.hh",
      "$_src/hb-version.h",
      "$_src/hb-warning.cc",
      "$_src/hb.h",
      "$_src/hb.hh",
    ]
  }
}
