1python_binary_host {
2    name: "build_trusty",
3    srcs: ["*.py"],
4    main: "build.py",
5    version: {
6        py3: {
7            embedded_launcher: true,
8        },
9    },
10}
11
12genrule_defaults {
13    name: "lk.elf.defaults",
14    use_nsjail: true,
15    dir_srcs: [
16        ":trusty_dirgroup_external_boringssl",
17        ":trusty_dirgroup_external_dtc",
18        ":trusty_dirgroup_external_freetype",
19        ":trusty_dirgroup_external_googletest",
20        ":trusty_dirgroup_external_libcxx",
21        ":trusty_dirgroup_external_libcxxabi",
22        ":trusty_dirgroup_external_nanopb-c",
23        ":trusty_dirgroup_external_open-dice",
24        ":trusty_dirgroup_external_python_jinja",
25        ":trusty_dirgroup_external_python_markupsafe",
26        ":trusty_dirgroup_external_python_six",
27        ":trusty_dirgroup_external_rust_crates_acpi",
28        ":trusty_dirgroup_external_rust_crates_arrayvec",
29        ":trusty_dirgroup_external_rust_crates_async-trait",
30        ":trusty_dirgroup_external_rust_crates_bit_field",
31        ":trusty_dirgroup_external_rust_crates_bitflags",
32        ":trusty_dirgroup_external_rust_crates_byteorder",
33        ":trusty_dirgroup_external_rust_crates_cfg-if",
34        ":trusty_dirgroup_external_rust_crates_ciborium",
35        ":trusty_dirgroup_external_rust_crates_ciborium-io",
36        ":trusty_dirgroup_external_rust_crates_ciborium-ll",
37        ":trusty_dirgroup_external_rust_crates_const-oid",
38        ":trusty_dirgroup_external_rust_crates_coset",
39        ":trusty_dirgroup_external_rust_crates_der",
40        ":trusty_dirgroup_external_rust_crates_der_derive",
41        ":trusty_dirgroup_external_rust_crates_downcast-rs",
42        ":trusty_dirgroup_external_rust_crates_enumn",
43        ":trusty_dirgroup_external_rust_crates_flagset",
44        ":trusty_dirgroup_external_rust_crates_foreign-types",
45        ":trusty_dirgroup_external_rust_crates_foreign-types-shared",
46        ":trusty_dirgroup_external_rust_crates_half",
47        ":trusty_dirgroup_external_rust_crates_lazy_static",
48        ":trusty_dirgroup_external_rust_crates_libc",
49        ":trusty_dirgroup_external_rust_crates_log",
50        ":trusty_dirgroup_external_rust_crates_num-derive",
51        ":trusty_dirgroup_external_rust_crates_num-integer",
52        ":trusty_dirgroup_external_rust_crates_num-traits",
53        ":trusty_dirgroup_external_rust_crates_once_cell",
54        ":trusty_dirgroup_external_rust_crates_openssl",
55        ":trusty_dirgroup_external_rust_crates_openssl-macros",
56        ":trusty_dirgroup_external_rust_crates_pkcs1",
57        ":trusty_dirgroup_external_rust_crates_pkcs8",
58        ":trusty_dirgroup_external_rust_crates_proc-macro2",
59        ":trusty_dirgroup_external_rust_crates_protobuf",
60        ":trusty_dirgroup_external_rust_crates_protobuf-support",
61        ":trusty_dirgroup_external_rust_crates_quote",
62        ":trusty_dirgroup_external_rust_crates_sec1",
63        ":trusty_dirgroup_external_rust_crates_serde",
64        ":trusty_dirgroup_external_rust_crates_serde_derive",
65        ":trusty_dirgroup_external_rust_crates_smccc",
66        ":trusty_dirgroup_external_rust_crates_spin",
67        ":trusty_dirgroup_external_rust_crates_spki",
68        ":trusty_dirgroup_external_rust_crates_static_assertions",
69        ":trusty_dirgroup_external_rust_crates_syn",
70        ":trusty_dirgroup_external_rust_crates_synstructure",
71        ":trusty_dirgroup_external_rust_crates_thiserror",
72        ":trusty_dirgroup_external_rust_crates_thiserror-impl",
73        ":trusty_dirgroup_external_rust_crates_unicode-ident",
74        ":trusty_dirgroup_external_rust_crates_unicode-xid",
75        ":trusty_dirgroup_external_rust_crates_uuid",
76        ":trusty_dirgroup_external_rust_crates_virtio-drivers",
77        ":trusty_dirgroup_external_rust_crates_vm-memory",
78        ":trusty_dirgroup_external_rust_crates_x509-cert",
79        ":trusty_dirgroup_external_rust_crates_zerocopy",
80        ":trusty_dirgroup_external_rust_crates_zerocopy-derive",
81        ":trusty_dirgroup_external_rust_crates_zeroize",
82        ":trusty_dirgroup_external_rust_crates_zeroize_derive",
83        ":trusty_dirgroup_external_scudo",
84        ":trusty_dirgroup_external_trusty_arm-trusted-firmware",
85        ":trusty_dirgroup_external_trusty_bootloader",
86        ":trusty_dirgroup_external_trusty_headers",
87        ":trusty_dirgroup_external_trusty_lk",
88        ":trusty_dirgroup_external_trusty_musl",
89        ":trusty_dirgroup_frameworks_hardware_interfaces",
90        ":trusty_dirgroup_frameworks_native",
91        ":trusty_dirgroup_hardware_interfaces_security_see",
92        ":trusty_dirgroup_hardware_interfaces_staging_security_see",
93        ":trusty_dirgroup_hardware_libhardware",
94        ":trusty_dirgroup_packages_modules_virtualization_libs_libhypervisor_backends",
95        ":trusty_dirgroup_prebuilts_build-tools",
96        ":trusty_dirgroup_prebuilts_clang-tools",
97        ":trusty_dirgroup_prebuilts_clang_host_linux-x86",
98        ":trusty_dirgroup_prebuilts_gcc_linux-x86_host_x86_64-linux-glibc2.17-4.8",
99        ":trusty_dirgroup_prebuilts_misc",
100        ":trusty_dirgroup_prebuilts_rust",
101        ":trusty_dirgroup_system_authgraph",
102        ":trusty_dirgroup_system_core",
103        ":trusty_dirgroup_system_gatekeeper",
104        ":trusty_dirgroup_system_keymaster",
105        ":trusty_dirgroup_system_keymint",
106        ":trusty_dirgroup_system_libbase",
107        ":trusty_dirgroup_system_libcppbor",
108        ":trusty_dirgroup_system_secretkeeper",
109        ":trusty_dirgroup_system_teeui",
110        ":trusty_dirgroup_system_tools_aidl",
111        ":trusty_dirgroup_trusty_device_arm_generic-arm64",
112        ":trusty_dirgroup_trusty_device_x86_generic-x86_64",
113        ":trusty_dirgroup_trusty_kernel",
114        ":trusty_dirgroup_trusty_user_app_avb",
115        ":trusty_dirgroup_trusty_user_app_cast-auth",
116        ":trusty_dirgroup_trusty_user_app_confirmationui",
117        ":trusty_dirgroup_trusty_user_app_gatekeeper",
118        ":trusty_dirgroup_trusty_user_app_keymaster",
119        ":trusty_dirgroup_trusty_user_app_keymint",
120        ":trusty_dirgroup_trusty_user_app_sample",
121        ":trusty_dirgroup_trusty_user_app_secretkeeper",
122        ":trusty_dirgroup_trusty_user_app_storage",
123        ":trusty_dirgroup_trusty_user_base",
124        ":trusty_dirgroup_trusty_vendor_google_aosp",
125    ],
126    srcs: [":trusty_filegroup_external_libcxx"],
127    tools: [
128        "aidl_rust_glue",
129        "aprotoc",
130        "build_trusty",
131        "trusty_metrics_atoms_protoc_plugin",
132    ],
133    keep_gendir: true,
134}
135
136// TODO(b/375543636): determine whether we'll include the Android build ID or not.
137genrule_cmd_template = "(mkdir -p $(genDir)/build-root && " +
138    "cp -t . external/trusty/lk/makefile trusty/vendor/google/aosp/lk_inc.mk && " +
139    "AIDL_RUST_GLUE_TOOL=$(location aidl_rust_glue) PROTOC_TOOL=$(location aprotoc) " +
140    "PROTOC_PLUGIN_BINARY=$(location trusty_metrics_atoms_protoc_plugin) " +
141    "$(location build_trusty) --script-dir trusty/vendor/google/aosp/scripts --buildid AVF_BUILTIN --verbose $$PROJECT_NAME " +
142    "--build-root $(genDir)/build-root 1>$(genDir)/stdout.log 2>$(genDir)/stderr.log || (" +
143    "echo Trusty build FAILED; echo stdout:; cat $(genDir)/stdout.log; echo stderr:; cat $(genDir)/stderr.log; false)) && " +
144    "cp -f $(genDir)/build-root/build-$$PROJECT_NAME/lk.elf $(out)"
145
146genrule {
147    name: "trusty-arm64.lk.elf.gen",
148    defaults: ["lk.elf.defaults"],
149    out: ["generic-arm64.lk.elf"],
150    cmd: "PROJECT_NAME=generic-arm64; " + genrule_cmd_template,
151}
152
153genrule {
154    name: "trusty-arm64-virt-test-debug.lk.elf.gen",
155    defaults: ["lk.elf.defaults"],
156    out: ["generic-arm64-virt-test-debug.lk.elf"],
157    cmd: "PROJECT_NAME=generic-arm64-virt-test-debug; " + genrule_cmd_template,
158}
159
160genrule {
161    name: "trusty-x86_64.lk.elf.gen",
162    defaults: ["lk.elf.defaults"],
163    out: ["generic-x86_64.lk.elf"],
164    cmd: "PROJECT_NAME=generic-x86_64; " + genrule_cmd_template,
165}
166
167genrule {
168    name: "trusty-x86_64-test.lk.elf.gen",
169    defaults: ["lk.elf.defaults"],
170    out: ["generic-x86_64-test.lk.elf"],
171    cmd: "PROJECT_NAME=generic-x86_64-test; " + genrule_cmd_template,
172}
173
174prebuilt_etc {
175    name: "trusty-lk.elf",
176    enabled: false,
177    arch: {
178        arm64: {
179            src: ":trusty-arm64.lk.elf.gen",
180            enabled: true,
181        },
182        x86_64: {
183            src: ":trusty-x86_64.lk.elf.gen",
184            enabled: true,
185        },
186    },
187    filename: "trusty-lk.elf",
188}
189
190prebuilt_etc {
191    name: "trusty-test-lk.elf",
192    enabled: false,
193    arch: {
194        arm64: {
195            src: ":trusty-arm64-virt-test-debug.lk.elf.gen",
196            enabled: true,
197        },
198        x86_64: {
199            src: ":trusty-x86_64-test.lk.elf.gen",
200            enabled: true,
201        },
202    },
203    filename: "trusty-test-lk.elf",
204}
205