Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1208)

Side by Side Diff: build/config/android/rules.gni

Issue 456493002: Add native libraries to gn apks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/config/android/internal_rules.gni ('k') | build/java_apk.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 depfile, 230 depfile,
231 gcc_template_output_pattern 231 gcc_template_output_pattern
232 ] 232 ]
233 233
234 args = [ 234 args = [
235 "--depfile", rebase_path(depfile, root_build_dir), 235 "--depfile", rebase_path(depfile, root_build_dir),
236 "--include-path", rebase_path(include_path, root_build_dir), 236 "--include-path", rebase_path(include_path, root_build_dir),
237 "--output", rebase_path(gen_dir, root_build_dir) + "/{{source_name_part}}. java", 237 "--output", rebase_path(gen_dir, root_build_dir) + "/{{source_name_part}}. java",
238 "--template={{source}}", 238 "--template={{source}}",
239 ] 239 ]
240
241 if (defined(invoker.defines)) {
242 foreach(def, invoker.defines) {
243 args += ["--defines", def]
244 }
245 }
240 } 246 }
241 247
242 apply_gcc_outputs = get_target_outputs(":${target_name}__apply_gcc") 248 apply_gcc_outputs = get_target_outputs(":${target_name}__apply_gcc")
243 base_gen_dir = get_label_info(":${target_name}__apply_gcc", "target_gen_dir") 249 base_gen_dir = get_label_info(":${target_name}__apply_gcc", "target_gen_dir")
244 250
245 srcjar_path = "${target_gen_dir}/${target_name}.srcjar" 251 srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
246 zip("${target_name}__zip_srcjar") { 252 zip("${target_name}__zip_srcjar") {
247 inputs = apply_gcc_outputs 253 inputs = apply_gcc_outputs
248 output = srcjar_path 254 output = srcjar_path
249 base_dir = base_gen_dir 255 base_dir = base_gen_dir
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 # } 501 # }
496 template("android_apk") { 502 template("android_apk") {
497 gen_dir = "$target_gen_dir/$target_name" 503 gen_dir = "$target_gen_dir/$target_name"
498 base_path = "$gen_dir/$target_name" 504 base_path = "$gen_dir/$target_name"
499 build_config = "$base_path.build_config" 505 build_config = "$base_path.build_config"
500 resources_zip_path = "$base_path.resources.zip" 506 resources_zip_path = "$base_path.resources.zip"
501 all_resources_zip_path = "$base_path.resources.all.zip" 507 all_resources_zip_path = "$base_path.resources.all.zip"
502 resource_srcjar_path = "$base_path.resources.srcjar" 508 resource_srcjar_path = "$base_path.resources.srcjar"
503 jar_path = "$base_path.jar" 509 jar_path = "$base_path.jar"
504 final_dex_path = "$gen_dir/classes.dex" 510 final_dex_path = "$gen_dir/classes.dex"
511 _template_name = target_name
505 512
506 # Just mark these as used for now. 513 _native_lib_version_name = ""
507 assert(!defined(invoker.native_libs) 514
508 || invoker.native_libs == [] || true) 515 _use_chromium_linker = false
516 _enable_chromium_linker_tests = false
517 _load_library_from_apk = false
518
519 _native_libs_dir = base_path + "/libs"
520 _native_libs = []
521 if (defined(invoker.native_libs)) {
522 _native_libs = invoker.native_libs
523 }
509 524
510 _keystore_path = android_default_keystore_path 525 _keystore_path = android_default_keystore_path
511 _keystore_name = android_default_keystore_name 526 _keystore_name = android_default_keystore_name
512 _keystore_password = android_default_keystore_password 527 _keystore_password = android_default_keystore_password
513 528
514 if (defined(invoker.keystore_path)) { 529 if (defined(invoker.keystore_path)) {
515 _keystore_path = invoker.keystore_path 530 _keystore_path = invoker.keystore_path
516 _keystore_name = invoker.keystore_name 531 _keystore_name = invoker.keystore_name
517 _keystore_password = invoker.keystore_password 532 _keystore_password = invoker.keystore_password
518 } 533 }
519 534
520 # TODO(cjhopman): Remove this once we correctly generate the real 535 _srcjar_deps = []
521 # NativeLibraries.java
522 srcjar_deps = [ "//base:base_native_libraries_gen" ]
523 if (defined(invoker.srcjar_deps)) { 536 if (defined(invoker.srcjar_deps)) {
524 srcjar_deps += invoker.srcjar_deps 537 _srcjar_deps += invoker.srcjar_deps
525 } 538 }
526 539
540 _rebased_build_config = rebase_path(build_config, root_build_dir)
541
527 write_build_config("${target_name}__build_config") { 542 write_build_config("${target_name}__build_config") {
528 type = "android_apk" 543 type = "android_apk"
529 srcjar = resource_srcjar_path 544 srcjar = resource_srcjar_path
530 dex_path = final_dex_path 545 dex_path = final_dex_path
531 resources_zip = resources_zip_path 546 resources_zip = resources_zip_path
532 547
533 if (defined(invoker.deps)) { 548 if (defined(invoker.deps)) {
534 deps = invoker.deps 549 deps = invoker.deps
535 } 550 }
551
552 native_libs = _native_libs
536 } 553 }
537 554
538 final_deps = [] 555 final_deps = []
539 556
540 final_deps += [":${target_name}__process_resources"] 557 final_deps += [":${target_name}__process_resources"]
541 process_resources("${target_name}__process_resources") { 558 process_resources("${target_name}__process_resources") {
542 android_manifest = invoker.android_manifest 559 android_manifest = invoker.android_manifest
543 560
544 resource_dirs = ["//build/android/ant/empty/res"] 561 resource_dirs = ["//build/android/ant/empty/res"]
545 zip_path = resources_zip_path 562 zip_path = resources_zip_path
546 srcjar_path = resource_srcjar_path 563 srcjar_path = resource_srcjar_path
547 564
548 generate_constant_ids = true 565 generate_constant_ids = true
549 } 566 }
550 567
568 java_cpp_template("${target_name}__native_libraries_java") {
569 package_name = "org/chromium/base/library_loader"
570 sources = [
571 "//base/android/java/templates/NativeLibraries.template",
572 ]
573 inputs = [
574 build_config,
575 ]
576
577 defines = [
578 "NATIVE_LIBRARIES_LIST=" +
579 "@FileArg($_rebased_build_config:native:java_libraries_list)",
580 "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"",
581 ]
582 if (_use_chromium_linker) {
583 defines += ["ENABLED_CHROMIUM_LINKER"]
584 }
585 if (_load_library_from_apk) {
586 defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"]
587 }
588 if (_enable_chromium_linker_tests) {
589 defines += ["ENABLE_CHROMIUM_LINKER_TESTS"]
590 }
591 }
592 _srcjar_deps += [ ":${target_name}__native_libraries_java" ]
593
551 rebased_build_config = rebase_path(build_config, root_build_dir) 594 rebased_build_config = rebase_path(build_config, root_build_dir)
552 595
553 final_deps += [":${target_name}__java"] 596 final_deps += [":${target_name}__java"]
554 android_java_library("${target_name}__java") { 597 android_java_library("${target_name}__java") {
555 java_files = invoker.java_files 598 java_files = invoker.java_files
599 srcjar_deps = _srcjar_deps
556 dex_path = base_path + ".dex.jar" 600 dex_path = base_path + ".dex.jar"
557 } 601 }
558 602
559 final_deps += [":${target_name}__final_dex"] 603 final_deps += [":${target_name}__final_dex"]
560 dex("${target_name}__final_dex") { 604 dex("${target_name}__final_dex") {
561 sources = [jar_path] 605 sources = [jar_path]
562 inputs = [build_config] 606 inputs = [build_config]
563 output = final_dex_path 607 output = final_dex_path
564 dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files" 608 dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files"
565 args = ["--inputs=@FileArg($dex_arg_key)"] 609 args = ["--inputs=@FileArg($dex_arg_key)"]
566 } 610 }
567 611
612 if (_native_libs != []) {
613 copy_ex("${target_name}__prepare_native") {
614 clear_dir = true
615 inputs = [build_config]
616 dest = "$_native_libs_dir/$android_app_abi"
617 args = [
618 "--files=@FileArg(${rebased_build_config}:native:libraries)",
619 ]
620 if (is_debug) {
621 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir)
622 args += [
623 "--files=[\"$rebased_gdbserver\"]"
624 ]
625 }
626 }
627 }
628
568 final_deps += [":${target_name}__create"] 629 final_deps += [":${target_name}__create"]
569 create_apk("${target_name}__create") { 630 create_apk("${target_name}__create") {
570 apk_path = invoker.final_apk_path 631 apk_path = invoker.final_apk_path
571 android_manifest = invoker.android_manifest 632 android_manifest = invoker.android_manifest
572 resources_zip = all_resources_zip_path 633 resources_zip = all_resources_zip_path
573 dex_path = final_dex_path 634 dex_path = final_dex_path
574 635
575 keystore_name = _keystore_name 636 keystore_name = _keystore_name
576 keystore_path = _keystore_path 637 keystore_path = _keystore_path
577 keystore_password = _keystore_password 638 keystore_password = _keystore_password
578 639
579 # TODO: native libs 640 if (_native_libs != []) {
641 native_libs_dir = _native_libs_dir
642 deps = [":${_template_name}__prepare_native"]
643 }
580 } 644 }
581 645
582 group(target_name) { 646 group(target_name) {
583 deps = final_deps 647 deps = final_deps
584 } 648 }
585 } 649 }
586 650
587 651
588 # Declare an Android gtest apk 652 # Declare an Android gtest apk
589 # 653 #
(...skipping 20 matching lines...) Expand all
610 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java" 674 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java"
611 ] 675 ]
612 android_manifest = "//testing/android/java/AndroidManifest.xml" 676 android_manifest = "//testing/android/java/AndroidManifest.xml"
613 unittests_outputs = get_target_outputs(invoker.unittests_dep) 677 unittests_outputs = get_target_outputs(invoker.unittests_dep)
614 native_libs = [unittests_outputs[0]] 678 native_libs = [unittests_outputs[0]]
615 if (defined(invoker.deps)) { 679 if (defined(invoker.deps)) {
616 deps = invoker.deps 680 deps = invoker.deps
617 } 681 }
618 } 682 }
619 } 683 }
OLDNEW
« no previous file with comments | « build/config/android/internal_rules.gni ('k') | build/java_apk.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698