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