# Copyright 2019 Google LLC.

import("../../gn/skia.gni")
import("../skshaper/skshaper.gni")
import("../skunicode/skunicode.gni")
import("skparagraph.gni")

declare_args() {
  skia_enable_skparagraph = true
  paragraph_gms_enabled = true
  paragraph_tests_enabled = true
  paragraph_bench_enabled = false
}

if (skia_enable_skparagraph && skia_enable_skshaper && skia_enable_skunicode &&
    skia_use_harfbuzz) {
  config("public_config") {
    defines = [ "SK_ENABLE_PARAGRAPH" ]
    include_dirs = [
      "include",
      "utils",
    ]
    if (is_component_build) {
      defines += [ "SKPARAGRAPH_DLL" ]
    }
  }

  skia_component("skparagraph") {
    import("skparagraph.gni")
    public_configs = [ ":public_config" ]
    public = skparagraph_core_public
    sources = skparagraph_core_sources
    defines = [ "SKPARAGRAPH_IMPLEMENTATION=1" ]
    public_deps = [
      "../..:skia",
      "../skunicode",
    ]
    deps = [ "../skshaper" ]
  }

  config("utils_config") {
    include_dirs = [ "utils" ]
  }

  if (defined(is_skia_standalone) && skia_enable_tools) {
    import("skparagraph.gni")
    skia_source_set("utils") {
      public_configs = [ ":utils_config" ]
      configs = [ "../../:skia_private" ]
      sources = skparagraph_utils
      deps = [
        "../..:skia",
        "../skshaper",
      ]
    }

    skia_source_set("gm") {
      if (paragraph_gms_enabled &&
          (skia_use_icu || skia_use_libgrapheme || skia_use_icu4x)) {
        testonly = true
        sources = [ "gm/simple_gm.cpp" ]
        deps = [
          ":skparagraph",
          "../..:skia",
          "../skshaper",
          "../skunicode",
        ]
      } else {
        sources = []
      }
    }

    if (skia_enable_tools) {
      skia_source_set("tests") {
        if (paragraph_tests_enabled &&
            (skia_use_icu || skia_use_libgrapheme || skia_use_icu4x)) {
          testonly = true
          sources = skparagraph_tests
          deps = [
            ":skparagraph",
            ":utils",
            "../..:skia",
            "../..:test",
            "../skshaper",
            "../skunicode",
          ]
        } else {
          sources = []
        }
      }
    }

    skia_source_set("bench") {
      if (paragraph_bench_enabled &&
          (skia_use_icu || skia_use_libgrapheme || skia_use_icu4x)) {
        testonly = true
        sources = [ "bench/ParagraphBench.cpp" ]
        deps = [
          ":skparagraph",
          "../..:skia",
          "../skshaper",
          "../skunicode",
        ]
      } else {
        sources = []
      }
    }

    skia_source_set("slides") {
      if (skia_use_icu || skia_use_libgrapheme) {
        testonly = true
        sources = [ "slides/ParagraphSlide.cpp" ]
        deps = [
          ":skparagraph",
          ":utils",
          "../..:skia",
          "../skshaper",
          "../skunicode",
        ]
      }
    }
  }
} else {
  group("skparagraph") {
  }
  group("utils") {
  }
  group("gm") {
  }
  group("tests") {
  }
  group("bench") {
  }
  group("slides") {
  }
}
