1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2021 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# Template to package an app extension into an app. 6*8975f5c5SAndroid Build Coastguard Worker# 7*8975f5c5SAndroid Build Coastguard Worker# Parameters 8*8975f5c5SAndroid Build Coastguard Worker# 9*8975f5c5SAndroid Build Coastguard Worker# extension_target: 10*8975f5c5SAndroid Build Coastguard Worker# name of the extension target to package; the extension 11*8975f5c5SAndroid Build Coastguard Worker# bundle name must be derived from the target name 12*8975f5c5SAndroid Build Coastguard Worker# 13*8975f5c5SAndroid Build Coastguard Worker# extension_name: 14*8975f5c5SAndroid Build Coastguard Worker# (optional) name of the extension appex file; derived from 15*8975f5c5SAndroid Build Coastguard Worker# the target name if omitted 16*8975f5c5SAndroid Build Coastguard Worker# 17*8975f5c5SAndroid Build Coastguard Workertemplate("extension_bundle_data") { 18*8975f5c5SAndroid Build Coastguard Worker assert(defined(invoker.extension_target), 19*8975f5c5SAndroid Build Coastguard Worker "extension_target must be defined for $target_name") 20*8975f5c5SAndroid Build Coastguard Worker 21*8975f5c5SAndroid Build Coastguard Worker _extension_name = get_label_info(invoker.extension_target, "name") + ".appex" 22*8975f5c5SAndroid Build Coastguard Worker if (defined(invoker.extension_name)) { 23*8975f5c5SAndroid Build Coastguard Worker _extension_name = invoker.extension_name 24*8975f5c5SAndroid Build Coastguard Worker } 25*8975f5c5SAndroid Build Coastguard Worker 26*8975f5c5SAndroid Build Coastguard Worker _extension_dir = "PlugIns" 27*8975f5c5SAndroid Build Coastguard Worker if (defined(invoker.extension_dir)) { 28*8975f5c5SAndroid Build Coastguard Worker _extension_dir = invoker.extension_dir 29*8975f5c5SAndroid Build Coastguard Worker } 30*8975f5c5SAndroid Build Coastguard Worker 31*8975f5c5SAndroid Build Coastguard Worker if (defined(invoker.variants) && invoker.variants != []) { 32*8975f5c5SAndroid Build Coastguard Worker _variants = [] 33*8975f5c5SAndroid Build Coastguard Worker foreach(_variant, invoker.variants) { 34*8975f5c5SAndroid Build Coastguard Worker _variants += [ 35*8975f5c5SAndroid Build Coastguard Worker { 36*8975f5c5SAndroid Build Coastguard Worker name = _variant.name 37*8975f5c5SAndroid Build Coastguard Worker }, 38*8975f5c5SAndroid Build Coastguard Worker ] 39*8975f5c5SAndroid Build Coastguard Worker } 40*8975f5c5SAndroid Build Coastguard Worker } else { 41*8975f5c5SAndroid Build Coastguard Worker _variants = [] 42*8975f5c5SAndroid Build Coastguard Worker } 43*8975f5c5SAndroid Build Coastguard Worker 44*8975f5c5SAndroid Build Coastguard Worker _target_name = target_name 45*8975f5c5SAndroid Build Coastguard Worker if (_variants != []) { 46*8975f5c5SAndroid Build Coastguard Worker foreach(_variant, _variants) { 47*8975f5c5SAndroid Build Coastguard Worker _extension_target = 48*8975f5c5SAndroid Build Coastguard Worker get_label_info(invoker.extension_target, "label_no_toolchain") + 49*8975f5c5SAndroid Build Coastguard Worker "_variants_${_variant.name}" + "(" + 50*8975f5c5SAndroid Build Coastguard Worker get_label_info(invoker.extension_target, "toolchain") + ")" 51*8975f5c5SAndroid Build Coastguard Worker 52*8975f5c5SAndroid Build Coastguard Worker bundle_data("${_target_name}_variants_${_variant.name}") { 53*8975f5c5SAndroid Build Coastguard Worker forward_variables_from(invoker, [ "testonly" ]) 54*8975f5c5SAndroid Build Coastguard Worker public_deps = [ _extension_target ] 55*8975f5c5SAndroid Build Coastguard Worker outputs = 56*8975f5c5SAndroid Build Coastguard Worker [ "{{bundle_contents_dir}}/$_extension_dir/{{source_file_part}}" ] 57*8975f5c5SAndroid Build Coastguard Worker sources = [ get_label_info(_extension_target, "root_out_dir") + 58*8975f5c5SAndroid Build Coastguard Worker "/variants/${_variant.name}/$_extension_name" ] 59*8975f5c5SAndroid Build Coastguard Worker } 60*8975f5c5SAndroid Build Coastguard Worker } 61*8975f5c5SAndroid Build Coastguard Worker } 62*8975f5c5SAndroid Build Coastguard Worker 63*8975f5c5SAndroid Build Coastguard Worker bundle_data(_target_name) { 64*8975f5c5SAndroid Build Coastguard Worker forward_variables_from(invoker, [ "testonly" ]) 65*8975f5c5SAndroid Build Coastguard Worker public_deps = [ invoker.extension_target ] 66*8975f5c5SAndroid Build Coastguard Worker outputs = [ "{{bundle_contents_dir}}/$_extension_dir/{{source_file_part}}" ] 67*8975f5c5SAndroid Build Coastguard Worker sources = [ get_label_info(invoker.extension_target, "root_out_dir") + 68*8975f5c5SAndroid Build Coastguard Worker "/$_extension_name" ] 69*8975f5c5SAndroid Build Coastguard Worker } 70*8975f5c5SAndroid Build Coastguard Worker} 71