# Copyright 2016 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("//remoting/build/config/remoting_build.gni")

action("credits") {
  # We put this in $root_build_dir/gen/remoting instead of
  # $root_build_dir/gen/remoting/host (target_gen_dir) for
  # compatibility w/ GYP, since the installer needs the file to
  # be at the same location.
  about_credits_file = "$root_build_dir/gen/remoting/CREDITS.txt"
  script = "//tools/licenses.py"
  depfile = "$target_gen_dir/$target_name.d"

  inputs = [
    "credits.tmpl",
    "credits_entry.tmpl",
  ]

  outputs = [
    about_credits_file,
  ]

  args = [
    "credits",
    rebase_path(about_credits_file, root_build_dir),
    "--file-template",
    rebase_path("credits.tmpl", root_build_dir),
    "--entry-template",
    rebase_path("credits_entry.tmpl", root_build_dir),
    "--depfile",
    rebase_path(depfile, root_build_dir),
  ]
}
