Chromium Code Reviews| Index: build/config/mac/rules.gni |
| diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni |
| index 32f3d99914d43f1bb0a161a2943faa95813522a8..3121bc29a9150277b5c2c2f6c36b514a12b15d75 100644 |
| --- a/build/config/mac/rules.gni |
| +++ b/build/config/mac/rules.gni |
| @@ -210,3 +210,136 @@ template("mac_app") { |
| ] |
| } |
| } |
| + |
| +template("mac_framework") { |
|
sdefresne
2016/04/05 22:59:48
Can you document the supported parameters, in part
Robert Sesek
2016/04/06 18:40:04
Done.
|
| + 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/lib$_shared_library_target.dylib", |
|
sdefresne
2016/04/05 22:59:48
Should use "${shlib_extension}" (from build/toolch
Robert Sesek
2016/04/06 18:40:03
Done.
|
| + ] |
| + outputs = [ |
| + "{{bundle_executable_dir}}/$_output_name", |
| + ] |
| + public_deps = [ |
| + ":$_shared_library_target", |
| + ] |
| + } |
| + |
| + _info_plist_target = target_name + "_info_plist" |
| + |
| + # TODO(rsesek): Process Info.plist variables. |
|
sdefresne
2016/04/05 22:59:48
Can you use what exists for iOS?
Robert Sesek
2016/04/06 18:40:03
We don't have the variables extracted for use yet,
|
| + |
| + _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", |
| + ] |
| + } |
| + |
| + _package_target = target_name + "_package" |
| + |
| + create_bundle(_framework_target) { |
| + visibility = [ ":$_package_target" ] |
| + 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(_package_target) { |
| + visibility = [ ":$_target_name" ] |
| + forward_variables_from(invoker, [ "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(_package_target) { |
| + visibility = [ ":$_target_name" ] |
| + forward_variables_from(invoker, [ "testonly" ]) |
| + deps = [ |
| + ":$_framework_target", |
| + ] |
| + } |
| + } |
| + |
| + group(_target_name) { |
| + forward_variables_from(invoker, |
| + [ |
| + "visbility", |
| + "testonly", |
| + ]) |
| + deps = [ |
| + ":$_package_target", |
| + ] |
| + } |
| +} |