# 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_INTEL_ATOMIC_PRIMITIVES",
      "HAVE_OT",
    ]
    deps = [
      "//third_party/icu",
    ]
    public = [
      "$_src/hb-blob.h",
      "$_src/hb-buffer.h",
      "$_src/hb-common.h",
      "$_src/hb-deprecated.h",
      "$_src/hb-face.h",
      "$_src/hb-font.h",
      "$_src/hb-icu.h",
      "$_src/hb-map.h",
      "$_src/hb-ot-font.h",
      "$_src/hb-ot-layout.h",
      "$_src/hb-ot-math.h",
      "$_src/hb-ot-shape.h",
      "$_src/hb-ot-var.h",
      "$_src/hb-ot.h",
      "$_src/hb-set.h",
      "$_src/hb-shape-plan.h",
      "$_src/hb-shape.h",
      "$_src/hb-subset.h",
      "$_src/hb-unicode.h",
      "$_src/hb-version.h",
      "$_src/hb.h",
    ]
    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-common.hh",
      "$_src/hb-aat-layout-feat-table.hh",
      "$_src/hb-aat-layout-just-table.hh",
      "$_src/hb-aat-layout-kerx-table.hh",
      "$_src/hb-aat-layout-lcar-table.hh",
      "$_src/hb-aat-layout-morx-table.hh",
      "$_src/hb-aat-layout-opbd-table.hh",
      "$_src/hb-aat-layout-trak-table.hh",
      "$_src/hb-aat-layout.cc",
      "$_src/hb-aat-layout.hh",
      "$_src/hb-aat-ltag-table.hh",
      "$_src/hb-aat-map.cc",
      "$_src/hb-aat-map.hh",
      "$_src/hb-algs.hh",
      "$_src/hb-array.hh",
      "$_src/hb-atomic.hh",
      "$_src/hb-bimap.hh",
      "$_src/hb-blob.cc",
      "$_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.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-config.hh",
      "$_src/hb-coretext.cc",
      "$_src/hb-debug.hh",
      "$_src/hb-directwrite.cc",
      "$_src/hb-dispatch.hh",
      "$_src/hb-face.cc",
      "$_src/hb-face.hh",
      "$_src/hb-fallback-shape.cc",
      "$_src/hb-font.cc",
      "$_src/hb-font.hh",
      "$_src/hb-ft.cc",
      "$_src/hb-gdi.cc",
      "$_src/hb-glib.cc",
      "$_src/hb-gobject-structs.cc",
      "$_src/hb-graphite2.cc",
      "$_src/hb-icu.cc",
      "$_src/hb-iter.hh",
      "$_src/hb-kern.hh",
      "$_src/hb-machinery.hh",
      "$_src/hb-map.cc",
      "$_src/hb-map.hh",
      "$_src/hb-meta.hh",
      "$_src/hb-mutex.hh",
      "$_src/hb-null.hh",
      "$_src/hb-number-parser.hh",
      "$_src/hb-number.cc",
      "$_src/hb-number.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-cmap-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-color-sbix-table.hh",
      "$_src/hb-ot-color-svg-table.hh",
      "$_src/hb-ot-color.cc",
      "$_src/hb-ot-face-table-list.hh",
      "$_src/hb-ot-face.cc",
      "$_src/hb-ot-face.hh",
      "$_src/hb-ot-font.cc",
      "$_src/hb-ot-gasp-table.hh",
      "$_src/hb-ot-glyf-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-jstf-table.hh",
      "$_src/hb-ot-layout.cc",
      "$_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-maxp-table.hh",
      "$_src/hb-ot-meta-table.hh",
      "$_src/hb-ot-meta.cc",
      "$_src/hb-ot-metrics.cc",
      "$_src/hb-ot-metrics.hh",
      "$_src/hb-ot-name-language-static.hh",
      "$_src/hb-ot-name-language.hh",
      "$_src/hb-ot-name-table.hh",
      "$_src/hb-ot-name.cc",
      "$_src/hb-ot-os2-table.hh",
      "$_src/hb-ot-os2-unicode-ranges.hh",
      "$_src/hb-ot-post-macroman.hh",
      "$_src/hb-ot-post-table.hh",
      "$_src/hb-ot-shape-complex-arabic-fallback.hh",
      "$_src/hb-ot-shape-complex-arabic-table.hh",
      "$_src/hb-ot-shape-complex-arabic-win1256.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.hh",
      "$_src/hb-ot-stat-table.hh",
      "$_src/hb-ot-tag-table.hh",
      "$_src/hb-ot-tag.cc",
      "$_src/hb-ot-var-avar-table.hh",
      "$_src/hb-ot-var-fvar-table.hh",
      "$_src/hb-ot-var-gvar-table.hh",
      "$_src/hb-ot-var-hvar-table.hh",
      "$_src/hb-ot-var-mvar-table.hh",
      "$_src/hb-ot-var.cc",
      "$_src/hb-ot-vorg-table.hh",
      "$_src/hb-pool.hh",
      "$_src/hb-sanitize.hh",
      "$_src/hb-serialize.hh",
      "$_src/hb-set-digest.hh",
      "$_src/hb-set.cc",
      "$_src/hb-set.hh",
      "$_src/hb-shape-plan.cc",
      "$_src/hb-shape-plan.hh",
      "$_src/hb-shape.cc",
      "$_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-cff1.hh",
      "$_src/hb-subset-cff2.cc",
      "$_src/hb-subset-cff2.hh",
      "$_src/hb-subset-input.cc",
      "$_src/hb-subset-input.hh",
      "$_src/hb-subset-plan.cc",
      "$_src/hb-subset-plan.hh",
      "$_src/hb-subset.cc",
      "$_src/hb-subset.hh",
      "$_src/hb-ucd-table.hh",
      "$_src/hb-ucd.cc",
      "$_src/hb-unicode-emoji-table.hh",
      "$_src/hb-unicode.cc",
      "$_src/hb-unicode.hh",
      "$_src/hb-uniscribe.cc",
      "$_src/hb-utf.hh",
      "$_src/hb-vector.hh",
      "$_src/hb.hh",
    ]
  }
}
