1// 2// Copyright (C) 2020 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15 16package { 17 default_applicable_licenses: ["Android-Apache-2.0"], 18} 19 20bootstrap_go_package { 21 name: "cuttlefish-soong-rules", 22 pkgPath: "android/soong/cuttlefish", 23 deps: [ 24 "blueprint", 25 "soong", 26 "soong-android", 27 ], 28 srcs: [ 29 "cvd-host-package.go", 30 ], 31 pluginFor: ["soong_build"], 32} 33 34// Allow cvd-host-package.go to read custom action config variables 35// from ctx.Config().VendorConfig("cvd") 36soong_config_module_type { 37 name: "cvd_host_package_customization", 38 module_type: "cvd_host_package", 39 config_namespace: "cvd", 40 value_variables: [ 41 "custom_action_config", 42 "custom_action_servers", 43 "grub_config", 44 "launch_configs", 45 ], 46} 47 48// Start of generated qemu_aarch64_linux_gnu_binary 49// Generated by gen_android_bp.py 50qemu_aarch64_linux_gnu_binary = [ 51 "aarch64_linux_gnu_libc++.so.1_binary_for_qemu", 52 "aarch64_linux_gnu_libc++abi.so.1_binary_for_qemu", 53 "aarch64_linux_gnu_libepoxy.so.0_binary_for_qemu", 54 "aarch64_linux_gnu_libgbm.so.1_binary_for_qemu", 55 "aarch64_linux_gnu_libgfxstream_backend.so.0_binary_for_qemu", 56 "aarch64_linux_gnu_librutabaga_gfx_ffi.so.0_binary_for_qemu", 57 "aarch64_linux_gnu_libunwind.so.1_binary_for_qemu", 58 "aarch64_linux_gnu_libvirglrenderer.so.1_binary_for_qemu", 59 "aarch64_linux_gnu_libz.so.1_binary_for_qemu", 60 "aarch64_linux_gnu_qemu-system-aarch64_binary_for_qemu", 61 "aarch64_linux_gnu_qemu-system-riscv64_binary_for_qemu", 62 "aarch64_linux_gnu_qemu-system-x86_64_binary_for_qemu", 63] 64// End of generated qemu_aarch64_linux_gnu_binary 65 66// Start of generated qemu_aarch64_linux_gnu_resource 67// Generated by gen_android_bp.py 68qemu_aarch64_linux_gnu_resource = [ 69 "aarch64_efi-virtio.rom_resource_for_qemu", 70 "aarch64_en-us_resource_for_qemu", 71 "aarch64_opensbi-riscv64-generic-fw_dynamic.bin_resource_for_qemu", 72] 73// End of generated qemu_aarch64_linux_gnu_resource 74 75// Start of generated qemu_x86_64_linux_gnu_binary 76// Generated by gen_android_bp.py 77qemu_x86_64_linux_gnu_binary = [ 78 "x86_64_linux_gnu_libc++.so.1_binary_for_qemu", 79 "x86_64_linux_gnu_libepoxy.so.0_binary_for_qemu", 80 "x86_64_linux_gnu_libgbm.so.1_binary_for_qemu", 81 "x86_64_linux_gnu_libgfxstream_backend.so.0_binary_for_qemu", 82 "x86_64_linux_gnu_librutabaga_gfx_ffi.so.0_binary_for_qemu", 83 "x86_64_linux_gnu_libvirglrenderer.so.1_binary_for_qemu", 84 "x86_64_linux_gnu_libz.so.1_binary_for_qemu", 85 "x86_64_linux_gnu_qemu-system-aarch64_binary_for_qemu", 86 "x86_64_linux_gnu_qemu-system-riscv64_binary_for_qemu", 87 "x86_64_linux_gnu_qemu-system-x86_64_binary_for_qemu", 88] 89// End of generated qemu_x86_64_linux_gnu_binary 90 91// Start of generated qemu_x86_64_linux_gnu_resource 92// Generated by gen_android_bp.py 93qemu_x86_64_linux_gnu_resource = [ 94 "x86_64_efi-virtio.rom_resource_for_qemu", 95 "x86_64_en-us_resource_for_qemu", 96 "x86_64_opensbi-riscv64-generic-fw_dynamic.bin_resource_for_qemu", 97] 98// End of generated qemu_x86_64_linux_gnu_resource 99 100cvd_host_tools = [ 101 "acloud_translator", 102 "adb", 103 "adb_connector", 104 "allocd_client", 105 "assemble_cvd", 106 "automotive_vsock_proxy", 107 "avbtool", 108 "build_super_image", 109 "casimir", 110 "casimir_control_server", 111 "cf_vhost_user_input", 112 "common_crosvm", 113 "console_forwarder", 114 "control_env_proxy_server", 115 "crosvm", 116 "cvd_host_bugreport", 117 "cvd_import_locations", 118 "cvd_internal_display", 119 "cvd_internal_env", 120 "cvd_internal_host_bugreport", 121 "cvd_internal_start", 122 "cvd_internal_status", 123 "cvd_internal_stop", 124 "cvd_send_id_disclosure", 125 "cvd_send_sms", 126 "cvd_status", 127 "cvd_update_location", 128 "cvd_update_security_algorithm", 129 "cvdremote", 130 "e2fsdroid", 131 "echo_server", 132 "extract-ikconfig", 133 "extract-vmlinux", 134 "fastboot", 135 "fec", 136 "fsck.f2fs", 137 "gnss_grpc_proxy", 138 "health", 139 "kernel_log_monitor", 140 "launch_cvd", 141 "libgrpc++", 142 "libgrpc++_unsecure", 143 "log_tee", 144 "logcat_receiver", 145 "lpadd", 146 "lpmake", 147 "lpunpack", 148 "lz4", 149 "make_f2fs", 150 "mcopy", 151 "metrics", 152 "metrics_launcher", 153 "mkbootfs", 154 "mkbootimg", 155 "mke2fs", 156 "mkenvimage_slim", 157 "mkuserimg_mke2fs", 158 "mmd", 159 "modem_simulator", 160 "ms-tpm-20-ref", 161 "mtools", 162 "netsim", 163 "netsimd", 164 "newfs_msdos", 165 "openwrt_control_server", 166 "operator_proxy", 167 "pica", 168 "powerbtn_cvd", 169 "powerwash_cvd", 170 "process_restarter", 171 "process_sandboxer", 172 "record_cvd", 173 "restart_cvd", 174 "root-canal", 175 "run_cvd", 176 "sandboxer_proxy", 177 "screen_recording_server", 178 "secure_env", 179 "sefcontext_compile", 180 "sensors_simulator", 181 "simg2img", 182 "snapshot_util_cvd", 183 "socket_vsock_proxy", 184 "stop_cvd", 185 "tcp_connector", 186 "test_cvd_load_parser", 187 "tombstone_receiver", 188 "toybox", 189 "unpack_bootimg", 190 "vhal_proxy_server", 191 "vhost_device_vsock", 192 "vulkan.lvp", 193 "vulkan.pastel", 194 "webRTC", 195 "webrtc_operator", 196 "wmediumd", 197 "wmediumd_gen_config", 198] 199 200cvd_openwrt_images = [ 201 "openwrt_kernel_aarch64", 202 "openwrt_kernel_x86_64", 203 "openwrt_rootfs_aarch64", 204 "openwrt_rootfs_x86_64", 205] 206 207cvd_host_tests = [ 208 "cuttlefish_net_tests", 209 "modem_simulator_test", 210] 211 212cvd_host_webrtc_assets = [ 213 "webrtc_adb.js", 214 "webrtc_app.js", 215 "webrtc_cf.js", 216 "webrtc_client.html", 217 "webrtc_controls.css", 218 "webrtc_controls.js", 219 "webrtc_index.css", 220 "webrtc_index.html", 221 "webrtc_index.js", 222 "webrtc_keyboard.js", 223 "webrtc_location.js", 224 "webrtc_mouse.js", 225 "webrtc_rootcanal.js", 226 "webrtc_server.crt", 227 "webrtc_server.key", 228 "webrtc_server.p12", 229 "webrtc_server_connector.js", 230 "webrtc_style.css", 231 "webrtc_touch.js", 232 "webrtc_trusted.pem", 233] 234 235cvd_host_model_simulator_files = [ 236 "iccprofile_for_sim0.xml_host", 237 "iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml_host", 238 "numeric_operator.xml_host", 239] 240 241cvd_host_acloud_data = [ 242 "default.config_host", 243] 244 245cvd_host_x86_64_crosvm = [ 246 // Note: These should be uncommented out when backporting to older branches 247 // which only use the prebuilt and which do not build crosvm from source. 248 //"x86_64_linux_gnu_crosvm", 249 //"x86_64_linux_gnu_libdrm.so.2_for_crosvm", 250 //"x86_64_linux_gnu_libepoxy.so.0_for_crosvm", 251 //"x86_64_linux_gnu_libffi.so.7_for_crosvm", 252 //"x86_64_linux_gnu_libgbm.so.1_for_crosvm", 253 //"x86_64_linux_gnu_libgfxstream_backend.so_for_crosvm", 254 //"x86_64_linux_gnu_libminijail.so_for_crosvm", 255 //"x86_64_linux_gnu_libvirglrenderer.so.1_for_crosvm", 256 //"x86_64_linux_gnu_libwayland_client.so.0_for_crosvm", 257] 258 259// Note: these are prebuilts due to potential incompatibilities between Android 260// built host binaries and native host GPU libraries drivers. 261cvd_host_x86_64_graphics_detector = [ 262 "x86_64_linux_gnu_gfxstream_graphics_detector_for_crosvm", 263] 264 265cvd_host_aarch64_graphics_detector = [ 266 "aarch64_linux_gnu_gfxstream_graphics_detector_for_crosvm", 267] 268 269cvd_host_aarch64_swiftshader = [ 270 "aarch64_linux_gnu_libvk_swiftshader.so", 271 "aarch64_linux_gnu_vk_swiftshader_icd.json", 272] 273 274cvd_host_x86_64 = cvd_host_x86_64_graphics_detector + cvd_host_x86_64_crosvm + qemu_x86_64_linux_gnu_binary 275 276cvd_host_aarch64_crosvm = [ 277 "aarch64_linux_gnu_crosvm", 278 "aarch64_linux_gnu_libdrm.so.2_for_crosvm", 279 "aarch64_linux_gnu_libepoxy.so.0_for_crosvm", 280 "aarch64_linux_gnu_libffi.so.7_for_crosvm", 281 "aarch64_linux_gnu_libgbm.so.1_for_crosvm", 282 "aarch64_linux_gnu_libgfxstream_backend.so_for_crosvm", 283 "aarch64_linux_gnu_libmem_overrides.so_for_crosvm", 284 "aarch64_linux_gnu_libminijail.so_for_crosvm", 285 "aarch64_linux_gnu_libvirglrenderer.so.1_for_crosvm", 286 "aarch64_linux_gnu_libwayland_client.so.0_for_crosvm", 287] 288 289cvd_host_aarch64 = cvd_host_aarch64_crosvm + cvd_host_aarch64_graphics_detector + qemu_aarch64_linux_gnu_binary + cvd_host_aarch64_swiftshader 290 291cvd_host_seccomp_policy_x86_64 = [ 292 "9p_device.policy_x86_64", 293 "balloon_device.policy_x86_64", 294 "battery.policy_x86_64", 295 "block_device.policy_x86_64", 296 "block_device_vhost_user.policy_x86_64", 297 "coiommu_device.policy_x86_64", 298 "cras_audio_device.policy_x86_64", 299 "fs_device.policy_x86_64", 300 "fw_cfg_device.policy_x86_64", 301 "gpu_device.policy_x86_64", 302 "gpu_render_server.policy_x86_64", 303 "input_device.policy_x86_64", 304 "iommu_device.policy_x86_64", 305 "jail_warden.policy_x86_64", 306 "net_device.policy_x86_64", 307 "null_audio_device.policy_x86_64", 308 "pmem_device.policy_x86_64", 309 "rng_device.policy_x86_64", 310 "serial_device.policy_x86_64", 311 "serial_device_vhost_user.policy_x86_64", 312 "snd_cras_device.policy_x86_64", 313 "snd_null_device.policy_x86_64", 314 "vfio_device.policy_x86_64", 315 "vhost_net_device.policy_x86_64", 316 "vhost_vsock_device.policy_x86_64", 317 "video_device.policy_x86_64", 318 "vios_audio_device.policy_x86_64", 319 "vtpm_proxy_device.policy_x86_64", 320 "wl_device.policy_x86_64", 321 "xhci_device.policy_x86_64", 322] 323 324cvd_host_seccomp_policy_aarch64 = [ 325 "9p_device.policy_aarch64", 326 "balloon_device.policy_aarch64", 327 "battery.policy_aarch64", 328 "block_device.policy_aarch64", 329 "coiommu_device.policy_aarch64", 330 "cras_audio_device.policy_aarch64", 331 "fs_device.policy_aarch64", 332 "gpu_device.policy_aarch64", 333 "gpu_render_server.policy_aarch64", 334 "input_device.policy_aarch64", 335 "net_device.policy_aarch64", 336 "null_audio_device.policy_aarch64", 337 "pmem_device.policy_aarch64", 338 "rng_device.policy_aarch64", 339 "serial_device.policy_aarch64", 340 "snd_cras_device.policy_aarch64", 341 "snd_null_device.policy_aarch64", 342 "vhost_net_device.policy_aarch64", 343 "vhost_scmi_device.policy_aarch64", 344 "vhost_vsock_device.policy_aarch64", 345 "video_device.policy_aarch64", 346 "vios_audio_device.policy_aarch64", 347 "wl_device.policy_aarch64", 348 "xhci_device.policy_aarch64", 349] 350 351cvd_host_bootloader = [ 352 "bootloader_crosvm_aarch64", 353 "bootloader_crosvm_x86_64", 354 "bootloader_qemu_aarch64", 355 "bootloader_qemu_arm", 356 "bootloader_qemu_riscv64", 357 "bootloader_qemu_x86_64", 358] 359 360cvd_host_ti50_emulator = [ 361 "ti50_emulator_x86_64_bin", 362 "ti50_emulator_x86_64_lib", 363] 364 365cvd_host_keyboard_config = [ 366 "desktop_keyboard.json", 367 "domkey_mapping.json", 368] 369 370prebuilt_etc_host { 371 name: "cvd_avb_testkey_rsa2048", 372 filename: "cvd_avb_testkey_rsa2048.pem", 373 src: ":avb_testkey_rsa2048", 374} 375 376prebuilt_etc_host { 377 name: "cvd_avb_testkey_rsa4096", 378 filename: "cvd_avb_testkey_rsa4096.pem", 379 src: ":avb_testkey_rsa4096", 380} 381 382automotive_proxy_config = [ 383 "automotive_proxy_config", 384] 385 386automotive_vhal_prop_configs = [ 387 "Host_Prebuilt_VehicleHalDefaultProperties_JSON", 388 "Host_Prebuilt_VehicleHalTestProperties_JSON", 389 "Host_Prebuilt_VehicleHalVendorClusterTestProperties_JSON", 390] 391 392cvd_host_avb_testkey = [ 393 "cvd_avb_pubkey_rsa2048", 394 "cvd_avb_pubkey_rsa4096", 395 "cvd_avb_testkey_rsa2048", 396 "cvd_avb_testkey_rsa4096", 397] 398 399cvd_host_netsim_gui_assets = [ 400 "netsim_ui_assets_grid-background.svg", 401 "netsim_ui_assets_hexagonal-background.png", 402 "netsim_ui_assets_netsim-logo-b.svg", 403 "netsim_ui_assets_netsim-logo.svg", 404 "netsim_ui_assets_polar-background.svg", 405 "netsim_ui_index.html", 406 "netsim_ui_js_cube-sprite.js", 407 "netsim_ui_js_customize-map-button.js", 408 "netsim_ui_js_device-dragzone.js", 409 "netsim_ui_js_device-dropzone.js", 410 "netsim_ui_js_device-info.js", 411 "netsim_ui_js_device-list.js", 412 "netsim_ui_js_device-map.js", 413 "netsim_ui_js_device-observer.js", 414 "netsim_ui_js_license-info.js", 415 "netsim_ui_js_navigation-bar.js", 416 "netsim_ui_js_netsim-app.js", 417 "netsim_ui_js_packet-info.js", 418 "netsim_ui_js_pyramid-sprite.js", 419 "netsim_ui_tslib", 420] 421 422// From Vulkan Loader documentation: 423// 424// If "library_path" specifies a relative pathname, it is relative 425// to the path of the JSON manifest file. 426// 427// Our host package looks like: 428// 429// <host package>/lib64/vulkan.pastel 430// <host package>/usr/share/vulkan/icd.d/vk_swiftshader_icd.json 431// <host package>/lib64/vulkan.lvp 432// <host package>/usr/share/vulkan/icd.d/vk_lavapipe_icd.cf.json 433// 434// so need "../../../../lib64/vulkan.pastel" and "../../../../lib64/vulkan.lvp". 435 436genrule { 437 name: "vk_swiftshader_icd.json", 438 srcs: [ 439 "//external/swiftshader:swiftshader_icd_json_template", 440 ], 441 out: [ 442 "vk_swiftshader_icd.json", 443 ], 444 cmd: "sed -e 's|$${ICD_LIBRARY_PATH}|../../../../lib64/vulkan.pastel.so|g' $(in) > $(out)", 445} 446 447prebuilt_usr_share_host { 448 name: "vk_swiftshader_icd_json_prebuilt", 449 filename: "vk_swiftshader_icd.json", 450 relative_install_path: "vulkan/icd.d", 451 src: ":vk_swiftshader_icd.json", 452} 453 454cvd_host_swiftshader_files = [ 455 "vk_swiftshader_icd_json_prebuilt", 456] 457 458genrule { 459 name: "vk_lavapipe_icd.cf.json", 460 srcs: [ 461 ":mesa_vulkan_xml", 462 ], 463 out: [ 464 "vk_lavapipe_icd.cf.json", 465 ], 466 tools: [ 467 "vk_icd_gen", 468 ], 469 cmd: "python3 $(location vk_icd_gen) --api-version 1.4 --xml $(location :mesa_vulkan_xml) " + 470 "--lib-path ../../../../lib64/vulkan.lvp.so --out $(location vk_lavapipe_icd.cf.json)", 471} 472 473prebuilt_usr_share_host { 474 name: "vk_lavapipe_icd_json_prebuilt", 475 filename: "vk_lavapipe_icd.cf.json", 476 relative_install_path: "vulkan/icd.d", 477 src: ":vk_lavapipe_icd.cf.json", 478} 479 480cvd_host_lavapipe_files = [ 481 "vk_lavapipe_icd_json_prebuilt", 482] 483 484cvd_default_input_device_specs = [ 485 "default_keyboard_spec", 486 "default_mouse_spec", 487 "default_multi_touchpad_spec_template", 488 "default_multi_touchscreen_spec_template", 489 "default_rotary_wheel_spec", 490 "default_single_touchpad_spec_template", 491 "default_single_touchscreen_spec_template", 492 "default_switches_spec", 493] 494 495cvd_debian_marker = [ 496 "debian_substitution_marker", 497] 498 499cvd_host_package_customization { 500 name: "cvd-host_package", 501 deps: cvd_host_tools + 502 cvd_host_tests, 503 multilib: { 504 common: { 505 deps: cvd_default_input_device_specs + 506 cvd_host_webrtc_assets + 507 cvd_host_avb_testkey + 508 cvd_host_model_simulator_files + 509 cvd_host_acloud_data + 510 cvd_host_bootloader + 511 cvd_host_ti50_emulator + 512 cvd_host_keyboard_config + 513 cvd_host_swiftshader_files + 514 cvd_host_lavapipe_files + 515 cvd_openwrt_images + 516 cvd_host_netsim_gui_assets + 517 cvd_debian_marker + 518 automotive_proxy_config + 519 automotive_vhal_prop_configs, 520 }, 521 }, 522 523 arch: { 524 x86_64: { 525 deps: cvd_host_x86_64, 526 multilib: { 527 common: { 528 deps: cvd_host_seccomp_policy_x86_64 + qemu_x86_64_linux_gnu_resource, 529 }, 530 }, 531 }, 532 arm64: { 533 deps: cvd_host_aarch64, 534 multilib: { 535 common: { 536 deps: cvd_host_seccomp_policy_aarch64 + qemu_aarch64_linux_gnu_resource, 537 }, 538 }, 539 }, 540 }, 541 target: { 542 linux_musl: { 543 multilib: { 544 common: { 545 deps: ["tzdata_host"], 546 }, 547 }, 548 }, 549 linux_bionic_x86_64: { 550 enabled: false, 551 }, 552 darwin: { 553 enabled: false, 554 }, 555 }, 556} 557