• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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