| Index: build/config/mac/rules.gni
|
| diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni
|
| index 32f3d99914d43f1bb0a161a2943faa95813522a8..7055e1eee1d368d552fd2a1b24a4b38b5aebe6cf 100644
|
| --- a/build/config/mac/rules.gni
|
| +++ b/build/config/mac/rules.gni
|
| @@ -2,6 +2,8 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +import("//build/toolchain/toolchain.gni")
|
| +
|
| mac_app_script = "//build/config/mac/mac_app.py"
|
|
|
| template("code_sign_mac") {
|
| @@ -210,3 +212,145 @@ template("mac_app") {
|
| ]
|
| }
|
| }
|
| +
|
| +# Template to package a shared library into a Mac framework bundle.
|
| +#
|
| +# Arguments
|
| +#
|
| +# info_plist:
|
| +# string, path to the Info.plist file that will be used for the bundle.
|
| +#
|
| +# output_name:
|
| +# (optional) string, name of the generated framework without the
|
| +# .framework suffix. If omitted, defaults to target_name.
|
| +#
|
| +# framework_version:
|
| +# (optional) string, version of the framework. Typically this is a
|
| +# single letter, like "A". If omitted, the Versions/ subdirectory
|
| +# structure will not be created, and build output will go directly
|
| +# into the framework subdirectory.
|
| +template("mac_framework") {
|
| + assert(defined(invoker.deps),
|
| + "Dependencies must be specified for $target_name")
|
| + assert(defined(invoker.info_plist),
|
| + "The Info.plist file must be specified for $target_name")
|
| +
|
| + _target_name = target_name
|
| + _output_name = target_name
|
| + if (defined(invoker.output_name)) {
|
| + _output_name = invoker.output_name
|
| + }
|
| + _framework_name = _output_name + ".framework"
|
| + _framework_version = ""
|
| + if (defined(invoker.framework_version)) {
|
| + _framework_version = invoker.framework_version
|
| + }
|
| + _framework_target = _output_name + "_framework"
|
| +
|
| + _shared_library_target = target_name + "_shared_library"
|
| + _shared_library_bundle_data = _shared_library_target + "_bundle_data"
|
| +
|
| + shared_library(_shared_library_target) {
|
| + visibility = [ ":$_shared_library_bundle_data" ]
|
| + forward_variables_from(invoker,
|
| + "*",
|
| + [
|
| + "assert_no_deps",
|
| + "data_deps",
|
| + "info_plist",
|
| + "output_name",
|
| + "visibility",
|
| + ])
|
| + }
|
| +
|
| + bundle_data(_shared_library_bundle_data) {
|
| + visibility = [ ":$_framework_target" ]
|
| + forward_variables_from(invoker, [ "testonly" ])
|
| + sources = [
|
| + "$root_out_dir/${shlib_prefix}${_shared_library_target}${shlib_extension}",
|
| + ]
|
| + outputs = [
|
| + "{{bundle_executable_dir}}/$_output_name",
|
| + ]
|
| + public_deps = [
|
| + ":$_shared_library_target",
|
| + ]
|
| + }
|
| +
|
| + _info_plist_target = target_name + "_info_plist"
|
| +
|
| + # TODO(rsesek): Process Info.plist variables.
|
| +
|
| + _info_plist_bundle_data = _info_plist_target + "_bundle_data"
|
| +
|
| + bundle_data(_info_plist_bundle_data) {
|
| + visibility = [ ":$_framework_target" ]
|
| + forward_variables_from(invoker, [ "testonly" ])
|
| + sources = [
|
| + invoker.info_plist,
|
| + ]
|
| + outputs = [
|
| + "{{bundle_root_dir}}/Info.plist",
|
| + ]
|
| + }
|
| +
|
| + create_bundle(_framework_target) {
|
| + visibility = [ ":$_target_name" ]
|
| + forward_variables_from(invoker,
|
| + [
|
| + "data_deps",
|
| + "deps",
|
| + "public_deps",
|
| + "testonly",
|
| + "visibility",
|
| + ])
|
| +
|
| + if (!defined(deps)) {
|
| + deps = []
|
| + }
|
| + deps += [
|
| + ":$_info_plist_bundle_data",
|
| + ":$_shared_library_bundle_data",
|
| + ]
|
| +
|
| + bundle_root_dir = "$root_out_dir/$_framework_name"
|
| + if (_framework_version != "") {
|
| + bundle_root_dir += "/Versions/$_framework_version"
|
| + }
|
| + bundle_resources_dir = "$bundle_root_dir/Resources"
|
| + bundle_executable_dir = "$bundle_root_dir"
|
| + }
|
| +
|
| + if (_framework_version != "") {
|
| + action(_target_name) {
|
| + forward_variables_from(invoker,
|
| + [
|
| + "visibility",
|
| + "testonly",
|
| + ])
|
| + script = "$root_out_dir/gyp-mac-tool"
|
| + outputs = [
|
| + "$root_out_dir/$_framework_name/Versions/Current",
|
| + ]
|
| + args = [
|
| + "package-framework",
|
| + "$_framework_name",
|
| + "$_framework_version",
|
| + ]
|
| + deps = [
|
| + ":$_framework_target",
|
| + ]
|
| + }
|
| + } else {
|
| + group(_target_name) {
|
| + forward_variables_from(invoker,
|
| + [
|
| + "visibility",
|
| + "testonly",
|
| + ])
|
| + deps = [
|
| + ":$_framework_target",
|
| + ]
|
| + }
|
| + }
|
| +}
|
|
|