xref: /aosp_15_r20/external/angle/build/ios/intent_definition.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2020 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 Workerimport("//build/config/ios/ios_sdk.gni")
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard Worker# Template to compile an .intentdefinition file.
8*8975f5c5SAndroid Build Coastguard Worker#
9*8975f5c5SAndroid Build Coastguard Worker# Arguments
10*8975f5c5SAndroid Build Coastguard Worker#
11*8975f5c5SAndroid Build Coastguard Worker#   intent_file
12*8975f5c5SAndroid Build Coastguard Worker#     path to .intentdefinition file that must be compiled
13*8975f5c5SAndroid Build Coastguard Worker#
14*8975f5c5SAndroid Build Coastguard Worker#   intent_names
15*8975f5c5SAndroid Build Coastguard Worker#     list of string corresponding to the intent defined in intent_file;
16*8975f5c5SAndroid Build Coastguard Worker#     must include all the intents as only the intents listed will be
17*8975f5c5SAndroid Build Coastguard Worker#     compiled
18*8975f5c5SAndroid Build Coastguard Worker#
19*8975f5c5SAndroid Build Coastguard Worker#   developer_dir
20*8975f5c5SAndroid Build Coastguard Worker#     (optional) path to developer_dir to use
21*8975f5c5SAndroid Build Coastguard Worker#
22*8975f5c5SAndroid Build Coastguard Workertemplate("intent_definition") {
23*8975f5c5SAndroid Build Coastguard Worker  assert(defined(invoker.intent_file) && invoker.intent_file != "",
24*8975f5c5SAndroid Build Coastguard Worker         "intent_file must be defined for $target_name")
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard Worker  assert(defined(invoker.intent_names) && invoker.intent_names != [],
27*8975f5c5SAndroid Build Coastguard Worker         "intent_names must be defined for $target_name")
28*8975f5c5SAndroid Build Coastguard Worker
29*8975f5c5SAndroid Build Coastguard Worker  assert(xcode_version_int >= 1140,
30*8975f5c5SAndroid Build Coastguard Worker         "intent_definition requires Xcode 11.4 or higher")
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard Worker  _compile_intent_target = "${target_name}_compile_intent"
33*8975f5c5SAndroid Build Coastguard Worker  _compile_intent_output =
34*8975f5c5SAndroid Build Coastguard Worker      "$target_gen_dir/" + get_path_info(invoker.intent_file, "file")
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard Worker  action(_compile_intent_target) {
37*8975f5c5SAndroid Build Coastguard Worker    script = "//build/apple/xcrun.py"
38*8975f5c5SAndroid Build Coastguard Worker    inputs = [ invoker.intent_file ]
39*8975f5c5SAndroid Build Coastguard Worker    outputs = [ _compile_intent_output ]
40*8975f5c5SAndroid Build Coastguard Worker    args = [
41*8975f5c5SAndroid Build Coastguard Worker      "intentbuilderc",
42*8975f5c5SAndroid Build Coastguard Worker      "compile",
43*8975f5c5SAndroid Build Coastguard Worker      "-input",
44*8975f5c5SAndroid Build Coastguard Worker      rebase_path(invoker.intent_file, root_build_dir),
45*8975f5c5SAndroid Build Coastguard Worker      "-output",
46*8975f5c5SAndroid Build Coastguard Worker      rebase_path(target_gen_dir, root_build_dir),
47*8975f5c5SAndroid Build Coastguard Worker    ]
48*8975f5c5SAndroid Build Coastguard Worker
49*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.developer_dir)) {
50*8975f5c5SAndroid Build Coastguard Worker      args += [
51*8975f5c5SAndroid Build Coastguard Worker        "--developer-dir",
52*8975f5c5SAndroid Build Coastguard Worker        rebase_path(invoker.developer_dir, root_build_dir),
53*8975f5c5SAndroid Build Coastguard Worker      ]
54*8975f5c5SAndroid Build Coastguard Worker    }
55*8975f5c5SAndroid Build Coastguard Worker  }
56*8975f5c5SAndroid Build Coastguard Worker
57*8975f5c5SAndroid Build Coastguard Worker  _compile_intent_bundle = "${target_name}_compile_intent_bundle"
58*8975f5c5SAndroid Build Coastguard Worker  bundle_data(_compile_intent_bundle) {
59*8975f5c5SAndroid Build Coastguard Worker    sources = [ _compile_intent_output ]
60*8975f5c5SAndroid Build Coastguard Worker    outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
61*8975f5c5SAndroid Build Coastguard Worker    public_deps = [ ":$_compile_intent_target" ]
62*8975f5c5SAndroid Build Coastguard Worker  }
63*8975f5c5SAndroid Build Coastguard Worker
64*8975f5c5SAndroid Build Coastguard Worker  _generate_source_target = "${target_name}_generate_source"
65*8975f5c5SAndroid Build Coastguard Worker  _generate_source_output = []
66*8975f5c5SAndroid Build Coastguard Worker  foreach(_intent, invoker.intent_names) {
67*8975f5c5SAndroid Build Coastguard Worker    _generate_source_output += [
68*8975f5c5SAndroid Build Coastguard Worker      "$target_gen_dir/$_intent.h",
69*8975f5c5SAndroid Build Coastguard Worker      "$target_gen_dir/$_intent.m",
70*8975f5c5SAndroid Build Coastguard Worker    ]
71*8975f5c5SAndroid Build Coastguard Worker  }
72*8975f5c5SAndroid Build Coastguard Worker
73*8975f5c5SAndroid Build Coastguard Worker  action(_generate_source_target) {
74*8975f5c5SAndroid Build Coastguard Worker    script = "//build/apple/xcrun.py"
75*8975f5c5SAndroid Build Coastguard Worker    inputs = [ invoker.intent_file ]
76*8975f5c5SAndroid Build Coastguard Worker    outputs = _generate_source_output
77*8975f5c5SAndroid Build Coastguard Worker    args = [
78*8975f5c5SAndroid Build Coastguard Worker      "intentbuilderc",
79*8975f5c5SAndroid Build Coastguard Worker      "generate",
80*8975f5c5SAndroid Build Coastguard Worker      "-input",
81*8975f5c5SAndroid Build Coastguard Worker      rebase_path(invoker.intent_file, root_build_dir),
82*8975f5c5SAndroid Build Coastguard Worker      "-output",
83*8975f5c5SAndroid Build Coastguard Worker      rebase_path(target_gen_dir, root_build_dir),
84*8975f5c5SAndroid Build Coastguard Worker      "-language",
85*8975f5c5SAndroid Build Coastguard Worker      "Objective-C",
86*8975f5c5SAndroid Build Coastguard Worker    ]
87*8975f5c5SAndroid Build Coastguard Worker
88*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.developer_dir)) {
89*8975f5c5SAndroid Build Coastguard Worker      args += [
90*8975f5c5SAndroid Build Coastguard Worker        "--developer-dir",
91*8975f5c5SAndroid Build Coastguard Worker        rebase_path(invoker.developer_dir, root_build_dir),
92*8975f5c5SAndroid Build Coastguard Worker      ]
93*8975f5c5SAndroid Build Coastguard Worker    }
94*8975f5c5SAndroid Build Coastguard Worker  }
95*8975f5c5SAndroid Build Coastguard Worker
96*8975f5c5SAndroid Build Coastguard Worker  source_set(target_name) {
97*8975f5c5SAndroid Build Coastguard Worker    forward_variables_from(invoker,
98*8975f5c5SAndroid Build Coastguard Worker                           "*",
99*8975f5c5SAndroid Build Coastguard Worker                           [
100*8975f5c5SAndroid Build Coastguard Worker                             "developer_dir",
101*8975f5c5SAndroid Build Coastguard Worker                             "intent_file",
102*8975f5c5SAndroid Build Coastguard Worker                             "intent_names",
103*8975f5c5SAndroid Build Coastguard Worker                             "sources",
104*8975f5c5SAndroid Build Coastguard Worker                           ])
105*8975f5c5SAndroid Build Coastguard Worker
106*8975f5c5SAndroid Build Coastguard Worker    if (!defined(deps)) {
107*8975f5c5SAndroid Build Coastguard Worker      deps = []
108*8975f5c5SAndroid Build Coastguard Worker    }
109*8975f5c5SAndroid Build Coastguard Worker    if (!defined(frameworks)) {
110*8975f5c5SAndroid Build Coastguard Worker      frameworks = []
111*8975f5c5SAndroid Build Coastguard Worker    }
112*8975f5c5SAndroid Build Coastguard Worker
113*8975f5c5SAndroid Build Coastguard Worker    sources = _generate_source_output
114*8975f5c5SAndroid Build Coastguard Worker    deps += [
115*8975f5c5SAndroid Build Coastguard Worker      ":$_compile_intent_bundle",
116*8975f5c5SAndroid Build Coastguard Worker      ":$_generate_source_target",
117*8975f5c5SAndroid Build Coastguard Worker    ]
118*8975f5c5SAndroid Build Coastguard Worker    frameworks += [ "Intents.framework" ]
119*8975f5c5SAndroid Build Coastguard Worker  }
120*8975f5c5SAndroid Build Coastguard Worker}
121