xref: /aosp_15_r20/external/angle/build/config/android/copy_ex.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2019 The Chromium Authors
2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file.
4*8975f5c5SAndroid Build Coastguard Worker#
5*8975f5c5SAndroid Build Coastguard Worker# Copy a list of file into a destination directory. Potentially renaming
6*8975f5c5SAndroid Build Coastguard Worker# files are they are copied. This also ensures that symlinks are followed
7*8975f5c5SAndroid Build Coastguard Worker# during the copy (i.e. the symlinks are never copied, only their content).
8*8975f5c5SAndroid Build Coastguard Worker#
9*8975f5c5SAndroid Build Coastguard Worker# Variables:
10*8975f5c5SAndroid Build Coastguard Worker#  dest: Destination directory path.
11*8975f5c5SAndroid Build Coastguard Worker#  sources: List of source files or directories to copy to dest.
12*8975f5c5SAndroid Build Coastguard Worker#  renaming_sources: Optional list of source file paths that will be renamed
13*8975f5c5SAndroid Build Coastguard Worker#    during the copy operation. If provided, renaming_destinations is required.
14*8975f5c5SAndroid Build Coastguard Worker#  renaming_destinations: Optional list of destination file paths, required
15*8975f5c5SAndroid Build Coastguard Worker#    when renaming_sources is provided. Both lists should have the same size
16*8975f5c5SAndroid Build Coastguard Worker#    and matching entries.
17*8975f5c5SAndroid Build Coastguard Worker#  args: Optional. Additionnal arguments to the copy_ex.py script.
18*8975f5c5SAndroid Build Coastguard Worker#
19*8975f5c5SAndroid Build Coastguard Worker#  The following variables have the usual GN meaning: data, deps, inputs,
20*8975f5c5SAndroid Build Coastguard Worker#  outputs, testonly, visibility.
21*8975f5c5SAndroid Build Coastguard Worker
22*8975f5c5SAndroid Build Coastguard Workerimport("//build/config/python.gni")
23*8975f5c5SAndroid Build Coastguard Worker
24*8975f5c5SAndroid Build Coastguard Workertemplate("copy_ex") {
25*8975f5c5SAndroid Build Coastguard Worker  action_with_pydeps(target_name) {
26*8975f5c5SAndroid Build Coastguard Worker    forward_variables_from(invoker,
27*8975f5c5SAndroid Build Coastguard Worker                           [
28*8975f5c5SAndroid Build Coastguard Worker                             "data",
29*8975f5c5SAndroid Build Coastguard Worker                             "deps",
30*8975f5c5SAndroid Build Coastguard Worker                             "public_deps",
31*8975f5c5SAndroid Build Coastguard Worker                             "testonly",
32*8975f5c5SAndroid Build Coastguard Worker                             "visibility",
33*8975f5c5SAndroid Build Coastguard Worker                           ])
34*8975f5c5SAndroid Build Coastguard Worker    sources = []
35*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.sources)) {
36*8975f5c5SAndroid Build Coastguard Worker      sources += invoker.sources
37*8975f5c5SAndroid Build Coastguard Worker    }
38*8975f5c5SAndroid Build Coastguard Worker    outputs = []
39*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.outputs)) {
40*8975f5c5SAndroid Build Coastguard Worker      outputs += invoker.outputs
41*8975f5c5SAndroid Build Coastguard Worker    }
42*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.inputs)) {
43*8975f5c5SAndroid Build Coastguard Worker      inputs = invoker.inputs
44*8975f5c5SAndroid Build Coastguard Worker    }
45*8975f5c5SAndroid Build Coastguard Worker
46*8975f5c5SAndroid Build Coastguard Worker    script = "//build/android/gyp/copy_ex.py"
47*8975f5c5SAndroid Build Coastguard Worker
48*8975f5c5SAndroid Build Coastguard Worker    args = [
49*8975f5c5SAndroid Build Coastguard Worker      "--dest",
50*8975f5c5SAndroid Build Coastguard Worker      rebase_path(invoker.dest, root_build_dir),
51*8975f5c5SAndroid Build Coastguard Worker    ]
52*8975f5c5SAndroid Build Coastguard Worker    rebased_sources = rebase_path(sources, root_build_dir)
53*8975f5c5SAndroid Build Coastguard Worker    args += [ "--files=$rebased_sources" ]
54*8975f5c5SAndroid Build Coastguard Worker
55*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.args)) {
56*8975f5c5SAndroid Build Coastguard Worker      args += invoker.args
57*8975f5c5SAndroid Build Coastguard Worker    }
58*8975f5c5SAndroid Build Coastguard Worker
59*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.renaming_sources) &&
60*8975f5c5SAndroid Build Coastguard Worker        defined(invoker.renaming_destinations)) {
61*8975f5c5SAndroid Build Coastguard Worker      sources += invoker.renaming_sources
62*8975f5c5SAndroid Build Coastguard Worker      renaming_destinations = invoker.renaming_destinations
63*8975f5c5SAndroid Build Coastguard Worker      outputs +=
64*8975f5c5SAndroid Build Coastguard Worker          get_path_info(rebase_path(renaming_destinations, ".", invoker.dest),
65*8975f5c5SAndroid Build Coastguard Worker                        "abspath")
66*8975f5c5SAndroid Build Coastguard Worker      rebased_renaming_sources =
67*8975f5c5SAndroid Build Coastguard Worker          rebase_path(invoker.renaming_sources, root_build_dir)
68*8975f5c5SAndroid Build Coastguard Worker      args += [ "--renaming-sources=$rebased_renaming_sources" ]
69*8975f5c5SAndroid Build Coastguard Worker      args += [ "--renaming-destinations=$renaming_destinations" ]
70*8975f5c5SAndroid Build Coastguard Worker    }
71*8975f5c5SAndroid Build Coastguard Worker  }
72*8975f5c5SAndroid Build Coastguard Worker}
73