Chromium Code Reviews| Index: build/config/mac/rules.gni |
| diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni |
| index cca8f6da44e8f3b6be95f62cc71f3164d881d459..f3f43a1d0df69cd10d6f30bf5e7588a0ea8fe30c 100644 |
| --- a/build/config/mac/rules.gni |
| +++ b/build/config/mac/rules.gni |
| @@ -4,13 +4,10 @@ |
| import("//build/toolchain/toolchain.gni") |
| -# Template to package a shared library into a Mac framework bundle. |
| +# Template to package a shared library into a framework bundle. |
|
Robert Sesek
2016/04/11 15:35:26
"This is used as the base template for both iOS an
sdefresne
2016/04/12 11:51:19
Done.
|
| # |
| # 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. |
| @@ -20,23 +17,24 @@ import("//build/toolchain/toolchain.gni") |
| # 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") |
| - |
| +# |
| +# See "gn help shared_library" for more information on arguments supported |
| +# by shared library target. |
| +template("framework_bundle") { |
| _target_name = target_name |
| _output_name = target_name |
| if (defined(invoker.output_name)) { |
| _output_name = invoker.output_name |
| } |
| + |
| + _framework_target = _target_name |
|
Robert Sesek
2016/04/11 15:35:26
Leave a comment here along the lines of:
"If the
sdefresne
2016/04/12 11:51:19
Done.
|
| _framework_name = _output_name + ".framework" |
| - _framework_version = "" |
| - if (defined(invoker.framework_version)) { |
| + _framework_root_dir = "$root_out_dir/$_framework_name" |
| + if (defined(invoker.framework_version) && invoker.framework_version != "") { |
| _framework_version = invoker.framework_version |
| + _framework_root_dir += "/Versions/$_framework_version" |
| + _framework_target = _target_name + "_create_bundle" |
| } |
| - _framework_target = _output_name + "_framework" |
| _shared_library_target = target_name + "_shared_library" |
| _shared_library_bundle_data = _shared_library_target + "_bundle_data" |
| @@ -48,9 +46,7 @@ template("mac_framework") { |
| [ |
| "assert_no_deps", |
| "data_deps", |
| - "info_plist", |
| "output_name", |
| - "visibility", |
|
Robert Sesek
2016/04/11 15:35:26
Does the local visibility definition override here
sdefresne
2016/04/12 11:51:19
I incorrectly removed "visibility" and "info_plist
|
| ]) |
| } |
| @@ -68,51 +64,32 @@ template("mac_framework") { |
| ] |
| } |
| - _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(_framework_version)) { |
| + visibility = [ ":$_target_name" ] |
| + } else { |
| + forward_variables_from(invoker, [ "visibility" ]) |
| + } |
| + |
| if (!defined(deps)) { |
| deps = [] |
| } |
| - deps += [ |
| - ":$_info_plist_bundle_data", |
| - ":$_shared_library_bundle_data", |
| - ] |
| + deps += [ ":$_shared_library_bundle_data" ] |
| - bundle_root_dir = "$root_out_dir/$_framework_name" |
| - if (_framework_version != "") { |
| - bundle_root_dir += "/Versions/$_framework_version" |
| - } |
| + bundle_root_dir = _framework_root_dir |
| bundle_resources_dir = "$bundle_root_dir/Resources" |
| bundle_executable_dir = "$bundle_root_dir" |
| } |
| - if (_framework_version != "") { |
| + if (defined(_framework_version)) { |
| action(_target_name) { |
| forward_variables_from(invoker, |
| [ |
| @@ -132,16 +109,56 @@ template("mac_framework") { |
| ":$_framework_target", |
| ] |
| } |
| - } else { |
| - group(_target_name) { |
| - forward_variables_from(invoker, |
| - [ |
| - "visibility", |
| - "testonly", |
| - ]) |
| - deps = [ |
| - ":$_framework_target", |
| - ] |
| + } |
| +} |
| + |
| +# 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. |
| +# |
| +# See "gn help shared_library" for more information on arguments supported |
| +# by shared library target. |
| +template("mac_framework_bundle") { |
| + 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") |
| + |
| + _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) { |
| + forward_variables_from(invoker, [ "testonly" ]) |
| + sources = [ |
| + invoker.info_plist, |
| + ] |
| + outputs = [ |
| + "{{bundle_root_dir}}/Info.plist", |
| + ] |
| + } |
| + |
| + framework_bundle(target_name) { |
| + forward_variables_from(invoker, "*", [ "info_plist" ]) |
| + |
| + if (!defined(deps)) { |
| + deps = [] |
| } |
| + deps += [ ":$_info_plist_bundle_data" ] |
| } |
| } |