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