| # Copyright 2019 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. |
| # |
| # Copy a list of file into a destination directory. Potentially renaming |
| # files are they are copied. This also ensures that symlinks are followed |
| # during the copy (i.e. the symlinks are never copied, only their content). |
| # |
| # Variables: |
| # dest: Destination directory path. |
| # sources: List of source files or directories to copy to dest. |
| # renaming_sources: Optional list of source file paths that will be renamed |
| # during the copy operation. If provided, renaming_destinations is required. |
| # renaming_destinations: Optional list of destination file paths, required |
| # when renaming_sources is provided. Both lists should have the same size |
| # and matching entries. |
| # args: Optional. Additionnal arguments to the copy_ex.py script. |
| # |
| # The following variables have the usual GN meaning: data, deps, inputs, |
| # outputs, testonly, visibility. |
| |
| import("//build/config/python.gni") |
| |
| template("copy_ex") { |
| action_with_pydeps(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "data", |
| "deps", |
| "public_deps", |
| "testonly", |
| "visibility", |
| ]) |
| sources = [] |
| if (defined(invoker.sources)) { |
| sources += invoker.sources |
| } |
| outputs = [] |
| if (defined(invoker.outputs)) { |
| outputs += invoker.outputs |
| } |
| if (defined(invoker.inputs)) { |
| inputs = invoker.inputs |
| } |
| |
| script = "//build/android/gyp/copy_ex.py" |
| |
| args = [ |
| "--dest", |
| rebase_path(invoker.dest, root_build_dir), |
| ] |
| rebased_sources = rebase_path(sources, root_build_dir) |
| args += [ "--files=$rebased_sources" ] |
| |
| if (defined(invoker.args)) { |
| args += invoker.args |
| } |
| |
| if (defined(invoker.renaming_sources) && |
| defined(invoker.renaming_destinations)) { |
| sources += invoker.renaming_sources |
| renaming_destinations = invoker.renaming_destinations |
| outputs += |
| get_path_info(rebase_path(renaming_destinations, ".", invoker.dest), |
| "abspath") |
| rebased_renaming_sources = |
| rebase_path(invoker.renaming_sources, root_build_dir) |
| args += [ "--renaming-sources=$rebased_renaming_sources" ] |
| args += [ "--renaming-destinations=$renaming_destinations" ] |
| } |
| } |
| } |