# Copyright 2018 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")

declare_args() {
  skia_enable_skshaper = true
}

if (skia_enable_skshaper) {
  config("public_config") {
    include_dirs = [ "include" ]
    defines = []
    if (is_component_build) {
      defines += [ "SKSHAPER_DLL" ]
    }
    if (skia_use_icu) {
      defines += [ "SK_SHAPER_HARFBUZZ_AVAILABLE" ]
    }
  }

  component("skshaper") {
    check_includes = false
    import("skshaper.gni")
    public_configs = [ ":public_config" ]
    public = skia_shaper_public
    deps = [
      "../..:skia",
    ]
    defines = [ "SKSHAPER_IMPLEMENTATION=1" ]
    sources = skia_shaper_primitive_sources
    if (skia_use_icu && skia_use_harfbuzz) {
      sources += skia_shaper_harfbuzz_sources
      deps += [
        "//third_party/harfbuzz",
        "//third_party/icu",
      ]
    }
    configs += [ "../../:skia_private" ]
  }
} else {
  group("skshaper") {
  }
}
