# Copyright 2013 The Flutter 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("//flutter/build/zip_bundle.gni")
import("//flutter/shell/version/version.gni")

executable("_font-subset") {
  output_name = "font-subset"

  sources = [
    "hb_wrappers.h",
    "main.cc",
  ]

  deps = [ "//third_party/harfbuzz:harfbuzz_subset" ]

  if (is_mac) {
    frameworks = [
      "Foundation.framework",
      "CoreGraphics.framework",
      "CoreText.framework",
    ]
  }

  metadata = {
    font_subset_without_entitlement = [ "font-subset" ]
  }
}

generated_file("_font-subset-license") {
  source_path = rebase_path(".", "//flutter")
  license_path =
      rebase_path("//flutter/sky/packages/sky_engine/LICENSE", "//flutter")
  git_url = "https://github.com/flutter/engine/tree/$engine_version"
  outputs = [ "$target_gen_dir/LICENSE.font-subset.md" ]
  contents = [
    "# font-subset",
    "",
    "This tool is used by the Flutter SDK to tree shake icon fonts.",
    "",
    "Source code for this tool: [flutter/engine/$source_path]($git_url/$source_path).",
    "License for this tool: [flutter/engine/sky/packages/sky_engine/LICENSE]($git_url/$license_path).",
  ]
}

generated_file("font_entitlement_config") {
  outputs = [ "$target_gen_dir/font_subset_without_entitlements.txt" ]

  data_keys = [ "font_subset_without_entitlement" ]

  deps = [ ":_font-subset" ]
}

zip_bundle("font-subset") {
  if (is_mac) {
    # Mac artifacts sometimes use mac and sometimes darwin. Standardizing the
    # names will require changes in the list of artifacts the tool is downloading.
    output = "darwin-${target_cpu}/font-subset.zip"
  } else {
    output = "${full_target_platform_name}/font-subset.zip"
  }

  font_subset_bin = "font-subset"
  if (is_win) {
    font_subset_bin = "${font_subset_bin}.exe"
  }

  files = [
    {
      source = "$root_build_dir/$font_subset_bin"
      destination = font_subset_bin
    },
    {
      source = "$root_gen_dir/const_finder.dart.snapshot"
      destination = "const_finder.dart.snapshot"
    },
    {
      source = "$target_gen_dir/LICENSE.font-subset.md"
      destination = "LICENSE.font-subset.md"
    },
  ]

  deps = [
    ":_font-subset",
    ":_font-subset-license",
    "//flutter/tools/const_finder",
  ]
  if (is_mac) {
    deps += [ ":font_entitlement_config" ]
    files += [
      {
        source = "$target_gen_dir/font_subset_without_entitlements.txt"
        destination = "without_entitlements.txt"
      },
    ]
  }
}
