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