# Copyright 2020 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/ios/ios_sdk.gni") # Template to compile an .intentdefinition file. # # Arguments # # intent_file # path to .intentdefinition file that must be compiled # # intent_names # list of string corresponding to the intent defined in intent_file; # must include all the intents as only the intents listed will be # compiled # # developer_dir # (optional) path to developer_dir to use # template("intent_definition") { assert(defined(invoker.intent_file) && invoker.intent_file != "", "intent_file must be defined for $target_name") assert(defined(invoker.intent_names) && invoker.intent_names != [], "intent_names must be defined for $target_name") assert(xcode_version_int >= 1140, "intent_definition requires Xcode 11.4 or higher") _compile_intent_target = "${target_name}_compile_intent" _compile_intent_output = "$target_gen_dir/" + get_path_info(invoker.intent_file, "file") action(_compile_intent_target) { script = "//build/apple/xcrun.py" inputs = [ invoker.intent_file ] outputs = [ _compile_intent_output ] args = [ "intentbuilderc", "compile", "-input", rebase_path(invoker.intent_file, root_build_dir), "-output", rebase_path(target_gen_dir, root_build_dir), ] if (defined(invoker.developer_dir)) { args += [ "--developer-dir", rebase_path(invoker.developer_dir, root_build_dir), ] } } _compile_intent_bundle = "${target_name}_compile_intent_bundle" bundle_data(_compile_intent_bundle) { sources = [ _compile_intent_output ] outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] public_deps = [ ":$_compile_intent_target" ] } _generate_source_target = "${target_name}_generate_source" _generate_source_output = [] foreach(_intent, invoker.intent_names) { _generate_source_output += [ "$target_gen_dir/$_intent.h", "$target_gen_dir/$_intent.m", ] } action(_generate_source_target) { script = "//build/apple/xcrun.py" inputs = [ invoker.intent_file ] outputs = _generate_source_output args = [ "intentbuilderc", "generate", "-input", rebase_path(invoker.intent_file, root_build_dir), "-output", rebase_path(target_gen_dir, root_build_dir), "-language", "Objective-C", ] if (defined(invoker.developer_dir)) { args += [ "--developer-dir", rebase_path(invoker.developer_dir, root_build_dir), ] } } source_set(target_name) { forward_variables_from(invoker, "*", [ "developer_dir", "intent_file", "intent_names", "sources", ]) if (!defined(deps)) { deps = [] } if (!defined(frameworks)) { frameworks = [] } sources = _generate_source_output deps += [ ":$_compile_intent_bundle", ":$_generate_source_target", ] frameworks += [ "Intents.framework" ] } }