blob: 9fbca0c4c6cb775cce8fb12d8f181e0504463cf0 [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Copy files into a directory based on a metadata collection.
#
# This does a metadata collection as in generated_file() so collect a list
# of file paths (relative to $root_build_dir). The copied_files_dir()
# target is an action() target that copies all those files from the
# metadata-supplied path to that path's basename in $output_dir.
#
# Parameters
#
# * data_deps
# - Optional: Usual GN meaning; no effect on what gets copied.
# - Type: list(label)
#
# * data_keys
# - Required: See generated_file(). The metadata collected must be all
# path strings relative to $root_build_dir.
# - Type: list(string)
#
# * walk_keys
# - Optional: See generated_file().
# - Type: list(string)
#
# * deps
# - Required: The $data_keys metadata is collected from these targets.
# - Type: list(label)
#
# * output_dir
# - Optional: Directory to copy (actually hard-link) files into.
# - Type: path
# - Default: "$root_build_dir/$target_name"
#
template("copied_files_dir") {
main_target = target_name
rspfile_target = "_copy_files.$main_target.rsp"
rspfile = "$target_gen_dir/$main_target.rsp"
generated_file(rspfile_target) {
forward_variables_from(invoker, [ "testonly" ])
visibility = [ ":$main_target" ]
outputs = [
rspfile,
]
output_conversion = "list lines"
forward_variables_from(invoker,
[
"data_keys",
"deps",
"walk_keys",
])
}
action(main_target) {
forward_variables_from(invoker,
[
"data_deps",
"output_dir",
"testonly",
"visibility",
])
deps = [
":$rspfile_target",
]
script = "$zx/public/gn/copied_files_dir.sh"
depfile = "$target_out_dir/$target_name.d"
outputs = [
depfile,
]
sources = [
rspfile,
]
if (!defined(output_dir)) {
output_dir = "$root_out_dir/$target_name"
}
args = [
rebase_path(output_dir, root_build_dir),
rebase_path(depfile, root_build_dir),
rebase_path(rspfile, root_build_dir),
]
}
}