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