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