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 "common_crosvm", 112 "config_server", 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 "simg2img", 181 "snapshot_util_cvd", 182 "socket_vsock_proxy", 183 "stop_cvd", 184 "tcp_connector", 185 "test_cvd_load_parser", 186 "tombstone_receiver", 187 "toybox", 188 "unpack_bootimg", 189 "vhal_proxy_server", 190 "vhost_device_vsock", 191 "vulkan.pastel", 192 "webRTC", 193 "webrtc_operator", 194 "wmediumd", 195 "wmediumd_gen_config", 196] 197 198cvd_openwrt_images = [ 199 "openwrt_kernel_aarch64", 200 "openwrt_kernel_x86_64", 201 "openwrt_rootfs_aarch64", 202 "openwrt_rootfs_x86_64", 203] 204 205cvd_host_tests = [ 206 "cuttlefish_net_tests", 207 "modem_simulator_test", 208] 209 210cvd_host_webrtc_assets = [ 211 "webrtc_adb.js", 212 "webrtc_app.js", 213 "webrtc_cf.js", 214 "webrtc_client.html", 215 "webrtc_controls.css", 216 "webrtc_controls.js", 217 "webrtc_index.css", 218 "webrtc_index.html", 219 "webrtc_index.js", 220 "webrtc_location.js", 221 "webrtc_mouse.js", 222 "webrtc_rootcanal.js", 223 "webrtc_server.crt", 224 "webrtc_server.key", 225 "webrtc_server.p12", 226 "webrtc_server_connector.js", 227 "webrtc_style.css", 228 "webrtc_touch.js", 229 "webrtc_trusted.pem", 230] 231 232cvd_host_model_simulator_files = [ 233 "iccprofile_for_sim0.xml_host", 234 "iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml_host", 235 "numeric_operator.xml_host", 236] 237 238cvd_host_acloud_data = [ 239 "default.config_host", 240] 241 242cvd_host_x86_64_crosvm = [ 243 // Note: These should be uncommented out when backporting to older branches 244 // which only use the prebuilt and which do not build crosvm from source. 245 //"x86_64_linux_gnu_crosvm", 246 //"x86_64_linux_gnu_libdrm.so.2_for_crosvm", 247 //"x86_64_linux_gnu_libepoxy.so.0_for_crosvm", 248 //"x86_64_linux_gnu_libffi.so.7_for_crosvm", 249 //"x86_64_linux_gnu_libgbm.so.1_for_crosvm", 250 //"x86_64_linux_gnu_libgfxstream_backend.so_for_crosvm", 251 //"x86_64_linux_gnu_libminijail.so_for_crosvm", 252 //"x86_64_linux_gnu_libvirglrenderer.so.1_for_crosvm", 253 //"x86_64_linux_gnu_libwayland_client.so.0_for_crosvm", 254] 255 256// Note: these are prebuilts due to potential incompatibilities between Android 257// built host binaries and native host GPU libraries drivers. 258cvd_host_x86_64_graphics_detector = [ 259 "x86_64_linux_gnu_gfxstream_graphics_detector_for_crosvm", 260] 261 262cvd_host_aarch64_graphics_detector = [ 263 "aarch64_linux_gnu_gfxstream_graphics_detector_for_crosvm", 264] 265 266cvd_host_aarch64_swiftshader = [ 267 "aarch64_linux_gnu_libvk_swiftshader.so", 268 "aarch64_linux_gnu_vk_swiftshader_icd.json", 269] 270 271cvd_host_x86_64 = cvd_host_x86_64_graphics_detector + cvd_host_x86_64_crosvm + qemu_x86_64_linux_gnu_binary 272 273cvd_host_aarch64_crosvm = [ 274 "aarch64_linux_gnu_crosvm", 275 "aarch64_linux_gnu_libdrm.so.2_for_crosvm", 276 "aarch64_linux_gnu_libepoxy.so.0_for_crosvm", 277 "aarch64_linux_gnu_libffi.so.7_for_crosvm", 278 "aarch64_linux_gnu_libgbm.so.1_for_crosvm", 279 "aarch64_linux_gnu_libgfxstream_backend.so_for_crosvm", 280 "aarch64_linux_gnu_libminijail.so_for_crosvm", 281 "aarch64_linux_gnu_libvirglrenderer.so.1_for_crosvm", 282 "aarch64_linux_gnu_libwayland_client.so.0_for_crosvm", 283] 284 285cvd_host_aarch64 = cvd_host_aarch64_crosvm + cvd_host_aarch64_graphics_detector + qemu_aarch64_linux_gnu_binary + cvd_host_aarch64_swiftshader 286 287cvd_host_seccomp_policy_x86_64 = [ 288 "9p_device.policy_x86_64", 289 "balloon_device.policy_x86_64", 290 "battery.policy_x86_64", 291 "block_device.policy_x86_64", 292 "block_device_vhost_user.policy_x86_64", 293 "coiommu_device.policy_x86_64", 294 "cras_audio_device.policy_x86_64", 295 "fs_device.policy_x86_64", 296 "fw_cfg_device.policy_x86_64", 297 "gpu_device.policy_x86_64", 298 "gpu_render_server.policy_x86_64", 299 "input_device.policy_x86_64", 300 "iommu_device.policy_x86_64", 301 "jail_warden.policy_x86_64", 302 "net_device.policy_x86_64", 303 "null_audio_device.policy_x86_64", 304 "pmem_device.policy_x86_64", 305 "rng_device.policy_x86_64", 306 "serial_device.policy_x86_64", 307 "serial_device_vhost_user.policy_x86_64", 308 "snd_cras_device.policy_x86_64", 309 "snd_null_device.policy_x86_64", 310 "vfio_device.policy_x86_64", 311 "vhost_net_device.policy_x86_64", 312 "vhost_vsock_device.policy_x86_64", 313 "video_device.policy_x86_64", 314 "vios_audio_device.policy_x86_64", 315 "vtpm_proxy_device.policy_x86_64", 316 "wl_device.policy_x86_64", 317 "xhci_device.policy_x86_64", 318] 319 320cvd_host_seccomp_policy_aarch64 = [ 321 "9p_device.policy_aarch64", 322 "balloon_device.policy_aarch64", 323 "battery.policy_aarch64", 324 "block_device.policy_aarch64", 325 "coiommu_device.policy_aarch64", 326 "cras_audio_device.policy_aarch64", 327 "fs_device.policy_aarch64", 328 "gpu_device.policy_aarch64", 329 "gpu_render_server.policy_aarch64", 330 "input_device.policy_aarch64", 331 "net_device.policy_aarch64", 332 "null_audio_device.policy_aarch64", 333 "pmem_device.policy_aarch64", 334 "rng_device.policy_aarch64", 335 "serial_device.policy_aarch64", 336 "snd_cras_device.policy_aarch64", 337 "snd_null_device.policy_aarch64", 338 "vhost_net_device.policy_aarch64", 339 "vhost_scmi_device.policy_aarch64", 340 "vhost_vsock_device.policy_aarch64", 341 "video_device.policy_aarch64", 342 "vios_audio_device.policy_aarch64", 343 "wl_device.policy_aarch64", 344 "xhci_device.policy_aarch64", 345] 346 347cvd_host_bootloader = [ 348 "bootloader_crosvm_aarch64", 349 "bootloader_crosvm_x86_64", 350 "bootloader_qemu_aarch64", 351 "bootloader_qemu_arm", 352 "bootloader_qemu_riscv64", 353 "bootloader_qemu_x86_64", 354] 355 356prebuilt_etc_host { 357 name: "cvd_avb_testkey_rsa2048", 358 filename: "cvd_avb_testkey_rsa2048.pem", 359 src: ":avb_testkey_rsa2048", 360} 361 362prebuilt_etc_host { 363 name: "cvd_avb_testkey_rsa4096", 364 filename: "cvd_avb_testkey_rsa4096.pem", 365 src: ":avb_testkey_rsa4096", 366} 367 368automotive_proxy_config = [ 369 "automotive_proxy_config", 370] 371 372automotive_vhal_prop_configs = [ 373 "Host_Prebuilt_VehicleHalDefaultProperties_JSON", 374 "Host_Prebuilt_VehicleHalTestProperties_JSON", 375 "Host_Prebuilt_VehicleHalVendorClusterTestProperties_JSON", 376] 377 378cvd_host_avb_testkey = [ 379 "cvd_avb_pubkey_rsa2048", 380 "cvd_avb_pubkey_rsa4096", 381 "cvd_avb_testkey_rsa2048", 382 "cvd_avb_testkey_rsa4096", 383] 384 385cvd_host_netsim_gui_assets = [ 386 "netsim_ui_assets_grid-background.svg", 387 "netsim_ui_assets_hexagonal-background.png", 388 "netsim_ui_assets_netsim-logo-b.svg", 389 "netsim_ui_assets_netsim-logo.svg", 390 "netsim_ui_assets_polar-background.svg", 391 "netsim_ui_index.html", 392 "netsim_ui_js_cube-sprite.js", 393 "netsim_ui_js_customize-map-button.js", 394 "netsim_ui_js_device-dragzone.js", 395 "netsim_ui_js_device-dropzone.js", 396 "netsim_ui_js_device-info.js", 397 "netsim_ui_js_device-list.js", 398 "netsim_ui_js_device-map.js", 399 "netsim_ui_js_device-observer.js", 400 "netsim_ui_js_license-info.js", 401 "netsim_ui_js_navigation-bar.js", 402 "netsim_ui_js_netsim-app.js", 403 "netsim_ui_js_packet-info.js", 404 "netsim_ui_js_pyramid-sprite.js", 405 "netsim_ui_tslib", 406] 407 408genrule { 409 name: "vk_swiftshader_icd.json", 410 srcs: [ 411 "//external/swiftshader:swiftshader_icd_json_template", 412 ], 413 out: [ 414 "vk_swiftshader_icd.json", 415 ], 416 // From Vulkan Loader documentation: 417 // 418 // If "library_path" specifies a relative pathname, it is relative 419 // to the path of the JSON manifest file. 420 // 421 // Our host package looks like: 422 // 423 // <host package>/lib64/vulkan.pastel 424 // <host package>/usr/share/vulkan/icd.d/vk_swiftshader_icd.json 425 // 426 // so need "../../../../lib64/vulkan.pastel". 427 cmd: "sed -e 's|$${ICD_LIBRARY_PATH}|../../../../lib64/vulkan.pastel.so|g' $(in) > $(out)", 428} 429 430prebuilt_usr_share_host { 431 name: "vk_swiftshader_icd_json_prebuilt", 432 filename: "vk_swiftshader_icd.json", 433 relative_install_path: "vulkan/icd.d", 434 src: ":vk_swiftshader_icd.json", 435} 436 437cvd_host_swiftshader_files = [ 438 "vk_swiftshader_icd_json_prebuilt", 439] 440 441cvd_host_package_customization { 442 name: "cvd-host_package", 443 deps: cvd_host_tools + 444 cvd_host_tests, 445 multilib: { 446 common: { 447 deps: cvd_host_webrtc_assets + 448 cvd_host_avb_testkey + 449 cvd_host_model_simulator_files + 450 cvd_host_acloud_data + 451 cvd_host_bootloader + 452 cvd_host_swiftshader_files + 453 cvd_openwrt_images + 454 cvd_host_netsim_gui_assets + 455 automotive_proxy_config + 456 automotive_vhal_prop_configs, 457 }, 458 }, 459 460 arch: { 461 x86_64: { 462 deps: cvd_host_x86_64, 463 multilib: { 464 common: { 465 deps: cvd_host_seccomp_policy_x86_64 + qemu_x86_64_linux_gnu_resource, 466 }, 467 }, 468 }, 469 arm64: { 470 deps: cvd_host_aarch64, 471 multilib: { 472 common: { 473 deps: cvd_host_seccomp_policy_aarch64 + qemu_aarch64_linux_gnu_resource, 474 }, 475 }, 476 }, 477 }, 478 target: { 479 linux_musl: { 480 multilib: { 481 common: { 482 deps: ["tzdata_host"], 483 }, 484 }, 485 }, 486 linux_bionic_x86_64: { 487 enabled: false, 488 }, 489 darwin: { 490 enabled: false, 491 }, 492 }, 493} 494