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

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: 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
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=@FileArg($_rebased_build_config:native:java_librari es_list)",
579 "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"",
580 ]
581 if (_use_chromium_linker) {
582 defines += ["ENABLED_CHROMIUM_LINKER"]
583 }
584 if (_load_library_from_apk) {
585 defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"]
586 }
587 if (_enable_chromium_linker_tests) {
588 defines += ["ENABLE_CHROMIUM_LINKER_TESTS"]
589 }
590 }
591 _srcjar_deps += [ ":${target_name}__native_libraries_java" ]
592
551 rebased_build_config = rebase_path(build_config, root_build_dir) 593 rebased_build_config = rebase_path(build_config, root_build_dir)
552 594
553 final_deps += [":${target_name}__java"] 595 final_deps += [":${target_name}__java"]
554 android_java_library("${target_name}__java") { 596 android_java_library("${target_name}__java") {
555 java_files = invoker.java_files 597 java_files = invoker.java_files
598 srcjar_deps = _srcjar_deps
556 dex_path = base_path + ".dex.jar" 599 dex_path = base_path + ".dex.jar"
557 } 600 }
558 601
559 final_deps += [":${target_name}__final_dex"] 602 final_deps += [":${target_name}__final_dex"]
560 dex("${target_name}__final_dex") { 603 dex("${target_name}__final_dex") {
561 sources = [jar_path] 604 sources = [jar_path]
562 inputs = [build_config] 605 inputs = [build_config]
563 output = final_dex_path 606 output = final_dex_path
564 dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files" 607 dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files"
565 args = ["--inputs=@FileArg($dex_arg_key)"] 608 args = ["--inputs=@FileArg($dex_arg_key)"]
566 } 609 }
567 610
611 if (_native_libs != []) {
612 copy_ex("${target_name}__prepare_native") {
613 clear_dir = true
614 inputs = [build_config]
615 todir = "$_native_libs_dir/$android_app_abi"
616 args = [
617 "--files=@FileArg(${rebased_build_config}:native:libraries)",
618 ]
619 if (is_debug) {
620 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir)
621 args += [
622 "--files=[\"$rebased_gdbserver\"]"
623 ]
624 }
625 }
626 }
627
568 final_deps += [":${target_name}__create"] 628 final_deps += [":${target_name}__create"]
569 create_apk("${target_name}__create") { 629 create_apk("${target_name}__create") {
570 apk_path = invoker.final_apk_path 630 apk_path = invoker.final_apk_path
571 android_manifest = invoker.android_manifest 631 android_manifest = invoker.android_manifest
572 resources_zip = all_resources_zip_path 632 resources_zip = all_resources_zip_path
573 dex_path = final_dex_path 633 dex_path = final_dex_path
574 634
575 keystore_name = _keystore_name 635 keystore_name = _keystore_name
576 keystore_path = _keystore_path 636 keystore_path = _keystore_path
577 keystore_password = _keystore_password 637 keystore_password = _keystore_password
578 638
579 # TODO: native libs 639 if (_native_libs != []) {
640 native_libs_dir = _native_libs_dir
641 deps = [":${_template_name}__prepare_native"]
642 }
580 } 643 }
581 644
582 group(target_name) { 645 group(target_name) {
583 deps = final_deps 646 deps = final_deps
584 } 647 }
585 } 648 }
586 649
587 650
588 # Declare an Android gtest apk 651 # Declare an Android gtest apk
589 # 652 #
(...skipping 20 matching lines...) Expand all
610 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java" 673 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java"
611 ] 674 ]
612 android_manifest = "//testing/android/java/AndroidManifest.xml" 675 android_manifest = "//testing/android/java/AndroidManifest.xml"
613 unittests_outputs = get_target_outputs(invoker.unittests_dep) 676 unittests_outputs = get_target_outputs(invoker.unittests_dep)
614 native_libs = [unittests_outputs[0]] 677 native_libs = [unittests_outputs[0]]
615 if (defined(invoker.deps)) { 678 if (defined(invoker.deps)) {
616 deps = invoker.deps 679 deps = invoker.deps
617 } 680 }
618 } 681 }
619 } 682 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698