xref: /aosp_15_r20/external/angle/build/ios/extension_bundle_data.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Copyright 2021 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# Template to package an app extension into an app.
6#
7# Parameters
8#
9#   extension_target:
10#     name of the extension target to package; the extension
11#     bundle name must be derived from the target name
12#
13#   extension_name:
14#     (optional) name of the extension appex file; derived from
15#     the target name if omitted
16#
17template("extension_bundle_data") {
18  assert(defined(invoker.extension_target),
19         "extension_target must be defined for $target_name")
20
21  _extension_name = get_label_info(invoker.extension_target, "name") + ".appex"
22  if (defined(invoker.extension_name)) {
23    _extension_name = invoker.extension_name
24  }
25
26  _extension_dir = "PlugIns"
27  if (defined(invoker.extension_dir)) {
28    _extension_dir = invoker.extension_dir
29  }
30
31  if (defined(invoker.variants) && invoker.variants != []) {
32    _variants = []
33    foreach(_variant, invoker.variants) {
34      _variants += [
35        {
36          name = _variant.name
37        },
38      ]
39    }
40  } else {
41    _variants = []
42  }
43
44  _target_name = target_name
45  if (_variants != []) {
46    foreach(_variant, _variants) {
47      _extension_target =
48          get_label_info(invoker.extension_target, "label_no_toolchain") +
49          "_variants_${_variant.name}" + "(" +
50          get_label_info(invoker.extension_target, "toolchain") + ")"
51
52      bundle_data("${_target_name}_variants_${_variant.name}") {
53        forward_variables_from(invoker, [ "testonly" ])
54        public_deps = [ _extension_target ]
55        outputs =
56            [ "{{bundle_contents_dir}}/$_extension_dir/{{source_file_part}}" ]
57        sources = [ get_label_info(_extension_target, "root_out_dir") +
58                    "/variants/${_variant.name}/$_extension_name" ]
59      }
60    }
61  }
62
63  bundle_data(_target_name) {
64    forward_variables_from(invoker, [ "testonly" ])
65    public_deps = [ invoker.extension_target ]
66    outputs = [ "{{bundle_contents_dir}}/$_extension_dir/{{source_file_part}}" ]
67    sources = [ get_label_info(invoker.extension_target, "root_out_dir") +
68                "/$_extension_name" ]
69  }
70}
71