| # Copyright 2016 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/compiled_action.gni") |
| |
| # Help template to define a data_bundle with localized strings for use by |
| # the iOS system from packed locale.pak files. |
| # |
| # Arguments |
| # config_file |
| # string, path to the property list file containing the configuration |
| # parameters for the invocation of generate_localizable_strings tool. |
| # |
| # datapack_dir |
| # string, path to the directory containing the packed locale.pak files |
| # in use for the generate_localizable_strings tool. |
| # |
| # locales |
| # list of strings corresponding to all the locales that should be |
| # generated and packed. |
| # |
| # output_filenames |
| # list of strings corresponding to the basename of the files generated |
| # by the generate_localizable_strings tool (i.e. if it contains ["a"] |
| # then the tool will generate ["$locale.lproj/a"] for each locale set |
| # in locales argument). |
| # |
| # deps |
| # list of target labels. |
| # |
| template("generate_localizable_strings") { |
| assert(defined(invoker.config_file), |
| "config_file needs to be defined for ${target_name}") |
| assert(defined(invoker.datapack_dir), |
| "datapack_dir needs to be defined for ${target_name}") |
| assert(defined(invoker.output_filenames), |
| "output_filenames needs to be defined for ${target_name}") |
| assert(defined(invoker.packed_locales), |
| "packed_locales needs to be defined for ${target_name}") |
| |
| _target_name = target_name |
| |
| _bundle_targets = [] |
| foreach(locale, invoker.packed_locales) { |
| _bundle_targets += [ ":${_target_name}_${locale}" ] |
| |
| bundle_data("${_target_name}_${locale}") { |
| forward_variables_from(invoker, [ "testonly" ]) |
| |
| visibility = [ ":${_target_name}" ] |
| public_deps = [ |
| ":${_target_name}_generate", |
| ] |
| sources = [] |
| foreach(filename, invoker.output_filenames) { |
| sources += [ "${target_gen_dir}/${locale}.lproj/$filename" ] |
| } |
| outputs = [ |
| "{{bundle_resources_dir}}/${locale}.lproj/{{source_file_part}}", |
| ] |
| } |
| } |
| |
| compiled_action("${_target_name}_generate") { |
| forward_variables_from(invoker, [ "testonly" ]) |
| |
| visibility = _bundle_targets |
| deps = invoker.deps |
| tool = "//ios/chrome/tools/strings:generate_localizable_strings" |
| |
| outputs = [] |
| inputs = [ |
| invoker.config_file, |
| ] |
| |
| foreach(locale, invoker.packed_locales) { |
| inputs += [ "${invoker.datapack_dir}/${locale}.lproj/locale.pak" ] |
| foreach(filename, invoker.output_filenames) { |
| outputs += [ "${target_gen_dir}/${locale}.lproj/$filename" ] |
| } |
| } |
| |
| args = [ |
| "-c", |
| rebase_path(invoker.config_file, root_build_dir), |
| "-I", |
| rebase_path(root_gen_dir, root_build_dir), |
| "-p", |
| rebase_path(invoker.datapack_dir, root_build_dir), |
| "-o", |
| rebase_path(target_gen_dir, root_build_dir), |
| ] + invoker.packed_locales |
| } |
| |
| group(_target_name) { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "visibility", |
| ]) |
| deps = _bundle_targets |
| } |
| } |