Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import("//build/config/ios/ios_sdk.gni") | 5 import("//build/config/ios/ios_sdk.gni") |
| 6 import("//build/config/mac/rules.gni") | 6 import("//build/config/mac/rules.gni") |
| 7 | 7 |
| 8 # TODO(crbug.com/297668): refactor this template to extract common behaviour | 8 # TODO(crbug.com/297668): refactor this template to extract common behaviour |
| 9 # between OS X and iOS bundle generation, then create a generic "app" template | 9 # between OS X and iOS bundle generation, then create a generic "app" template |
| 10 # that forward to "executable" on all platform except iOS/OS X. | 10 # that forward to "executable" on all platform except iOS/OS X. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 "-s=IOS_DEPLOYMENT_TARGET=$ios_deployment_target", | 69 "-s=IOS_DEPLOYMENT_TARGET=$ios_deployment_target", |
| 70 "-s=IOS_PLATFORM_BUILD=$ios_platform_build", | 70 "-s=IOS_PLATFORM_BUILD=$ios_platform_build", |
| 71 "-s=IOS_PLATFORM_NAME=$ios_sdk_name", | 71 "-s=IOS_PLATFORM_NAME=$ios_sdk_name", |
| 72 "-s=IOS_PLATFORM_VERSION=$ios_sdk_version", | 72 "-s=IOS_PLATFORM_VERSION=$ios_sdk_version", |
| 73 "-s=IOS_SDK_BUILD=$ios_sdk_build", | 73 "-s=IOS_SDK_BUILD=$ios_sdk_build", |
| 74 "-s=IOS_SDK_NAME=$ios_sdk_name$ios_sdk_version", | 74 "-s=IOS_SDK_NAME=$ios_sdk_name$ios_sdk_version", |
| 75 "-s=IOS_SUPPORTED_PLATFORM=$ios_sdk_platform", | 75 "-s=IOS_SUPPORTED_PLATFORM=$ios_sdk_platform", |
| 76 "-s=PRODUCT_NAME=$_output_name", | 76 "-s=PRODUCT_NAME=$_output_name", |
| 77 "-s=XCODE_BUILD=$xcode_build", | 77 "-s=XCODE_BUILD=$xcode_build", |
| 78 "-s=XCODE_VERSION=$xcode_version", | 78 "-s=XCODE_VERSION=$xcode_version", |
| 79 "-o=" + rebase_path(outputs[0], root_build_dir), | 79 "-o=" + rebase_path(outputs[0], root_out_dir), |
| 80 ] + rebase_path(sources, root_build_dir) | 80 ] + rebase_path(sources, root_out_dir) |
| 81 args = [ "@{{response_file_name}}" ] | 81 args = [ "@{{response_file_name}}" ] |
| 82 } | 82 } |
| 83 | 83 |
| 84 bundle_data(_bundle_data_info_plist) { | 84 bundle_data(_bundle_data_info_plist) { |
| 85 forward_variables_from(invoker, [ "testonly" ]) | 85 forward_variables_from(invoker, [ "testonly" ]) |
| 86 visibility = [ ":$_target_name" ] | 86 visibility = [ ":$_target_name" ] |
| 87 sources = get_target_outputs(":$_generate_info_plist") | 87 sources = get_target_outputs(":$_generate_info_plist") |
| 88 outputs = [ | 88 outputs = [ |
| 89 "{{bundle_root_dir}}/Info.plist", | 89 "{{bundle_root_dir}}/Info.plist", |
| 90 ] | 90 ] |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 103 [ | 103 [ |
| 104 "assert_no_deps", | 104 "assert_no_deps", |
| 105 "code_signing_identity", | 105 "code_signing_identity", |
| 106 "data_deps", | 106 "data_deps", |
| 107 "entitlements_path", | 107 "entitlements_path", |
| 108 "info_plist", | 108 "info_plist", |
| 109 "output_name", | 109 "output_name", |
| 110 "visibility", | 110 "visibility", |
| 111 ]) | 111 ]) |
| 112 | 112 |
| 113 output_name = rebase_path("$target_gen_dir/$_output_name", root_build_dir) | 113 output_name = rebase_path("$target_gen_dir/$_output_name", root_out_dir) |
| 114 if (!defined(libs)) { | 114 if (!defined(libs)) { |
| 115 libs = [] | 115 libs = [] |
| 116 } | 116 } |
| 117 libs += [ "UIKit.framework" ] | 117 libs += [ "UIKit.framework" ] |
| 118 | 118 |
| 119 # TODO(crbug.com/599203) - iossim should probably be a data dependency | 119 # TODO(crbug.com/599203) - iossim should probably be a data dependency |
| 120 # of the create_bundle(target_name) target instead but at the moment | 120 # of the create_bundle(target_name) target instead but at the moment |
| 121 # create_bundle() is ignoring data_deps. | 121 # create_bundle() is ignoring data_deps. |
| 122 if (use_ios_simulator) { | 122 if (use_ios_simulator) { |
| 123 if (!defined(data_deps)) { | 123 if (!defined(data_deps)) { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 203 outputs = [ | 203 outputs = [ |
| 204 "$target_gen_dir/$_nib_filename/objects.nib", | 204 "$target_gen_dir/$_nib_filename/objects.nib", |
| 205 "$target_gen_dir/$_nib_filename/runtime.nib", | 205 "$target_gen_dir/$_nib_filename/runtime.nib", |
| 206 ] | 206 ] |
| 207 args = [ | 207 args = [ |
| 208 "--minimum-deployment-target", | 208 "--minimum-deployment-target", |
| 209 ios_deployment_target, | 209 ios_deployment_target, |
| 210 "--output", | 210 "--output", |
| 211 rebase_path("$target_gen_dir/$_nib_filename"), | 211 rebase_path("$target_gen_dir/$_nib_filename"), |
| 212 "--input", | 212 "--input", |
| 213 rebase_path(invoker.source, root_build_dir), | 213 rebase_path(invoker.source, root_out_dir), |
| 214 ] | 214 ] |
| 215 } | 215 } |
| 216 | 216 |
| 217 bundle_data(_target_name) { | 217 bundle_data(_target_name) { |
| 218 forward_variables_from(invoker, "*", [ "source" ]) | 218 forward_variables_from(invoker, "*", [ "source" ]) |
| 219 | 219 |
| 220 if (!defined(public_deps)) { | 220 if (!defined(public_deps)) { |
| 221 public_deps = [] | 221 public_deps = [] |
| 222 } | 222 } |
| 223 public_deps += [ ":$_compile_xib" ] | 223 public_deps += [ ":$_compile_xib" ] |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 239 # output_name: | 239 # output_name: |
| 240 # (optional) string, name of the generated framework without the | 240 # (optional) string, name of the generated framework without the |
| 241 # .framework suffix. If omitted, defaults to target_name. | 241 # .framework suffix. If omitted, defaults to target_name. |
| 242 # | 242 # |
| 243 # framework_version: | 243 # framework_version: |
| 244 # (optional) string, version of the framework. Typically this is a | 244 # (optional) string, version of the framework. Typically this is a |
| 245 # single letter, like "A". If omitted, the Versions/ subdirectory | 245 # single letter, like "A". If omitted, the Versions/ subdirectory |
| 246 # structure will not be created, and build output will go directly | 246 # structure will not be created, and build output will go directly |
| 247 # into the framework subdirectory. | 247 # into the framework subdirectory. |
| 248 # | 248 # |
| 249 # public_headers: | |
| 250 # (optional) list of paths to header file that needs to be copied | |
| 251 # into the framework bundle Headers subdirectory. If omitted or | |
| 252 # empty then the Headers subdirectory is not created. | |
| 253 # | |
| 254 # sources | |
| 255 # (optional) list of files. Needs to be defined and non-empty if | |
| 256 # public_headers is defined and non-empty. | |
| 257 # | |
| 249 # See "gn help shared_library" for more information on arguments supported | 258 # See "gn help shared_library" for more information on arguments supported |
| 250 # by shared library target. | 259 # by shared library target. |
| 251 template("ios_framework_bundle") { | 260 template("ios_framework_bundle") { |
| 261 if (defined(invoker.public_headers) && invoker.public_headers != []) { | |
| 262 assert(defined(invoker.sources) && invoker.sources != [], | |
| 263 "sources must be set for $target_name when public_headers is set") | |
| 264 | |
| 265 _target_name = target_name | |
| 266 _output_name = target_name | |
| 267 if (defined(invoker.output_name)) { | |
| 268 _output_name = invoker.output_name | |
| 269 } | |
| 270 | |
| 271 _public_headers = invoker.public_headers | |
| 272 _framework_name = _output_name + ".framework" | |
| 273 _framework_root = "$root_out_dir/$_framework_name" | |
| 274 | |
| 275 _header_map_filename = "$target_gen_dir/$_output_name.headers.hmap" | |
| 276 _framework_headers_target = _target_name + "_framework_headers" | |
| 277 | |
| 278 _compile_headers_map_target = _target_name + "_compile_headers_map" | |
| 279 action(_compile_headers_map_target) { | |
| 280 visibility = [ ":$_framework_headers_target" ] | |
| 281 script = "$root_out_dir/gyp-mac-tool" | |
| 282 outputs = [ | |
| 283 _header_map_filename, | |
| 284 ] | |
| 285 | |
| 286 set_sources_assignment_filter([ | |
|
brettw
2016/04/12 22:03:48
Can you comment the high-level thing you're doing
| |
| 287 "*.c", | |
| 288 "*.cc", | |
| 289 "*.cpp", | |
| 290 "*.m", | |
| 291 "*.mm", | |
| 292 ]) | |
| 293 sources = invoker.sources | |
| 294 set_sources_assignment_filter([]) | |
| 295 | |
| 296 args = [ | |
| 297 "compile-ios-framework-header-map", | |
| 298 rebase_path(_header_map_filename), | |
| 299 rebase_path(_framework_root, root_out_dir), | |
| 300 ] + rebase_path(sources, root_out_dir) | |
| 301 } | |
| 302 | |
| 303 _create_module_map_target = _target_name + "_module_map" | |
| 304 action(_create_module_map_target) { | |
| 305 visibility = [ ":$_framework_headers_target" ] | |
| 306 script = "$root_out_dir/gyp-mac-tool" | |
| 307 outputs = [ | |
| 308 "$_framework_root/Modules/module.modulemap", | |
| 309 ] | |
| 310 args = [ | |
| 311 "package-ios-framework", | |
| 312 rebase_path("$_framework_root", root_out_dir), | |
| 313 ] | |
| 314 } | |
| 315 | |
| 316 _copy_public_headers_target = _target_name + "_copy_public_headers" | |
| 317 copy(_copy_public_headers_target) { | |
| 318 visibility = [ ":$_framework_headers_target" ] | |
| 319 sources = _public_headers | |
| 320 outputs = [ | |
| 321 "$_framework_root/Headers/{{source_file_part}}", | |
| 322 ] | |
| 323 } | |
| 324 | |
| 325 _headers_map_config = _target_name + "_headers_map" | |
| 326 config(_headers_map_config) { | |
| 327 visibility = [ ":$_target_name" ] | |
| 328 include_dirs = [ _header_map_filename ] | |
| 329 } | |
| 330 | |
| 331 group(_framework_headers_target) { | |
| 332 deps = [ | |
| 333 ":$_compile_headers_map_target", | |
| 334 ":$_copy_public_headers_target", | |
| 335 ":$_create_module_map_target", | |
| 336 ] | |
| 337 } | |
| 338 } | |
| 339 | |
| 252 framework_bundle(target_name) { | 340 framework_bundle(target_name) { |
| 253 forward_variables_from(invoker, "*") | 341 forward_variables_from(invoker, "*", [ "public_headers" ]) |
| 342 | |
| 343 if (defined(_public_headers)) { | |
| 344 configs += [ ":$_headers_map_config" ] | |
| 345 if (!defined(deps)) { | |
| 346 deps = [] | |
| 347 } | |
| 348 deps += [ ":$_framework_headers_target" ] | |
| 349 } | |
| 254 } | 350 } |
| 255 } | 351 } |
| OLD | NEW |