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/toolchain/toolchain.gni") | 5 import("//build/toolchain/toolchain.gni") |
| 6 import("//build/config/mac/mac_sdk.gni") | |
| 7 import("//build/util/version.gni") | |
| 6 | 8 |
| 7 # This is used as the base template for both iOS and Mac frameworks.. | 9 # Used to generate an Info.plist file for iOS and Mac apps and frameworks. |
|
Robert Sesek
2016/04/19 14:49:04
Also document the Arguments as the other templates
Patti Lor
2016/04/21 08:02:09
Done.
| |
| 10 template("info_plist") { | |
| 11 _generate_info_plist = target_name + "_action" | |
| 12 | |
| 13 action(_generate_info_plist) { | |
| 14 script = "//build/config/mac/gen_plist.py" | |
| 15 sources = [ | |
| 16 "//build/config/mac/BuildInfo.plist", | |
| 17 invoker.info_plist, | |
| 18 ] | |
| 19 outputs = [ | |
| 20 "$target_gen_dir/Info.plist", | |
| 21 ] | |
| 22 extra_args = [] | |
| 23 if (defined(invoker.extra_substitutions)) { | |
| 24 foreach(substitution, invoker.extra_substitutions) { | |
| 25 extra_args += [ "-s=$substitution" ] | |
| 26 } | |
| 27 } | |
| 28 response_file_contents = | |
| 29 extra_args + [ | |
| 30 "-s=MAC_SDK_BUILD=$mac_sdk_build", | |
| 31 "-s=MAC_SDK_NAME=$mac_sdk_name$mac_sdk_version", | |
| 32 "-s=BUILD_MACHINE_OS_BUILD=$machine_os_build", | |
| 33 "-s=GCC_VERSION=com.apple.compilers.llvm.clang.1_0", | |
| 34 "-s=XCODE_BUILD=$xcode_build", | |
| 35 "-s=XCODE_VERSION=$xcode_version", | |
| 36 "-s=VERSION=$chrome_version_full", | |
| 37 "-s=VERSION_BUILD=$chrome_version_build", | |
| 38 "-o=" + rebase_path(outputs[0], root_build_dir), | |
| 39 ] + rebase_path(sources, root_build_dir) | |
| 40 args = [ "@{{response_file_name}}" ] | |
| 41 } | |
| 42 | |
| 43 source_set(target_name) { | |
| 44 sources = get_target_outputs(":$_generate_info_plist") | |
| 45 public_deps = [ | |
| 46 ":$_generate_info_plist", | |
| 47 ] | |
| 48 } | |
| 49 } | |
| 50 | |
| 51 # This is used as the base template for both iOS and Mac frameworks. | |
| 8 # | 52 # |
| 9 # Arguments | 53 # Arguments |
| 10 # | 54 # |
| 11 # output_name: | 55 # output_name: |
| 12 # (optional) string, name of the generated framework without the | 56 # (optional) string, name of the generated framework without the |
| 13 # .framework suffix. If omitted, defaults to target_name. | 57 # .framework suffix. If omitted, defaults to target_name. |
| 14 # | 58 # |
| 15 # framework_version: | 59 # framework_version: |
| 16 # (optional) string, version of the framework. Typically this is a | 60 # (optional) string, version of the framework. Typically this is a |
| 17 # single letter, like "A". If omitted, the Versions/ subdirectory | 61 # single letter, like "A". If omitted, the Versions/ subdirectory |
| 18 # structure will not be created, and build output will go directly | 62 # structure will not be created, and build output will go directly |
| 19 # into the framework subdirectory. | 63 # into the framework subdirectory. |
| 20 # | 64 # |
| 21 # See "gn help shared_library" for more information on arguments supported | 65 # See "gn help shared_library" for more information on arguments supported |
| 22 # by shared library target. | 66 # by shared library target. |
| 23 template("framework_bundle") { | 67 template("framework_bundle") { |
| 24 _target_name = target_name | 68 _target_name = target_name |
| 25 _output_name = target_name | 69 _output_name = target_name |
| 26 if (defined(invoker.output_name)) { | 70 if (defined(invoker.output_name)) { |
| 27 _output_name = invoker.output_name | 71 _output_name = invoker.output_name |
| 28 } | 72 } |
| 29 | 73 |
| 30 # If the framework is unversionned, the final _target_name will be the | 74 # If the framework is unversioned, the final _target_name will be the |
| 31 # create_bundle(_framework_target), otherwise an action with the name | 75 # create_bundle(_framework_target), otherwise an action with the name |
| 32 # _target_name will depends on the the create_bundle() in order to prepare | 76 # _target_name will depends on the the create_bundle() in order to prepare |
| 33 # the versioned directory structure. | 77 # the versioned directory structure. |
| 34 _framework_target = _target_name | 78 _framework_target = _target_name |
| 35 _framework_name = _output_name + ".framework" | 79 _framework_name = _output_name + ".framework" |
| 36 _framework_root_dir = "$root_out_dir/$_framework_name" | 80 _framework_root_dir = "$root_out_dir/$_framework_name" |
| 37 if (defined(invoker.framework_version) && invoker.framework_version != "") { | 81 if (defined(invoker.framework_version) && invoker.framework_version != "") { |
| 38 _framework_version = invoker.framework_version | 82 _framework_version = invoker.framework_version |
| 39 _framework_root_dir += "/Versions/$_framework_version" | 83 _framework_root_dir += "/Versions/$_framework_version" |
| 40 _framework_target = _target_name + "_create_bundle" | 84 _framework_target = _target_name + "_create_bundle" |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 # See "gn help shared_library" for more information on arguments supported | 186 # See "gn help shared_library" for more information on arguments supported |
| 143 # by shared library target. | 187 # by shared library target. |
| 144 template("mac_framework_bundle") { | 188 template("mac_framework_bundle") { |
| 145 assert(defined(invoker.deps), | 189 assert(defined(invoker.deps), |
| 146 "Dependencies must be specified for $target_name") | 190 "Dependencies must be specified for $target_name") |
| 147 assert(defined(invoker.info_plist), | 191 assert(defined(invoker.info_plist), |
| 148 "The Info.plist file must be specified for $target_name") | 192 "The Info.plist file must be specified for $target_name") |
| 149 | 193 |
| 150 _info_plist_target = target_name + "_info_plist" | 194 _info_plist_target = target_name + "_info_plist" |
| 151 | 195 |
| 152 # TODO(rsesek): Process Info.plist variables. | 196 # TODO(rsesek): Process Info.plist variables. |
|
Robert Sesek
2016/04/19 14:49:04
Remove, since you're doing it :).
Patti Lor
2016/04/21 08:02:09
Done.
| |
| 197 info_plist(_info_plist_target) { | |
| 198 forward_variables_from(invoker, [ "info_plist" ]) | |
| 199 } | |
| 153 | 200 |
| 154 _info_plist_bundle_data = _info_plist_target + "_bundle_data" | 201 _info_plist_bundle_data = _info_plist_target + "_bundle_data" |
| 155 | 202 |
| 156 bundle_data(_info_plist_bundle_data) { | 203 bundle_data(_info_plist_bundle_data) { |
| 157 forward_variables_from(invoker, [ "testonly" ]) | 204 forward_variables_from(invoker, [ "testonly" ]) |
| 158 sources = [ | 205 sources = [ |
| 206 "$target_gen_dir/Info.plist", | |
| 159 invoker.info_plist, | 207 invoker.info_plist, |
| 160 ] | 208 ] |
| 161 outputs = [ | 209 outputs = [ |
| 162 "{{bundle_root_dir}}/Info.plist", | 210 "{{bundle_root_dir}}/Info.plist", |
| 163 ] | 211 ] |
| 212 public_deps = [ | |
| 213 ":$_info_plist_target", | |
| 214 ] | |
| 164 } | 215 } |
| 165 | 216 |
| 166 framework_bundle(target_name) { | 217 framework_bundle(target_name) { |
| 167 forward_variables_from(invoker, "*", [ "info_plist" ]) | 218 forward_variables_from(invoker, "*", [ "info_plist" ]) |
| 168 | 219 |
| 169 if (!defined(deps)) { | 220 if (!defined(deps)) { |
| 170 deps = [] | 221 deps = [] |
| 171 } | 222 } |
| 172 deps += [ ":$_info_plist_bundle_data" ] | 223 deps += [ ":$_info_plist_bundle_data" ] |
| 173 } | 224 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 outputs = [ | 271 outputs = [ |
| 221 "{{bundle_executable_dir}}/$_output_name", | 272 "{{bundle_executable_dir}}/$_output_name", |
| 222 ] | 273 ] |
| 223 public_deps = [ | 274 public_deps = [ |
| 224 ":$_executable_target", | 275 ":$_executable_target", |
| 225 ] | 276 ] |
| 226 } | 277 } |
| 227 | 278 |
| 228 _info_plist_target = target_name + "_info_plist" | 279 _info_plist_target = target_name + "_info_plist" |
| 229 | 280 |
| 230 # TODO(rsesek): Process Info.plist variables. | 281 # TODO(rsesek): Process Info.plist variables. |
|
Robert Sesek
2016/04/19 14:49:04
Remove.
Patti Lor
2016/04/21 08:02:09
Done.
| |
| 282 info_plist(_info_plist_target) { | |
| 283 forward_variables_from(invoker, [ "info_plist" ]) | |
| 284 if (!defined(extra_substitutions)) { | |
|
Robert Sesek
2016/04/19 14:49:04
Since you're not forward_varaibles_from()-ing extr
Patti Lor
2016/04/21 08:02:09
Done.
| |
| 285 extra_substitutions = [] | |
| 286 } | |
| 287 extra_substitutions += [ | |
| 288 "PRODUCT_NAME=$_output_name", | |
|
Robert Sesek
2016/04/19 14:49:04
These subs are needed in the mac_framework_bundle
Patti Lor
2016/04/21 08:02:09
Done.
| |
| 289 "EXECUTABLE_NAME=$_output_name", | |
| 290 ] | |
| 291 } | |
| 231 | 292 |
| 232 _info_plist_bundle_data = _info_plist_target + "_bundle_data" | 293 _info_plist_bundle_data = _info_plist_target + "_bundle_data" |
| 233 | 294 |
| 234 bundle_data(_info_plist_bundle_data) { | 295 bundle_data(_info_plist_bundle_data) { |
| 235 forward_variables_from(invoker, [ "testonly" ]) | 296 forward_variables_from(invoker, [ "testonly" ]) |
| 236 visibility = [ ":$_target_name" ] | 297 visibility = [ ":$_target_name" ] |
| 237 sources = [ | 298 sources = [ |
| 299 "$target_gen_dir/Info.plist", | |
| 238 invoker.info_plist, | 300 invoker.info_plist, |
| 239 ] | 301 ] |
| 240 outputs = [ | 302 outputs = [ |
| 241 "{{bundle_root_dir}}/Info.plist", | 303 "{{bundle_root_dir}}/Info.plist", |
| 242 ] | 304 ] |
| 305 public_deps = [ | |
| 306 ":$_info_plist_target", | |
| 307 ] | |
| 243 } | 308 } |
| 244 | 309 |
| 245 create_bundle(_target_name) { | 310 create_bundle(_target_name) { |
| 246 forward_variables_from(invoker, | 311 forward_variables_from(invoker, |
| 247 [ | 312 [ |
| 248 "data_deps", | 313 "data_deps", |
| 249 "deps", | 314 "deps", |
| 250 "public_deps", | 315 "public_deps", |
| 251 "testonly", | 316 "testonly", |
| 252 ]) | 317 ]) |
| 253 if (!defined(deps)) { | 318 if (!defined(deps)) { |
| 254 deps = [] | 319 deps = [] |
| 255 } | 320 } |
| 256 deps += [ | 321 deps += [ |
| 257 ":$_executable_bundle_data", | 322 ":$_executable_bundle_data", |
| 258 ":$_info_plist_bundle_data", | 323 ":$_info_plist_bundle_data", |
| 259 ] | 324 ] |
| 260 | 325 |
| 261 bundle_root_dir = "$root_out_dir/${_output_name}.app/Contents" | 326 bundle_root_dir = "$root_out_dir/${_output_name}.app/Contents" |
| 262 bundle_resources_dir = "$bundle_root_dir/Resources" | 327 bundle_resources_dir = "$bundle_root_dir/Resources" |
| 263 bundle_executable_dir = "$bundle_root_dir/MacOS" | 328 bundle_executable_dir = "$bundle_root_dir/MacOS" |
| 264 } | 329 } |
| 265 } | 330 } |
| OLD | NEW |