# Copyright 2014 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.

import("//build/config/chrome_build.gni")
import("//build/config/features.gni")
import("//build/config/freetype/freetype.gni")
import("//build/config/ui.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/harfbuzz-ng/harfbuzz.gni")

if (use_system_harfbuzz) {
  import("//build/config/linux/pkg_config.gni")
  pkg_config("harfbuzz_from_pkgconfig") {
    visibility = [
      "//third_party:freetype_harfbuzz",
      "//third_party/freetype:freetype_source",
    ]
    packages = [ "harfbuzz" ]
  }
} else {
  config("harfbuzz_config") {
    include_dirs = [ "src/src" ]
  }

  config("harfbuzz_warnings") {
    if (is_win) {
      # Result of 32-bit shift implicitly converted to 64 bits.
      cflags = [ "/wd4334" ]
    }
  }

  source_set("harfbuzz_source") {
    visibility = [ "//third_party:freetype_harfbuzz" ]

    public = [
      "src/src/hb-blob.h",
      "src/src/hb-buffer.h",
      "src/src/hb-common.h",
      "src/src/hb-deprecated.h",
      "src/src/hb-face.h",
      "src/src/hb-font.h",
      "src/src/hb-ft.h",
      "src/src/hb-icu.h",
      "src/src/hb-map.h",
      "src/src/hb-ot-font.h",
      "src/src/hb-ot-layout.h",
      "src/src/hb-ot-math.h",
      "src/src/hb-ot-shape.h",
      "src/src/hb-ot-var.h",
      "src/src/hb-ot.h",
      "src/src/hb-set.h",
      "src/src/hb-shape-plan.h",
      "src/src/hb-shape.h",
      "src/src/hb-subset.h",
      "src/src/hb-unicode.h",
      "src/src/hb-version.h",
      "src/src/hb.h",
    ]

    sources = [
      "src/src/hb-aat-fdsc-table.hh",
      "src/src/hb-aat-layout-ankr-table.hh",
      "src/src/hb-aat-layout-bsln-table.hh",
      "src/src/hb-aat-layout-feat-table.hh",
      "src/src/hb-aat-layout-kerx-table.hh",
      "src/src/hb-aat-layout-morx-table.hh",
      "src/src/hb-aat-layout-trak-table.hh",
      "src/src/hb-aat-layout.cc",
      "src/src/hb-aat-ltag-table.hh",
      "src/src/hb-aat-map.cc",
      "src/src/hb-aat-map.hh",
      "src/src/hb-algs.hh",
      "src/src/hb-array.hh",
      "src/src/hb-atomic.hh",
      "src/src/hb-blob.cc",
      "src/src/hb-blob.hh",
      "src/src/hb-buffer-deserialize-json.hh",
      "src/src/hb-buffer-deserialize-text.hh",
      "src/src/hb-buffer-serialize.cc",
      "src/src/hb-buffer.cc",
      "src/src/hb-buffer.hh",
      "src/src/hb-cache.hh",
      "src/src/hb-cff-interp-common.hh",
      "src/src/hb-cff-interp-cs-common.hh",
      "src/src/hb-cff-interp-dict-common.hh",
      "src/src/hb-cff1-interp-cs.hh",
      "src/src/hb-cff2-interp-cs.hh",
      "src/src/hb-common.cc",
      "src/src/hb-config.hh",
      "src/src/hb-debug.hh",
      "src/src/hb-dispatch.hh",
      "src/src/hb-face.cc",
      "src/src/hb-face.hh",
      "src/src/hb-font.cc",
      "src/src/hb-font.hh",
      "src/src/hb-ft.cc",
      "src/src/hb-icu.cc",
      "src/src/hb-map.cc",
      "src/src/hb-map.hh",
      "src/src/hb-meta.hh",
      "src/src/hb-mutex.hh",
      "src/src/hb-object.hh",
      "src/src/hb-open-file.hh",
      "src/src/hb-open-type.hh",
      "src/src/hb-ot-cff-common.hh",
      "src/src/hb-ot-cff1-table.cc",
      "src/src/hb-ot-cff1-table.hh",
      "src/src/hb-ot-cff2-table.cc",
      "src/src/hb-ot-cff2-table.hh",
      "src/src/hb-ot-color-cbdt-table.hh",
      "src/src/hb-ot-color-colr-table.hh",
      "src/src/hb-ot-color-cpal-table.hh",
      "src/src/hb-ot-face.cc",
      "src/src/hb-ot-face.hh",
      "src/src/hb-ot-font.cc",
      "src/src/hb-ot-gasp-table.hh",
      "src/src/hb-ot-hdmx-table.hh",
      "src/src/hb-ot-head-table.hh",
      "src/src/hb-ot-hhea-table.hh",
      "src/src/hb-ot-hmtx-table.hh",
      "src/src/hb-ot-kern-table.hh",
      "src/src/hb-ot-layout-base-table.hh",
      "src/src/hb-ot-layout-common.hh",
      "src/src/hb-ot-layout-gdef-table.hh",
      "src/src/hb-ot-layout-gpos-table.hh",
      "src/src/hb-ot-layout-gsub-table.hh",
      "src/src/hb-ot-layout-gsubgpos.hh",
      "src/src/hb-ot-layout.cc",
      "src/src/hb-ot-layout.hh",
      "src/src/hb-ot-map.cc",
      "src/src/hb-ot-map.hh",
      "src/src/hb-ot-math-table.hh",
      "src/src/hb-ot-math.cc",
      "src/src/hb-ot-maxp-table.hh",
      "src/src/hb-ot-name-language-static.hh",
      "src/src/hb-ot-name-language.hh",
      "src/src/hb-ot-name-table.hh",
      "src/src/hb-ot-name.cc",
      "src/src/hb-ot-os2-unicode-ranges.hh",
      "src/src/hb-ot-post-macroman.hh",
      "src/src/hb-ot-shape-complex-arabic-fallback.hh",
      "src/src/hb-ot-shape-complex-arabic-table.hh",
      "src/src/hb-ot-shape-complex-arabic.cc",
      "src/src/hb-ot-shape-complex-arabic.hh",
      "src/src/hb-ot-shape-complex-default.cc",
      "src/src/hb-ot-shape-complex-hangul.cc",
      "src/src/hb-ot-shape-complex-hebrew.cc",
      "src/src/hb-ot-shape-complex-indic-machine.hh",
      "src/src/hb-ot-shape-complex-indic-table.cc",
      "src/src/hb-ot-shape-complex-indic.cc",
      "src/src/hb-ot-shape-complex-indic.hh",
      "src/src/hb-ot-shape-complex-khmer-machine.hh",
      "src/src/hb-ot-shape-complex-khmer.cc",
      "src/src/hb-ot-shape-complex-khmer.hh",
      "src/src/hb-ot-shape-complex-myanmar-machine.hh",
      "src/src/hb-ot-shape-complex-myanmar.cc",
      "src/src/hb-ot-shape-complex-myanmar.hh",
      "src/src/hb-ot-shape-complex-thai.cc",
      "src/src/hb-ot-shape-complex-use-machine.hh",
      "src/src/hb-ot-shape-complex-use-table.cc",
      "src/src/hb-ot-shape-complex-use.cc",
      "src/src/hb-ot-shape-complex-use.hh",
      "src/src/hb-ot-shape-complex-vowel-constraints.cc",
      "src/src/hb-ot-shape-complex-vowel-constraints.hh",
      "src/src/hb-ot-shape-complex.hh",
      "src/src/hb-ot-shape-fallback.cc",
      "src/src/hb-ot-shape-fallback.hh",
      "src/src/hb-ot-shape-normalize.cc",
      "src/src/hb-ot-shape-normalize.hh",
      "src/src/hb-ot-shape.cc",
      "src/src/hb-ot-shape.hh",
      "src/src/hb-ot-tag.cc",
      "src/src/hb-ot-var-avar-table.hh",
      "src/src/hb-ot-var-fvar-table.hh",
      "src/src/hb-ot-var-hvar-table.hh",
      "src/src/hb-ot-var-mvar-table.hh",
      "src/src/hb-ot-var.cc",
      "src/src/hb-pool.hh",
      "src/src/hb-sanitize.hh",
      "src/src/hb-serialize.hh",
      "src/src/hb-set-digest.hh",
      "src/src/hb-set.cc",
      "src/src/hb-set.hh",
      "src/src/hb-shape-plan.cc",
      "src/src/hb-shape-plan.hh",
      "src/src/hb-shape.cc",
      "src/src/hb-shaper-impl.hh",
      "src/src/hb-shaper-list.hh",
      "src/src/hb-shaper.cc",
      "src/src/hb-shaper.hh",
      "src/src/hb-static.cc",
      "src/src/hb-string-array.hh",
      "src/src/hb-subset-cff-common.cc",
      "src/src/hb-subset-cff-common.hh",
      "src/src/hb-subset-cff1.cc",
      "src/src/hb-subset-cff2.cc",
      "src/src/hb-subset-glyf.cc",
      "src/src/hb-subset-glyf.hh",
      "src/src/hb-subset-input.cc",
      "src/src/hb-subset-input.hh",
      "src/src/hb-subset-plan.cc",
      "src/src/hb-subset-plan.hh",
      "src/src/hb-subset.cc",
      "src/src/hb-subset.hh",
      "src/src/hb-unicode-emoji-table.hh",
      "src/src/hb-unicode.cc",
      "src/src/hb-unicode.hh",
      "src/src/hb-utf.hh",
      "src/src/hb-warning.cc",
      "src/src/hb.hh",
    ]

    defines = [
      "HAVE_OT",
      "HAVE_ICU",
      "HAVE_ICU_BUILTIN",
      "HAVE_INTEL_ATOMIC_PRIMITIVES",
      "HB_NO_MMAP",

      # SkPDF needs subsetting but does not require subsetting of layout or CFF tables.
      "HB_NO_SUBSET_LAYOUT",
      "HB_NO_SUBSET_CFF",

      # TODO(https://crbug.com/949962): Remove once this is fixed upstream.
      "U_DISABLE_VERSION_SUFFIX=0",
    ]

    if (is_component_build) {
      if (is_win) {
        defines += [ "HB_EXTERN=__declspec (dllexport) extern" ]
      } else {
        configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
        configs += [ "//build/config/gcc:symbol_visibility_default" ]
      }
    }

    if (use_system_freetype) {
      configs += [ "//build/linux:freetype_from_pkgconfig" ]
    } else {
      configs += [ "//third_party/freetype:freetype_config" ]
    }
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [
      "//build/config/compiler:no_chromium_code",

      # Must be after no_chromium_code for warning flags to be ordered
      # correctly.
      ":harfbuzz_warnings",
    ]

    # This allows the compiler to do further optimizations in the code.
    if (!is_debug) {
      configs -= [ "//build/config/compiler:default_optimization" ]
      configs += [ "//build/config/compiler:optimize_speed" ]
    }

    public_configs = [ ":harfbuzz_config" ]

    deps = [
      "//third_party/icu:icuuc",
    ]

    if (use_glib) {
      configs += [ "//build/config/linux:glib" ]
      public += [ "src/src/hb-glib.h" ]
      sources += [ "src/src/hb-glib.cc" ]
    }
  }
}

fuzzer_test("harfbuzz_fuzzer") {
  sources = [
    "fuzz/harfbuzz_fuzzer.cc",
  ]
  deps = [
    "//third_party:freetype_harfbuzz",
  ]
  libfuzzer_options = [ "max_len=16800" ]
  seed_corpus = "fuzz/seed_corpus"
}
