mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
187 lines
5.6 KiB
Plaintext
187 lines
5.6 KiB
Plaintext
# Copyright 2014 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("//tools/grit/grit_rule.gni")
|
|
|
|
# This file defines a template to invoke grit repack in a consistent manner.
|
|
#
|
|
# Parameters:
|
|
# sources [required]
|
|
# List of pak files that need to be combined.
|
|
#
|
|
# output [required]
|
|
# File name (single string) of the output file.
|
|
#
|
|
# copy_data_to_bundle [optional]
|
|
# Whether to define a bundle_data() for the resulting pak.
|
|
#
|
|
# bundle_output [optional]
|
|
# Path of the file in the application bundle, defaults to
|
|
# {{bundle_resources_dir}}/{{source_file_part}}.
|
|
#
|
|
# deps [optional]
|
|
# public_deps [optional]
|
|
# visibility [optional]
|
|
# Normal meaning.
|
|
template("repack") {
|
|
_copy_data_to_bundle =
|
|
defined(invoker.copy_data_to_bundle) && invoker.copy_data_to_bundle
|
|
_repack_target_name = target_name
|
|
if (_copy_data_to_bundle) {
|
|
_repack_target_name = "${target_name}__repack"
|
|
}
|
|
|
|
action(_repack_target_name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"deps",
|
|
"public_deps",
|
|
"testonly",
|
|
"visibility",
|
|
])
|
|
if (defined(visibility) && _copy_data_to_bundle) {
|
|
visibility += [ ":${invoker.target_name}" ]
|
|
}
|
|
assert(defined(invoker.sources), "Need sources for $target_name")
|
|
assert(defined(invoker.output), "Need output for $target_name")
|
|
|
|
script = "//tools/grit/pak_util.py"
|
|
|
|
inputs = invoker.sources
|
|
outputs = [
|
|
invoker.output,
|
|
"${invoker.output}.info",
|
|
]
|
|
|
|
args = [ "repack" ]
|
|
if (defined(invoker.repack_whitelist)) {
|
|
inputs += [ invoker.repack_whitelist ]
|
|
_rebased_whitelist = rebase_path(invoker.repack_whitelist)
|
|
args += [ "--whitelist=$_rebased_whitelist" ]
|
|
args += [ "--suppress-removed-key-output" ]
|
|
}
|
|
args += [ rebase_path(invoker.output, root_build_dir) ]
|
|
args += rebase_path(invoker.sources, root_build_dir)
|
|
}
|
|
|
|
if (_copy_data_to_bundle) {
|
|
bundle_data(target_name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"testonly",
|
|
"visibility",
|
|
])
|
|
|
|
public_deps = [
|
|
":$_repack_target_name",
|
|
]
|
|
sources = [
|
|
invoker.output,
|
|
]
|
|
if (defined(invoker.bundle_output)) {
|
|
outputs = [
|
|
invoker.bundle_output,
|
|
]
|
|
} else {
|
|
outputs = [
|
|
"{{bundle_resources_dir}}/{{source_file_part}}",
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Repacks a set of .pak files for each locale.
|
|
#
|
|
# Parameters:
|
|
#
|
|
# input_locales [required]
|
|
# List of locale names to use as inputs.
|
|
#
|
|
# output_locales [required]
|
|
# A list containing the corresponding output names for each of the
|
|
# input names. Mac and iOS use different names in some cases.
|
|
#
|
|
# source_patterns [required]
|
|
# The pattern for pak files which need repacked. The filenames always end
|
|
# with "${locale}.pak".
|
|
# E.g.:
|
|
# ${root_gen_dir}/foo_ expands to ${root_gen_dir}/foo_zh-CN.pak
|
|
# when locale is zh-CN.
|
|
#
|
|
# output_dir [optional]
|
|
# Directory in which to put all pak files.
|
|
#
|
|
# deps [optional]
|
|
# visibility [optional]
|
|
# testonly [optional]
|
|
# copy_data_to_bundle [optional]
|
|
# repack_whitelist [optional]
|
|
# Normal meaning.
|
|
template("repack_locales") {
|
|
if (defined(invoker.output_dir)) {
|
|
_output_dir = invoker.output_dir
|
|
} else if (is_ios) {
|
|
_output_dir = "$target_gen_dir"
|
|
} else {
|
|
_output_dir = "$target_gen_dir/$target_name"
|
|
}
|
|
|
|
# GN can't handle invoker.output_locales[foo] (http://crbug.com/614747).
|
|
_output_locales = invoker.output_locales
|
|
|
|
# Collects all targets the loop generates.
|
|
_locale_targets = []
|
|
|
|
# This loop iterates over the input locales and also keeps a counter so it
|
|
# can simultaneously iterate over the output locales (using GN's very
|
|
# limited looping capabilities).
|
|
_current_index = 0
|
|
foreach(_input_locale, invoker.input_locales) {
|
|
_output_locale = _output_locales[_current_index]
|
|
|
|
# Compute the name of the target for the current file. Save it for the deps.
|
|
_current_name = "${target_name}_${_input_locale}"
|
|
_locale_targets += [ ":$_current_name" ]
|
|
|
|
repack(_current_name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"copy_data_to_bundle",
|
|
"bundle_output",
|
|
"deps",
|
|
"repack_whitelist",
|
|
"testonly",
|
|
])
|
|
visibility = [ ":${invoker.target_name}" ]
|
|
if (is_ios) {
|
|
output = "$_output_dir/${_output_locale}.lproj/locale.pak"
|
|
} else {
|
|
output = "$_output_dir/${_output_locale}.pak"
|
|
}
|
|
if (defined(copy_data_to_bundle) && copy_data_to_bundle) {
|
|
bundle_output =
|
|
"{{bundle_resources_dir}}/${_output_locale}.lproj/locale.pak"
|
|
}
|
|
set_sources_assignment_filter([])
|
|
sources = []
|
|
foreach(_pattern, invoker.source_patterns) {
|
|
sources += [ "${_pattern}${_input_locale}.pak" ]
|
|
}
|
|
}
|
|
|
|
_current_index = _current_index + 1
|
|
}
|
|
|
|
# The group that external targets depend on which collects all deps.
|
|
group(target_name) {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"visibility",
|
|
"testonly",
|
|
])
|
|
public_deps = _locale_targets
|
|
}
|
|
}
|