mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
305 lines
8.7 KiB
Plaintext
305 lines
8.7 KiB
Plaintext
|
# 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.
|
||
|
|
||
|
# This file contains rules that are shared between Mac and iOS.
|
||
|
|
||
|
import("//build/toolchain/toolchain.gni")
|
||
|
import("//build/config/mac/symbols.gni")
|
||
|
|
||
|
if (is_mac) {
|
||
|
import("//build/config/mac/mac_sdk.gni")
|
||
|
} else if (is_ios) {
|
||
|
import("//build/config/ios/ios_sdk.gni")
|
||
|
}
|
||
|
|
||
|
# Convert plist file to given format.
|
||
|
#
|
||
|
# Arguments
|
||
|
#
|
||
|
# source:
|
||
|
# string, path to the plist file to convert
|
||
|
#
|
||
|
# output:
|
||
|
# string, path to the converted plist, must be under $root_build_dir
|
||
|
#
|
||
|
# format:
|
||
|
# string, the format to `plutil -convert` the plist to.
|
||
|
template("convert_plist") {
|
||
|
assert(defined(invoker.source), "source must be defined for $target_name")
|
||
|
assert(defined(invoker.output), "output must be defined for $target_name")
|
||
|
assert(defined(invoker.format), "format must be defined for $target_name")
|
||
|
|
||
|
action(target_name) {
|
||
|
forward_variables_from(invoker,
|
||
|
[
|
||
|
"visibility",
|
||
|
"testonly",
|
||
|
"deps",
|
||
|
])
|
||
|
|
||
|
script = "//build/config/mac/xcrun.py"
|
||
|
sources = [
|
||
|
invoker.source,
|
||
|
]
|
||
|
outputs = [
|
||
|
invoker.output,
|
||
|
]
|
||
|
args = []
|
||
|
if (!use_system_xcode) {
|
||
|
args += [
|
||
|
"--developer_dir",
|
||
|
hermetic_xcode_path,
|
||
|
]
|
||
|
}
|
||
|
args += [
|
||
|
"plutil",
|
||
|
"-convert",
|
||
|
invoker.format,
|
||
|
"-o",
|
||
|
rebase_path(invoker.output, root_build_dir),
|
||
|
rebase_path(invoker.source, root_build_dir),
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Template to merge multiple plist files and perform variable substitutions.
|
||
|
#
|
||
|
# Arguments
|
||
|
#
|
||
|
# plist_templates:
|
||
|
# string array, paths to plist files which will be used for the bundle.
|
||
|
#
|
||
|
# format:
|
||
|
# string, the format to `plutil -convert` the plist to when
|
||
|
# generating the output.
|
||
|
#
|
||
|
# substitutions:
|
||
|
# string array, 'key=value' pairs used to replace ${key} by value
|
||
|
# when generating the output plist file.
|
||
|
#
|
||
|
# output_name:
|
||
|
# string, name of the generated plist file.
|
||
|
template("compile_plist") {
|
||
|
assert(defined(invoker.plist_templates),
|
||
|
"A list of template plist files must be specified for $target_name")
|
||
|
assert(defined(invoker.format),
|
||
|
"The plist format must be specified for $target_name")
|
||
|
assert(defined(invoker.substitutions),
|
||
|
"A list of key=value pairs must be specified for $target_name")
|
||
|
assert(defined(invoker.output_name),
|
||
|
"The name of the output file must be specified for $target_name")
|
||
|
|
||
|
_output_name = invoker.output_name
|
||
|
_merged_name = get_path_info(_output_name, "dir") + "/" +
|
||
|
get_path_info(_output_name, "name") + "_merged." +
|
||
|
get_path_info(_output_name, "extension")
|
||
|
|
||
|
_merge_target = target_name + "_merge"
|
||
|
|
||
|
action(_merge_target) {
|
||
|
forward_variables_from(invoker,
|
||
|
[
|
||
|
"deps",
|
||
|
"testonly",
|
||
|
])
|
||
|
|
||
|
script = "//build/config/mac/plist_util.py"
|
||
|
sources = invoker.plist_templates
|
||
|
outputs = [
|
||
|
_merged_name,
|
||
|
]
|
||
|
args = [
|
||
|
"merge",
|
||
|
"-f=" + invoker.format,
|
||
|
"-o=" + rebase_path(_merged_name, root_build_dir),
|
||
|
] + rebase_path(invoker.plist_templates, root_build_dir)
|
||
|
}
|
||
|
|
||
|
action(target_name) {
|
||
|
forward_variables_from(invoker,
|
||
|
[
|
||
|
"testonly",
|
||
|
"visibility",
|
||
|
])
|
||
|
script = "//build/config/mac/plist_util.py"
|
||
|
sources = [
|
||
|
_merged_name,
|
||
|
]
|
||
|
outputs = [
|
||
|
_output_name,
|
||
|
]
|
||
|
args = [
|
||
|
"substitute",
|
||
|
"-f=" + invoker.format,
|
||
|
"-o=" + rebase_path(_output_name, root_build_dir),
|
||
|
"-t=" + rebase_path(_merged_name, root_build_dir),
|
||
|
]
|
||
|
foreach(_substitution, invoker.substitutions) {
|
||
|
args += [ "-s=$_substitution" ]
|
||
|
}
|
||
|
deps = [
|
||
|
":$_merge_target",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Template to merge multiple .entitlements files performing variable
|
||
|
# substitutions.
|
||
|
#
|
||
|
# Arguments
|
||
|
#
|
||
|
# entitlements_templates:
|
||
|
# string array, paths to entitlements files which will be used for the
|
||
|
# bundle.
|
||
|
#
|
||
|
# substitutions:
|
||
|
# string array, 'key=value' pairs used to replace ${key} by value
|
||
|
# when generating the output plist file.
|
||
|
#
|
||
|
# output_name:
|
||
|
# string, name of the generated entitlements file.
|
||
|
template("compile_entitlements") {
|
||
|
assert(defined(invoker.entitlements_templates),
|
||
|
"A list of template plist files must be specified for $target_name")
|
||
|
|
||
|
compile_plist(target_name) {
|
||
|
forward_variables_from(invoker,
|
||
|
"*",
|
||
|
[
|
||
|
"entitlements_templates",
|
||
|
"format",
|
||
|
"plist_templates",
|
||
|
])
|
||
|
|
||
|
plist_templates = invoker.entitlements_templates
|
||
|
|
||
|
# Entitlements files are always encoded in xml1.
|
||
|
format = "xml1"
|
||
|
|
||
|
# Entitlements files use unsubstitued variables, so define substitutions
|
||
|
# to leave those variables untouched.
|
||
|
if (!defined(substitutions)) {
|
||
|
substitutions = []
|
||
|
}
|
||
|
|
||
|
substitutions += [
|
||
|
"AppIdentifierPrefix=\$(AppIdentifierPrefix)",
|
||
|
"CFBundleIdentifier=\$(CFBundleIdentifier)",
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# The base template used to generate Info.plist files for iOS and Mac apps and
|
||
|
# frameworks.
|
||
|
#
|
||
|
# Arguments
|
||
|
#
|
||
|
# plist_templates:
|
||
|
# string array, paths to plist files which will be used for the bundle.
|
||
|
#
|
||
|
# executable_name:
|
||
|
# string, name of the generated target used for the product
|
||
|
# and executable name as specified in the output Info.plist.
|
||
|
#
|
||
|
# format:
|
||
|
# string, the format to `plutil -convert` the plist to when
|
||
|
# generating the output.
|
||
|
#
|
||
|
# extra_substitutions:
|
||
|
# (optional) string array, 'key=value' pairs for extra fields which are
|
||
|
# specified in a source Info.plist template.
|
||
|
#
|
||
|
# output_name:
|
||
|
# (optional) string, name of the generated plist file, default to
|
||
|
# "$target_gen_dir/$target_name.plist".
|
||
|
template("info_plist") {
|
||
|
assert(defined(invoker.executable_name),
|
||
|
"The executable_name must be specified for $target_name")
|
||
|
executable_name = invoker.executable_name
|
||
|
|
||
|
compile_plist(target_name) {
|
||
|
forward_variables_from(invoker,
|
||
|
[
|
||
|
"plist_templates",
|
||
|
"testonly",
|
||
|
"deps",
|
||
|
"visibility",
|
||
|
"format",
|
||
|
])
|
||
|
|
||
|
if (defined(invoker.output_name)) {
|
||
|
output_name = invoker.output_name
|
||
|
} else {
|
||
|
output_name = "$target_gen_dir/$target_name.plist"
|
||
|
}
|
||
|
|
||
|
substitutions = [
|
||
|
"BUILD_MACHINE_OS_BUILD=$machine_os_build",
|
||
|
"EXECUTABLE_NAME=$executable_name",
|
||
|
"GCC_VERSION=com.apple.compilers.llvm.clang.1_0",
|
||
|
"PRODUCT_NAME=$executable_name",
|
||
|
"XCODE_BUILD=$xcode_build",
|
||
|
"XCODE_VERSION=$xcode_version",
|
||
|
]
|
||
|
if (is_mac) {
|
||
|
substitutions += [ "MACOSX_DEPLOYMENT_TARGET=$mac_deployment_target" ]
|
||
|
} else if (is_ios) {
|
||
|
substitutions += [ "IOS_DEPLOYMENT_TARGET=$ios_deployment_target" ]
|
||
|
}
|
||
|
if (defined(invoker.extra_substitutions)) {
|
||
|
substitutions += invoker.extra_substitutions
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
# Template to compile .xib and .storyboard files.
|
||
|
#
|
||
|
# Arguments
|
||
|
#
|
||
|
# sources:
|
||
|
# list of string, sources to compile
|
||
|
#
|
||
|
# ibtool_flags:
|
||
|
# (optional) list of string, additional flags to pass to the ibtool
|
||
|
template("compile_ib_files") {
|
||
|
action_foreach(target_name) {
|
||
|
forward_variables_from(invoker,
|
||
|
[
|
||
|
"testonly",
|
||
|
"visibility",
|
||
|
])
|
||
|
assert(defined(invoker.sources),
|
||
|
"sources must be specified for $target_name")
|
||
|
assert(defined(invoker.output_extension),
|
||
|
"output_extension must be specified for $target_name")
|
||
|
|
||
|
ibtool_flags = []
|
||
|
if (defined(invoker.ibtool_flags)) {
|
||
|
ibtool_flags = invoker.ibtool_flags
|
||
|
}
|
||
|
|
||
|
_output_extension = invoker.output_extension
|
||
|
|
||
|
script = "//build/config/mac/compile_ib_files.py"
|
||
|
sources = invoker.sources
|
||
|
outputs = [
|
||
|
"$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension",
|
||
|
]
|
||
|
args = [
|
||
|
"--input",
|
||
|
"{{source}}",
|
||
|
"--output",
|
||
|
rebase_path(
|
||
|
"$target_gen_dir/$target_name/{{source_name_part}}.$_output_extension"),
|
||
|
]
|
||
|
if (!use_system_xcode) {
|
||
|
args += [
|
||
|
"--developer_dir",
|
||
|
hermetic_xcode_path,
|
||
|
]
|
||
|
}
|
||
|
args += ibtool_flags
|
||
|
}
|
||
|
}
|