1package { 2 default_applicable_licenses: ["Android-Apache-2.0"], 3} 4 5microdroid_shell_and_utilities = [ 6 "reboot", 7 "sh", 8 "strace", 9 "toolbox", 10 "toybox", 11] 12 13microdroid_rootdirs = [ 14 "dev", 15 "proc", 16 "sys", 17 18 "system", 19 "debug_ramdisk", 20 "mnt", 21 "data", 22 23 "apex", 24 "linkerconfig", 25 "second_stage_resources", 26 27 // Ideally we should only create the /vendor for Microdroid VMs that will mount /vendor, but 28 // for the time being we will just create it unconditionally. 29 "vendor", 30] 31 32microdroid_symlinks = [ 33 { 34 target: "/sys/kernel/debug", 35 name: "d", 36 }, 37 { 38 target: "/system/etc", 39 name: "etc", 40 }, 41 { 42 target: "/system/bin", 43 name: "bin", 44 }, 45] 46 47android_system_image { 48 name: "microdroid", 49 use_avb: true, 50 avb_private_key: ":microdroid_sign_key", 51 avb_algorithm: "SHA256_RSA4096", 52 avb_hash_algorithm: "sha256", 53 use_fec: false, 54 partition_name: "system", 55 deps: [ 56 "init_second_stage.microdroid", 57 "microdroid_build_prop", 58 "microdroid_init_debug_policy", 59 "microdroid_init_rc", 60 "microdroid_ueventd_rc", 61 "microdroid_launcher", 62 63 "libbinder_ndk", 64 "libstdc++", 65 66 // "com.android.adbd" requires these, 67 "libadbd_auth", 68 "libadbd_fs", 69 70 // "com.android.art" requires 71 "heapprofd_client_api", 72 "libartpalette-system", 73 74 "apexd.microdroid", 75 "debuggerd", 76 "linker", 77 "cgroups.json", 78 "task_profiles.json", 79 "public.libraries.android.txt", 80 81 "microdroid_event-log-tags", 82 "microdroid_file_contexts", 83 "microdroid_manifest", 84 "microdroid_property_contexts", 85 "e2fsck.microdroid", 86 "mke2fs.microdroid", 87 "resize2fs.microdroid", 88 "microdroid_fstab", 89 90 "libvm_payload", // used by payload to interact with microdroid manager 91 92 "prng_seeder_microdroid", 93 94 // Binaries required to capture traces in Microdroid. 95 "atrace", 96 "traced", 97 "traced_probes", 98 "perfetto", 99 ] + select(release_flag("RELEASE_AVF_ENABLE_MULTI_TENANT_MICRODROID_VM"), { 100 true: [ 101 "microdroid_etc_passwd", 102 "microdroid_etc_group", 103 ], 104 default: [], 105 }) + microdroid_shell_and_utilities, 106 multilib: { 107 common: { 108 deps: [ 109 // non-updatable & mandatory apexes 110 "com.android.runtime", 111 112 "microdroid_crashdump_initrd", 113 "microdroid_precompiled_sepolicy", 114 ], 115 }, 116 lib64: { 117 deps: [ 118 "apkdmverity", 119 "authfs", 120 "authfs_service", 121 "encryptedstore", 122 "microdroid_kexec", 123 "microdroid_manager", 124 "zipfuse", 125 ] + select(release_flag("RELEASE_AVF_ENABLE_DICE_CHANGES"), { 126 true: ["derive_microdroid_vendor_dice_node"], 127 default: [], 128 }), 129 }, 130 }, 131 arch: { 132 // b/273792258: These could be in multilib.lib64 except that 133 // microdroid_crashdump_kernel doesn't exist for riscv64 yet 134 arm64: { 135 deps: [ 136 "microdroid_crashdump_kernel", 137 ], 138 }, 139 x86_64: { 140 deps: [ 141 "microdroid_crashdump_kernel", 142 ], 143 }, 144 }, 145 linker_config: { 146 gen_linker_config: true, 147 linker_config_srcs: ["linker.config.json"], 148 }, 149 base_dir: "system", 150 dirs: microdroid_rootdirs + select(release_flag("RELEASE_AVF_ENABLE_DICE_CHANGES"), { 151 true: ["microdroid_resources"], 152 default: [], 153 }), 154 symlinks: microdroid_symlinks, 155 file_contexts: ":microdroid_file_contexts.gen", 156 // For deterministic output, use fake_timestamp, hard-coded uuid 157 fake_timestamp: "1611569676", 158 // python -c "import uuid; print(uuid.uuid5(uuid.NAMESPACE_URL, 'www.android.com/avf/microdroid/system'))" 159 uuid: "5fe079c6-f01a-52be-87d3-d415231a72ad", 160} 161 162prebuilt_etc { 163 name: "microdroid_init_rc", 164 filename: "init.rc", 165 src: "init.rc", 166 relative_install_path: "init/hw", 167 no_full_install: true, // avoid collision with system partition's init.rc 168} 169 170prebuilt_etc { 171 name: "microdroid_ueventd_rc", 172 filename: "ueventd.rc", 173 src: "ueventd.rc", 174 no_full_install: true, // avoid collision with system partition's ueventd.rc 175} 176 177prebuilt_etc { 178 name: "microdroid_etc_passwd", 179 src: "microdroid_passwd", 180 filename: "passwd", 181 no_full_install: true, 182} 183 184prebuilt_etc { 185 name: "microdroid_etc_group", 186 src: "microdroid_group", 187 filename: "group", 188 no_full_install: true, 189} 190 191prebuilt_root { 192 name: "microdroid_build_prop", 193 filename: "build.prop", 194 src: "build.prop", 195 arch: { 196 x86_64: { 197 src: ":microdroid_build_prop_gen_x86_64", 198 }, 199 arm64: { 200 src: ":microdroid_build_prop_gen_arm64", 201 }, 202 }, 203 no_full_install: true, 204} 205 206java_genrule { 207 name: "microdroid_build_prop_gen_x86_64", 208 srcs: [ 209 "build.prop", 210 ":system-build.prop", 211 ], 212 out: ["build.prop.out"], 213 cmd: "(echo '# build properties from system/build.prop' && " + 214 "grep ro\\.build\\.version\\.codename= $(location :system-build.prop) && " + 215 "grep ro\\.build\\.version\\.release= $(location :system-build.prop) && " + 216 "grep ro\\.build\\.version\\.sdk= $(location :system-build.prop) && " + 217 "grep ro\\.build\\.version\\.security_patch= $(location :system-build.prop) && " + 218 "grep ro\\.build\\.version\\.known_codenames= $(location :system-build.prop) && " + 219 "cat $(location build.prop) && " + 220 "echo ro.product.cpu.abilist=x86_64 && " + 221 "echo ro.product.cpu.abi=x86_64) > $(out)", 222} 223 224java_genrule { 225 name: "microdroid_build_prop_gen_arm64", 226 srcs: [ 227 "build.prop", 228 ":system-build.prop", 229 ], 230 out: ["build.prop.out"], 231 cmd: "(echo '# build properties from system/build.prop' && " + 232 "grep ro\\.build\\.version\\.codename= $(location :system-build.prop) && " + 233 "grep ro\\.build\\.version\\.release= $(location :system-build.prop) && " + 234 "grep ro\\.build\\.version\\.sdk= $(location :system-build.prop) && " + 235 "grep ro\\.build\\.version\\.security_patch= $(location :system-build.prop) && " + 236 "grep ro\\.build\\.version\\.known_codenames= $(location :system-build.prop) && " + 237 "cat $(location build.prop) && " + 238 "echo ro.product.cpu.abilist=arm64-v8a && " + 239 "echo ro.product.cpu.abi=arm64-v8a) > $(out)", 240} 241 242// Need to keep microdroid_vendor for the release configurations that don't 243// have RELEASE_AVF_ENABLE_VENDOR_MODULES build flag enabled. 244android_filesystem { 245 name: "microdroid_vendor", 246 partition_name: "vendor", 247 use_avb: true, 248 avb_private_key: ":microdroid_sign_key", 249 avb_algorithm: "SHA256_RSA4096", 250 avb_hash_algorithm: "sha256", 251 use_fec: false, 252 file_contexts: ":microdroid_vendor_file_contexts.gen", 253 // For deterministic output, use fake_timestamp, hard-coded uuid 254 fake_timestamp: "1611569676", 255 // python -c "import uuid; print(uuid.uuid5(uuid.NAMESPACE_URL, 'www.android.com/avf/microdroid/vendor'))" 256 uuid: "156d40d7-8d8e-5c99-8913-ec82de549a70", 257} 258 259soong_config_module_type { 260 name: "flag_aware_microdroid_super_partition", 261 module_type: "logical_partition", 262 config_namespace: "ANDROID", 263 bool_variables: [ 264 "release_avf_enable_vendor_modules", 265 ], 266 properties: [ 267 "default_group", 268 ], 269} 270 271flag_aware_microdroid_super_partition { 272 name: "microdroid_super", 273 sparse: true, 274 size: "auto", 275 default_group: [ 276 { 277 name: "system_a", 278 filesystem: ":microdroid", 279 }, 280 ], 281 soong_config_variables: { 282 release_avf_enable_vendor_modules: { 283 conditions_default: { 284 default_group: [ 285 { 286 name: "vendor_a", 287 filesystem: ":microdroid_vendor", 288 }, 289 ], 290 }, 291 }, 292 }, 293} 294 295android_filesystem { 296 name: "microdroid_ramdisk", 297 deps: [ 298 "init_first_stage.microdroid", 299 ], 300 dirs: [ 301 "dev", 302 "proc", 303 "sys", 304 305 "mnt", 306 "debug_ramdisk", 307 "second_stage_resources", 308 ] + select(release_flag("RELEASE_AVF_ENABLE_DICE_CHANGES"), { 309 true: ["microdroid_resources"], 310 default: [], 311 }), 312 type: "compressed_cpio", 313} 314 315android_filesystem { 316 name: "microdroid_first_stage_ramdisk", 317 deps: [ 318 "microdroid_fstab", 319 ], 320 base_dir: "first_stage_ramdisk", 321 type: "compressed_cpio", 322 symlinks: [ 323 { 324 target: "etc/fstab.microdroid", 325 name: "first_stage_ramdisk/fstab.microdroid", 326 }, 327 { 328 target: "first_stage_ramdisk/lib", 329 name: "lib", 330 }, 331 ], 332} 333 334genrule { 335 name: "microdroid_bootconfig_arm64_gen", 336 srcs: [ 337 "bootconfig.common", 338 "bootconfig.arm64", 339 ], 340 out: ["bootconfig"], 341 cmd: "cat $(in) > $(out)", 342} 343 344genrule { 345 name: "microdroid_bootconfig_x86_64_gen", 346 srcs: [ 347 "bootconfig.common", 348 "bootconfig.x86_64", 349 ], 350 out: ["bootconfig"], 351 cmd: "cat $(in) > $(out)", 352} 353 354filegroup { 355 name: "microdroid_16k_bootconfig_x86_64_gen", 356 srcs: ["bootconfig.x86_64_16k"], 357} 358 359prebuilt_etc { 360 name: "microdroid_fstab", 361 src: "fstab.microdroid", 362 filename: "fstab.microdroid", 363 no_full_install: true, 364} 365 366// python -c "import hashlib; print(hashlib.sha256(b'bootloader').hexdigest())" 367bootloader_salt = "3b4a12881d11f33cff968a24d7c53723a8232cde9a8d91e29fdbd6a95ae6adf0" 368 369filegroup { 370 name: "microdroid_sign_key", 371 srcs: [":pvmfw_embedded_key"], 372} 373 374vbmeta { 375 name: "microdroid_vbmeta", 376 partition_name: "vbmeta", 377 private_key: ":microdroid_sign_key", 378 partitions: [ 379 "microdroid", 380 ] + select(release_flag("RELEASE_AVF_ENABLE_VENDOR_MODULES"), { 381 true: [], 382 default: ["microdroid_vendor"], 383 }), 384} 385 386prebuilt_etc { 387 name: "microdroid.json", 388 src: "microdroid.json", 389} 390 391prebuilt_etc { 392 name: "microdroid_16k.json", 393 src: "microdroid_16k.json", 394} 395 396prebuilt_etc { 397 name: "microdroid_manifest", 398 src: "microdroid_manifest.xml", 399 filename: "manifest.xml", 400 relative_install_path: "vintf", 401 no_full_install: true, 402} 403 404prebuilt_etc { 405 name: "microdroid_event-log-tags", 406 src: "microdroid_event-log-tags", 407 filename: "event-log-tags", 408 no_full_install: true, 409} 410 411filegroup { 412 name: "microdroid_bootconfig_debuggable_src", 413 srcs: ["bootconfig.debuggable"], 414} 415 416filegroup { 417 name: "microdroid_bootconfig_normal_src", 418 srcs: ["bootconfig.normal"], 419} 420 421// python -c "import hashlib; print(hashlib.sha256(b'initrd_normal').hexdigest())" 422initrd_normal_salt = "8041a07d54ac82290f6d90bac1fa8d7fdbc4db974d101d60faf294749d1ebaf8" 423 424avb_gen_vbmeta_image_defaults { 425 name: "microdroid_initrd_defaults", 426 enabled: false, 427 arch: { 428 // Microdroid kernel is only available in these architectures. 429 arm64: { 430 enabled: true, 431 }, 432 x86_64: { 433 enabled: true, 434 }, 435 }, 436} 437 438avb_gen_vbmeta_image_defaults { 439 name: "microdroid_initrd_normal_defaults", 440 defaults: ["microdroid_initrd_defaults"], 441 partition_name: "initrd_normal", 442 salt: initrd_normal_salt, 443} 444 445avb_gen_vbmeta_image { 446 name: "microdroid_initrd_normal_hashdesc", 447 defaults: ["microdroid_initrd_normal_defaults"], 448 src: ":microdroid_initrd_normal", 449} 450 451avb_gen_vbmeta_image { 452 name: "microdroid_16k_initrd_normal_hashdesc", 453 defaults: ["microdroid_initrd_normal_defaults"], 454 src: ":microdroid_16k_initrd_normal", 455} 456 457// python -c "import hashlib; print(hashlib.sha256(b'initrd_debug').hexdigest())" 458initrd_debug_salt = "8ab9dc9cb7e6456700ff6ef18c6b4c3acc24c5fa5381b829563f8d7a415d869a" 459 460avb_gen_vbmeta_image_defaults { 461 name: "microdroid_initrd_debug_defaults", 462 defaults: ["microdroid_initrd_defaults"], 463 partition_name: "initrd_debug", 464 salt: initrd_debug_salt, 465} 466 467avb_gen_vbmeta_image { 468 name: "microdroid_initrd_debug_hashdesc", 469 defaults: ["microdroid_initrd_debug_defaults"], 470 src: ":microdroid_initrd_debuggable", 471} 472 473avb_gen_vbmeta_image { 474 name: "microdroid_16k_initrd_debug_hashdesc", 475 defaults: ["microdroid_initrd_debug_defaults"], 476 src: ":microdroid_16k_initrd_debuggable", 477} 478 479avb_add_hash_footer_defaults { 480 name: "microdroid_kernel_signed_defaults", 481 src: ":empty_file", 482 partition_name: "boot", 483 private_key: ":microdroid_sign_key", 484 salt: bootloader_salt, 485 enabled: false, 486 arch: { 487 arm64: { 488 enabled: true, 489 }, 490 x86_64: { 491 enabled: true, 492 }, 493 }, 494} 495 496MICRODROID_GKI_ROLLBACK_INDEX = 2 497 498avb_add_hash_footer_defaults { 499 name: "microdroid_kernel_cap_defaults", 500 // Below are properties that are conditionally set depending on value of build flags. 501 props: [ 502 { 503 name: "com.android.virt.cap", 504 value: "secretkeeper_protection", 505 }, 506 ], 507 rollback_index: MICRODROID_GKI_ROLLBACK_INDEX, 508} 509 510avb_add_hash_footer_defaults { 511 name: "microdroid_kernel_cap_with_uefi_defaults", 512 rollback_index: MICRODROID_GKI_ROLLBACK_INDEX, 513 props: [ 514 { 515 name: "com.android.virt.cap", 516 value: "secretkeeper_protection|supports_uefi_boot", 517 }, 518 ], 519} 520 521avb_add_hash_footer { 522 name: "microdroid_kernel_signed", 523 defaults: [ 524 "microdroid_kernel_signed_defaults", 525 "microdroid_kernel_cap_defaults", 526 ], 527 filename: "microdroid_kernel", 528 arch: { 529 arm64: { 530 src: ":microdroid_kernel_prebuilt-arm64", 531 }, 532 x86_64: { 533 src: ":microdroid_kernel_prebuilt-x86_64", 534 }, 535 }, 536 include_descriptors_from_images: [ 537 ":microdroid_initrd_normal_hashdesc", 538 ":microdroid_initrd_debug_hashdesc", 539 ], 540} 541 542prebuilt_etc { 543 name: "microdroid_kernel", 544 src: ":empty_file", 545 relative_install_path: "fs", 546 arch: { 547 arm64: { 548 src: ":microdroid_kernel_signed", 549 }, 550 x86_64: { 551 src: ":microdroid_kernel_signed", 552 }, 553 }, 554} 555 556avb_add_hash_footer { 557 name: "microdroid_kernel_16k_signed", 558 defaults: [ 559 "microdroid_kernel_signed_defaults", 560 "microdroid_kernel_cap_defaults", 561 ], 562 filename: "microdroid_kernel_16k", 563 arch: { 564 arm64: { 565 src: ":microdroid_kernel_16k_prebuilt-arm64", 566 }, 567 // There is no 16k x86_64 kernel. Instead the 16k emulation is triggered by adding 568 // `page_shift=14` to the kernel cmdline or bootconfig. 569 x86_64: { 570 src: ":microdroid_kernel_prebuilt-x86_64", 571 }, 572 }, 573 props: [ 574 { 575 name: "com.android.virt.page_size", 576 value: "16", 577 }, 578 ], 579 include_descriptors_from_images: [ 580 ":microdroid_16k_initrd_normal_hashdesc", 581 ":microdroid_16k_initrd_debug_hashdesc", 582 ], 583} 584 585prebuilt_etc { 586 name: "microdroid_kernel_16k", 587 src: ":empty_file", 588 relative_install_path: "fs", 589 arch: { 590 arm64: { 591 src: ":microdroid_kernel_16k_signed", 592 }, 593 x86_64: { 594 src: ":microdroid_kernel_16k_signed", 595 }, 596 }, 597} 598 599/////////////////////////////////////// 600// GKI-android15-6.6 601/////////////////////////////////////// 602prebuilt_etc { 603 name: "microdroid_gki-android15-6.6.json", 604 src: "microdroid_gki-android15-6.6.json", 605} 606 607avb_add_hash_footer_defaults { 608 name: "microdroid_gki-android15-6.6_kernel_signed_defaults", 609 defaults: ["microdroid_kernel_signed_defaults"], 610 arch: { 611 arm64: { 612 src: ":microdroid_gki_kernel_prebuilts-android15-6.6-arm64", 613 }, 614 x86_64: { 615 src: ":microdroid_gki_kernel_prebuilts-android15-6.6-x86_64", 616 }, 617 }, 618 include_descriptors_from_images: [ 619 ":microdroid_gki-android15-6.6_initrd_normal_hashdesc", 620 ":microdroid_gki-android15-6.6_initrd_debug_hashdesc", 621 ], 622} 623 624avb_add_hash_footer { 625 name: "microdroid_gki-android15-6.6_kernel_signed", 626 defaults: [ 627 "microdroid_gki-android15-6.6_kernel_signed_defaults", 628 "microdroid_kernel_cap_defaults", 629 ], 630 filename: "microdroid_gki-android15-6.6_kernel_signed", 631} 632 633avb_add_hash_footer { 634 name: "microdroid_gki-android15-6.6_kernel_signed_supports_uefi_boot", 635 defaults: [ 636 "microdroid_gki-android15-6.6_kernel_signed_defaults", 637 "microdroid_kernel_cap_with_uefi_defaults", 638 ], 639 filename: "microdroid_gki-android15-6.6_kernel_signed_supports_uefi_boot", 640} 641 642// HACK: use cc_genrule for arch-specific properties 643cc_genrule { 644 name: "microdroid_gki-android15-6.6_kernel_signed-lz4", 645 out: ["microdroid_gki-android15-6.6_kernel_signed-lz4"], 646 srcs: [":empty_file"], 647 arch: { 648 arm64: { 649 srcs: [":microdroid_gki-android15-6.6_kernel_signed"], 650 exclude_srcs: [":empty_file"], 651 }, 652 }, 653 tools: ["lz4"], 654 cmd: "$(location lz4) -9 $(in) $(out)", 655} 656 657prebuilt_etc { 658 name: "microdroid_gki-android15-6.6_kernel", 659 filename: "microdroid_gki-android15-6.6_kernel", 660 src: ":empty_file", 661 relative_install_path: "fs", 662 arch: { 663 arm64: { 664 src: ":microdroid_gki-android15-6.6_kernel_signed", 665 }, 666 x86_64: { 667 src: ":microdroid_gki-android15-6.6_kernel_signed", 668 }, 669 }, 670} 671 672avb_gen_vbmeta_image { 673 name: "microdroid_gki-android15-6.6_initrd_normal_hashdesc", 674 defaults: ["microdroid_initrd_normal_defaults"], 675 src: ":microdroid_gki-android15-6.6_initrd_normal", 676} 677 678avb_gen_vbmeta_image { 679 name: "microdroid_gki-android15-6.6_initrd_debug_hashdesc", 680 defaults: ["microdroid_initrd_debug_defaults"], 681 src: ":microdroid_gki-android15-6.6_initrd_debuggable", 682} 683 684/////////////////////////////////////// 685// GKI-android16-6.12 686/////////////////////////////////////// 687prebuilt_etc { 688 name: "microdroid_gki-android16-6.12.json", 689 src: "microdroid_gki-android16-6.12.json", 690} 691 692avb_add_hash_footer_defaults { 693 name: "microdroid_gki-android16-6.12_kernel_signed_defaults", 694 defaults: ["microdroid_kernel_signed_defaults"], 695 arch: { 696 arm64: { 697 src: ":microdroid_gki_kernel_prebuilts-android16-6.12-arm64", 698 }, 699 x86_64: { 700 src: ":microdroid_gki_kernel_prebuilts-android16-6.12-x86_64", 701 }, 702 }, 703 include_descriptors_from_images: [ 704 ":microdroid_gki-android16-6.12_initrd_normal_hashdesc", 705 ":microdroid_gki-android16-6.12_initrd_debug_hashdesc", 706 ], 707} 708 709avb_add_hash_footer { 710 name: "microdroid_gki-android16-6.12_kernel_signed", 711 defaults: [ 712 "microdroid_gki-android16-6.12_kernel_signed_defaults", 713 "microdroid_kernel_cap_defaults", 714 ], 715 filename: "microdroid_gki-android16-6.12_kernel_signed", 716} 717 718avb_add_hash_footer { 719 name: "microdroid_gki-android16-6.12_kernel_signed_supports_uefi_boot", 720 defaults: [ 721 "microdroid_gki-android16-6.12_kernel_signed_defaults", 722 "microdroid_kernel_cap_with_uefi_defaults", 723 ], 724 filename: "microdroid_gki-android16-6.12_kernel_signed_supports_uefi_boot", 725} 726 727// HACK: use cc_genrule for arch-specific properties 728cc_genrule { 729 name: "microdroid_gki-android16-6.12_kernel_signed-lz4", 730 out: ["microdroid_gki-android16-6.12_kernel_signed-lz4"], 731 srcs: [":empty_file"], 732 arch: { 733 arm64: { 734 srcs: [":microdroid_gki-android16-6.12_kernel_signed"], 735 exclude_srcs: [":empty_file"], 736 }, 737 }, 738 tools: ["lz4"], 739 cmd: "$(location lz4) -9 $(in) $(out)", 740} 741 742prebuilt_etc { 743 name: "microdroid_gki-android16-6.12_kernel", 744 filename: "microdroid_gki-android16-6.12_kernel", 745 src: ":empty_file", 746 relative_install_path: "fs", 747 arch: { 748 arm64: { 749 src: ":microdroid_gki-android16-6.12_kernel_signed", 750 }, 751 x86_64: { 752 src: ":microdroid_gki-android16-6.12_kernel_signed", 753 }, 754 }, 755} 756 757avb_gen_vbmeta_image { 758 name: "microdroid_gki-android16-6.12_initrd_normal_hashdesc", 759 defaults: ["microdroid_initrd_normal_defaults"], 760 src: ":microdroid_gki-android16-6.12_initrd_normal", 761} 762 763avb_gen_vbmeta_image { 764 name: "microdroid_gki-android16-6.12_initrd_debug_hashdesc", 765 defaults: ["microdroid_initrd_debug_defaults"], 766 src: ":microdroid_gki-android16-6.12_initrd_debuggable", 767} 768 769python_binary_host { 770 name: "extract_microdroid_kernel_hashes", 771 srcs: ["extract_microdroid_kernel_hashes.py"], 772} 773 774// HACK: use cc_genrule for arch-specific properties 775cc_genrule { 776 name: "microdroid_kernel_hashes_rs", 777 compile_multilib: "first", 778 srcs: [":microdroid_kernel"], 779 arch: { 780 arm64: { 781 srcs: [ 782 ":microdroid_gki-android15-6.6_kernel_signed", 783 ":microdroid_gki-android16-6.12_kernel_signed", 784 ], 785 }, 786 x86_64: { 787 srcs: [ 788 ":microdroid_gki-android15-6.6_kernel_signed", 789 ":microdroid_gki-android16-6.12_kernel_signed", 790 ], 791 }, 792 }, 793 out: ["lib.rs"], 794 tools: [ 795 "extract_microdroid_kernel_hashes", 796 "avbtool", 797 ], 798 cmd: "$(location extract_microdroid_kernel_hashes) --avbtool $(location avbtool) " + 799 "--kernel $(in) > $(out)", 800} 801 802rust_library_rlib { 803 name: "libmicrodroid_kernel_hashes", 804 compile_multilib: "first", 805 srcs: [":microdroid_kernel_hashes_rs"], 806 crate_name: "microdroid_kernel_hashes", 807 prefer_rlib: true, 808 no_stdlibs: true, 809 stdlibs: [ 810 "libcompiler_builtins.rust_sysroot", 811 "libcore.rust_sysroot", 812 ], 813} 814