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") |
| 6 |
5 mac_app_script = "//build/config/mac/mac_app.py" | 7 mac_app_script = "//build/config/mac/mac_app.py" |
6 | 8 |
7 template("code_sign_mac") { | 9 template("code_sign_mac") { |
8 assert(defined(invoker.entitlements_path), | 10 assert(defined(invoker.entitlements_path), |
9 "The path to the entitlements .xcent file") | 11 "The path to the entitlements .xcent file") |
10 assert(defined(invoker.identity), "The code signing identity") | 12 assert(defined(invoker.identity), "The code signing identity") |
11 assert(defined(invoker.application_path), "The application to code sign") | 13 assert(defined(invoker.application_path), "The application to code sign") |
12 assert(defined(invoker.deps)) | 14 assert(defined(invoker.deps)) |
13 | 15 |
14 action(target_name) { | 16 action(target_name) { |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 } | 205 } |
204 | 206 |
205 # Top level group | 207 # Top level group |
206 | 208 |
207 group(group_gen_target_name) { | 209 group(group_gen_target_name) { |
208 deps = [ | 210 deps = [ |
209 ":$copy_all_target_name", | 211 ":$copy_all_target_name", |
210 ] | 212 ] |
211 } | 213 } |
212 } | 214 } |
| 215 |
| 216 # Template to package a shared library into a Mac framework bundle. |
| 217 # |
| 218 # Arguments |
| 219 # |
| 220 # info_plist: |
| 221 # string, path to the Info.plist file that will be used for the bundle. |
| 222 # |
| 223 # output_name: |
| 224 # (optional) string, name of the generated framework without the |
| 225 # .framework suffix. If omitted, defaults to target_name. |
| 226 # |
| 227 # framework_version: |
| 228 # (optional) string, version of the framework. Typically this is a |
| 229 # single letter, like "A". If omitted, the Versions/ subdirectory |
| 230 # structure will not be created, and build output will go directly |
| 231 # into the framework subdirectory. |
| 232 template("mac_framework") { |
| 233 assert(defined(invoker.deps), |
| 234 "Dependencies must be specified for $target_name") |
| 235 assert(defined(invoker.info_plist), |
| 236 "The Info.plist file must be specified for $target_name") |
| 237 |
| 238 _target_name = target_name |
| 239 _output_name = target_name |
| 240 if (defined(invoker.output_name)) { |
| 241 _output_name = invoker.output_name |
| 242 } |
| 243 _framework_name = _output_name + ".framework" |
| 244 _framework_version = "" |
| 245 if (defined(invoker.framework_version)) { |
| 246 _framework_version = invoker.framework_version |
| 247 } |
| 248 _framework_target = _output_name + "_framework" |
| 249 |
| 250 _shared_library_target = target_name + "_shared_library" |
| 251 _shared_library_bundle_data = _shared_library_target + "_bundle_data" |
| 252 |
| 253 shared_library(_shared_library_target) { |
| 254 visibility = [ ":$_shared_library_bundle_data" ] |
| 255 forward_variables_from(invoker, |
| 256 "*", |
| 257 [ |
| 258 "assert_no_deps", |
| 259 "data_deps", |
| 260 "info_plist", |
| 261 "output_name", |
| 262 "visibility", |
| 263 ]) |
| 264 } |
| 265 |
| 266 bundle_data(_shared_library_bundle_data) { |
| 267 visibility = [ ":$_framework_target" ] |
| 268 forward_variables_from(invoker, [ "testonly" ]) |
| 269 sources = [ |
| 270 "$root_out_dir/${shlib_prefix}${_shared_library_target}${shlib_extension}"
, |
| 271 ] |
| 272 outputs = [ |
| 273 "{{bundle_executable_dir}}/$_output_name", |
| 274 ] |
| 275 public_deps = [ |
| 276 ":$_shared_library_target", |
| 277 ] |
| 278 } |
| 279 |
| 280 _info_plist_target = target_name + "_info_plist" |
| 281 |
| 282 # TODO(rsesek): Process Info.plist variables. |
| 283 |
| 284 _info_plist_bundle_data = _info_plist_target + "_bundle_data" |
| 285 |
| 286 bundle_data(_info_plist_bundle_data) { |
| 287 visibility = [ ":$_framework_target" ] |
| 288 forward_variables_from(invoker, [ "testonly" ]) |
| 289 sources = [ |
| 290 invoker.info_plist, |
| 291 ] |
| 292 outputs = [ |
| 293 "{{bundle_root_dir}}/Info.plist", |
| 294 ] |
| 295 } |
| 296 |
| 297 create_bundle(_framework_target) { |
| 298 visibility = [ ":$_target_name" ] |
| 299 forward_variables_from(invoker, |
| 300 [ |
| 301 "data_deps", |
| 302 "deps", |
| 303 "public_deps", |
| 304 "testonly", |
| 305 "visibility", |
| 306 ]) |
| 307 |
| 308 if (!defined(deps)) { |
| 309 deps = [] |
| 310 } |
| 311 deps += [ |
| 312 ":$_info_plist_bundle_data", |
| 313 ":$_shared_library_bundle_data", |
| 314 ] |
| 315 |
| 316 bundle_root_dir = "$root_out_dir/$_framework_name" |
| 317 if (_framework_version != "") { |
| 318 bundle_root_dir += "/Versions/$_framework_version" |
| 319 } |
| 320 bundle_resources_dir = "$bundle_root_dir/Resources" |
| 321 bundle_executable_dir = "$bundle_root_dir" |
| 322 } |
| 323 |
| 324 if (_framework_version != "") { |
| 325 action(_target_name) { |
| 326 forward_variables_from(invoker, |
| 327 [ |
| 328 "visibility", |
| 329 "testonly", |
| 330 ]) |
| 331 script = "$root_out_dir/gyp-mac-tool" |
| 332 outputs = [ |
| 333 "$root_out_dir/$_framework_name/Versions/Current", |
| 334 ] |
| 335 args = [ |
| 336 "package-framework", |
| 337 "$_framework_name", |
| 338 "$_framework_version", |
| 339 ] |
| 340 deps = [ |
| 341 ":$_framework_target", |
| 342 ] |
| 343 } |
| 344 } else { |
| 345 group(_target_name) { |
| 346 forward_variables_from(invoker, |
| 347 [ |
| 348 "visibility", |
| 349 "testonly", |
| 350 ]) |
| 351 deps = [ |
| 352 ":$_framework_target", |
| 353 ] |
| 354 } |
| 355 } |
| 356 } |
OLD | NEW |