OLD | NEW |
---|---|
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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/android/config.gni") | 5 import("//build/config/android/config.gni") |
6 import("//build/config/android/internal_rules.gni") | 6 import("//build/config/android/internal_rules.gni") |
7 import("//tools/grit/grit_rule.gni") | 7 import("//tools/grit/grit_rule.gni") |
8 | 8 |
9 assert(is_android) | 9 assert(is_android) |
10 | 10 |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 # deps: Specifies the dependencies of this target. | 336 # deps: Specifies the dependencies of this target. |
337 # grd_file: Path to the .grd file to generate strings.xml from. | 337 # grd_file: Path to the .grd file to generate strings.xml from. |
338 # | 338 # |
339 # Example | 339 # Example |
340 # java_strings_grd("foo_strings_grd") { | 340 # java_strings_grd("foo_strings_grd") { |
341 # grd_file = "foo_strings.grd" | 341 # grd_file = "foo_strings.grd" |
342 # } | 342 # } |
343 template("java_strings_grd") { | 343 template("java_strings_grd") { |
344 base_path = "$target_gen_dir/$target_name" | 344 base_path = "$target_gen_dir/$target_name" |
345 resources_zip = base_path + ".resources.zip" | 345 resources_zip = base_path + ".resources.zip" |
346 build_config = base_path + ".build_config" | |
346 | 347 |
347 write_build_config("${target_name}__build_config") { | 348 write_build_config("${target_name}__build_config") { |
348 type = "android_resources" | 349 type = "android_resources" |
349 if (defined(invoker.deps)) { | 350 if (defined(invoker.deps)) { |
350 deps = invoker.deps | 351 deps = invoker.deps |
351 } | 352 } |
352 } | 353 } |
353 | 354 |
354 grit_target_name = "${target_name}__grit" | 355 grit_target_name = "${target_name}__grit" |
355 grit_output_dir = base_path + "_grit_output" | 356 grit_output_dir = base_path + "_grit_output" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
409 # ] | 410 # ] |
410 # srcjar_deps = [ | 411 # srcjar_deps = [ |
411 # ":foo_generated_enum" | 412 # ":foo_generated_enum" |
412 # ] | 413 # ] |
413 # jar_excluded_patterns = [ | 414 # jar_excluded_patterns = [ |
414 # "*/FooService.class", "*/FooService##*.class" | 415 # "*/FooService.class", "*/FooService##*.class" |
415 # ] | 416 # ] |
416 # } | 417 # } |
417 template("android_library") { | 418 template("android_library") { |
418 assert(defined(invoker.java_files)) | 419 assert(defined(invoker.java_files)) |
419 | |
420 base_path = "$target_gen_dir/$target_name" | 420 base_path = "$target_gen_dir/$target_name" |
421 build_config = base_path + ".build_config" | 421 build_config = base_path + ".build_config" |
422 jar_path = base_path + ".jar" | |
422 | 423 |
423 write_build_config("${target_name}__build_config") { | 424 write_build_config("${target_name}__build_config") { |
424 type = "android_library" | 425 type = "android_library" |
425 | 426 |
426 deps = [] | 427 deps = [] |
427 if (defined(invoker.deps)) { | 428 if (defined(invoker.deps)) { |
428 deps += invoker.deps | 429 deps += invoker.deps |
429 } | 430 } |
430 | 431 |
431 # base_path | 432 # base_path |
432 } | 433 } |
433 | 434 |
434 jar_path = base_path + ".jar" | |
435 android_java_library(target_name) { | 435 android_java_library(target_name) { |
436 java_files = invoker.java_files | 436 java_files = invoker.java_files |
437 build_config = build_config | 437 build_config = build_config |
438 | 438 |
439 if (defined(invoker.jar_excluded_patterns)) { | 439 if (defined(invoker.jar_excluded_patterns)) { |
440 jar_excluded_patterns = invoker.jar_excluded_patterns | 440 jar_excluded_patterns = invoker.jar_excluded_patterns |
441 } | 441 } |
442 | 442 |
443 if (defined(invoker.srcjar_deps)) { | 443 if (defined(invoker.srcjar_deps)) { |
444 srcjar_deps = invoker.srcjar_deps | 444 srcjar_deps = invoker.srcjar_deps |
445 } | 445 } |
446 } | 446 } |
447 } | 447 } |
448 | |
449 | |
450 # Declare an Android apk target | |
451 # | |
452 # This target creates an Android APK containing java code, resources, assets, | |
453 # and (possibly) native libraries. | |
454 # | |
455 # Variables | |
456 # android_manifest: Path to AndroidManifest.xml. | |
457 # deps: List of dependencies. All Android java resources and libraries in the | |
458 # "transitive closure" of these dependencies will be included in the apk. | |
459 # Note: this "transitive closure" actually only includes such targets if | |
460 # they are depended on through android_library or android_resources targets | |
461 # (and so not through builtin targets like 'action', 'group', etc). | |
462 # java_files: List of .java files to include in the apk. | |
463 # srcjar_deps: List of srcjar dependencies. The .java files in the srcjars | |
464 # will be added to java_files and be included in this apk. | |
465 # apk_name: Name for final apk. | |
466 # final_apk_path: Path to final built apk. Default is | |
467 # $root_out_dir/apks/$apk_name.apk. Setting this will override apk_name. | |
468 # native_libs: List paths of native libraries to include in this apk. If these | |
469 # libraries depend on other shared_library targets, those dependencies will | |
470 # also be included in the apk. | |
471 # | |
472 # Example | |
473 # android_apk("foo_apk") { | |
474 # android_manifest = "AndroidManifest.xml" | |
475 # java_files = [ | |
476 # "android/org/chromium/foo/FooApplication.java", | |
477 # "android/org/chromium/foo/FooActivity.java", | |
478 # ] | |
479 # deps = [ | |
480 # ":foo_support_java" | |
481 # ":foo_resources" | |
482 # ] | |
483 # srcjar_deps = [ | |
484 # ":foo_generated_enum" | |
485 # ] | |
486 # native_libs = [ | |
487 # native_lib_path | |
488 # ] | |
489 # } | |
490 template("android_apk") { | |
491 gen_dir = "$target_gen_dir/$target_name" | |
492 base_path = "$gen_dir/$target_name" | |
493 build_config = base_path + ".build_config" | |
494 resource_zip_path = base_path + ".resources.zip" | |
495 all_resources_zip_path = base_path + ".resources.all.zip" | |
496 resource_srcjar_path = base_path + ".resources.srcjar" | |
497 jar_path = base_path + ".jar" | |
498 | |
499 # Just mark these as used for now. | |
500 assert(!defined(invoker.native_libs) | |
newt (away)
2014/07/17 20:11:47
why not just add "|| true" ?
cjhopman
2014/07/18 00:58:01
Done.
| |
501 || invoker.native_libs == [] || invoker.native_libs != []) | |
502 assert(!defined(invoker.final_apk_path) | |
503 || invoker.final_apk_path == "" || invoker.final_apk_path != "") | |
504 | |
505 final_deps = [] | |
506 | |
507 # TODO(cjhopman): Remove this once we correctly generate the real | |
508 # NativeLibraries.java | |
509 srcjar_deps = [ "//base:base_native_libraries_gen" ] | |
510 if (defined(invoker.srcjar_deps)) { | |
511 srcjar_deps += invoker.srcjar_deps | |
512 } | |
513 | |
514 write_build_config("${target_name}__build_config") { | |
515 type = "android_apk" | |
516 srcjar = resource_srcjar_path | |
517 resources_zip = resource_zip_path | |
518 | |
519 if (defined(invoker.deps)) { | |
520 deps = invoker.deps | |
521 } | |
522 } | |
523 | |
524 final_deps += [":${target_name}__process_resources"] | |
525 process_resources("${target_name}__process_resources") { | |
526 android_manifest = invoker.android_manifest | |
527 | |
528 resource_dirs = ["//build/android/ant/empty/res"] | |
529 zip_path = resource_zip_path | |
530 srcjar_path = resource_srcjar_path | |
531 | |
532 generate_constant_ids = true | |
533 } | |
534 | |
535 final_deps += [":${target_name}__java"] | |
536 android_java_library("${target_name}__java") { | |
537 java_files = invoker.java_files | |
538 } | |
539 | |
540 # TODO(cjhopman): dex | |
541 # TODO(cjhopman): native | |
542 # TODO(cjhopman): create+finalize apk | |
543 | |
544 group(target_name) { | |
545 deps = final_deps | |
546 } | |
547 } | |
548 | |
549 | |
550 # Declare an Android gtest apk | |
551 # | |
552 # This target creates an Android apk for running gtest-based unittests. | |
553 # | |
554 # Variables | |
555 # deps: Specifies the dependencies of this target. These will be passed to | |
556 # the underlying android_apk invocation and should include the java and | |
557 # resource dependencies of the apk. | |
558 # unittests_dep: This should be the label of the gtest native target. This | |
559 # target must be defined previously in the same file. | |
560 # | |
561 # Example | |
562 # unittest_apk("foo_unittests_apk") { | |
563 # deps = [ ":foo_java", ":foo_resources" ] | |
564 # unittests_dep = ":foo_unittests" | |
565 # } | |
566 template("unittest_apk") { | |
567 test_suite_name = get_label_info(invoker.unittests_dep, "name") | |
568 android_apk(target_name) { | |
569 apk_name = test_suite_name | |
570 final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" | |
571 java_files = [ | |
572 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java" | |
573 ] | |
574 android_manifest = "//testing/android/java/AndroidManifest.xml" | |
575 unittests_outputs = get_target_outputs(invoker.unittests_dep) | |
576 native_libs = [unittests_outputs[0]] | |
577 if (defined(invoker.deps)) { | |
578 deps = invoker.deps | |
579 } | |
580 } | |
581 } | |
OLD | NEW |