# DO NOT EDIT: This is a generated file.
# See //bazel/exporter_tool/README.md for more information.
#
# The sources of truth are:
#   //modules/skshaper/include/BUILD.bazel
#   //modules/skshaper/src/BUILD.bazel
#   //modules/skshaper/tests/BUILD.bazel
#   //modules/skshaper/utils/BUILD.bazel

# To update this file, run make -C bazel generate_gni

_modules = get_path_info("../../modules", "abspath")

# List generated by Bazel rules:
#  //modules/skshaper/include:hdrs
#  //modules/skshaper/utils:core_hdrs
skia_shaper_public = [
  "$_modules/skshaper/include/SkShaper.h",
  "$_modules/skshaper/include/SkShaper_factory.h",
  "$_modules/skshaper/include/SkShaper_harfbuzz.h",
  "$_modules/skshaper/include/SkShaper_skunicode.h",
  "$_modules/skshaper/utils/FactoryHelpers.h",
]

# Generated by Bazel rule //modules/skshaper/src:base_srcs
skia_shaper_primitive_sources = [
  "$_modules/skshaper/src/SkShaper.cpp",
  "$_modules/skshaper/src/SkShaper_factory.cpp",
  "$_modules/skshaper/src/SkShaper_primitive.cpp",
]

# Generated by Bazel rule //modules/skshaper/src:harfbuzz_srcs
skia_shaper_harfbuzz_sources =
    [ "$_modules/skshaper/src/SkShaper_harfbuzz.cpp" ]

# Generated by Bazel rule //modules/skshaper/src:skunicode_srcs
skia_shaper_skunicode_sources =
    [ "$_modules/skshaper/src/SkShaper_skunicode.cpp" ]

# Generated by Bazel rule //modules/skshaper/src:coretext_srcs
skia_shaper_coretext_sources =
    [ "$_modules/skshaper/src/SkShaper_coretext.cpp" ]

# Generated by Bazel rule //modules/skshaper/tests:tests_srcs
skia_shaper_tests = [ "$_modules/skshaper/tests/ShaperTest.cpp" ]

declare_args() {
  skia_enable_skshaper = true
}
declare_args() {
  skia_enable_skshaper_tests = skia_enable_skshaper
}
