1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5rust_binary_host {
6    name: "initrd_bootconfig",
7    defaults: ["avf_build_flags_rust"],
8    srcs: ["src/main.rs"],
9    rustlibs: [
10        "libanyhow",
11        "libclap",
12    ],
13    prefer_rlib: true,
14}
15
16rust_test_host {
17    name: "initrd_bootconfig.test",
18    defaults: ["avf_build_flags_rust"],
19    srcs: ["src/main.rs"],
20    rustlibs: [
21        "libanyhow",
22        "libclap",
23    ],
24    prefer_rlib: true,
25    test_suites: ["general-tests"],
26}
27
28python_binary_host {
29    name: "gen_vbmeta_bootconfig",
30    srcs: ["gen_vbmeta_bootconfig.py"],
31}
32
33java_genrule {
34    name: "microdroid_initrd_gen",
35    srcs: [
36        ":microdroid_ramdisk",
37        ":microdroid_first_stage_ramdisk",
38    ],
39    out: ["microdroid_initrd.img"],
40    cmd: "cat $(in) > $(out)",
41}
42
43java_genrule {
44    name: "microdroid_gki-android15-6.6_initrd_gen_arm64",
45    srcs: [
46        ":microdroid_ramdisk",
47        ":microdroid_first_stage_ramdisk",
48        ":microdroid_gki_modules-android15-6.6-arm64",
49    ],
50    out: ["microdroid_initrd.img"],
51    cmd: "cat $(in) > $(out)",
52}
53
54java_genrule {
55    name: "microdroid_gki-android15-6.6_initrd_gen_x86_64",
56    srcs: [
57        ":microdroid_ramdisk",
58        ":microdroid_first_stage_ramdisk",
59        ":microdroid_gki_modules-android15-6.6-x86_64",
60    ],
61    out: ["microdroid_initrd.img"],
62    cmd: "cat $(in) > $(out)",
63}
64
65// This contains vbmeta hashes & related (boot)configs which are passed to kernel/init
66java_genrule {
67    name: "microdroid_vbmeta_bootconfig_gen",
68    srcs: [":microdroid_vbmeta"],
69    out: ["bootconfig_microdroid_vbmeta"],
70    tools: [
71        "gen_vbmeta_bootconfig",
72        "avbtool",
73    ],
74    cmd: "$(location gen_vbmeta_bootconfig) $(location avbtool) $(in) > $(out)",
75}
76
77bootconfigs_arm64 = [
78    ":microdroid_bootconfig_arm64_gen",
79    ":microdroid_vbmeta_bootconfig_gen",
80]
81
82bootconfigs_x86_64 = [
83    ":microdroid_bootconfig_x86_64_gen",
84    ":microdroid_vbmeta_bootconfig_gen",
85]
86
87bootconfigs_x86_64_16k = bootconfigs_x86_64 + [
88    ":microdroid_16k_bootconfig_x86_64_gen",
89]
90
91java_genrule {
92    name: "microdroid_initrd_debuggable_arm64",
93    tools: ["initrd_bootconfig"],
94    srcs: [
95        ":microdroid_initrd_gen",
96        ":microdroid_bootconfig_debuggable_src",
97    ] + bootconfigs_arm64,
98    out: ["microdroid_initrd_debuggable_arm64"],
99    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
100}
101
102java_genrule {
103    name: "microdroid_gki-android15-6.6_initrd_debuggable_arm64",
104    tools: ["initrd_bootconfig"],
105    srcs: [
106        ":microdroid_gki-android15-6.6_initrd_gen_arm64",
107        ":microdroid_bootconfig_debuggable_src",
108    ] + bootconfigs_arm64,
109    out: ["microdroid_gki-android15-6.6_initrd_debuggable_arm64"],
110    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
111}
112
113java_genrule {
114    name: "microdroid_initrd_debuggable_x86_64",
115    tools: ["initrd_bootconfig"],
116    srcs: [
117        ":microdroid_initrd_gen",
118        ":microdroid_bootconfig_debuggable_src",
119    ] + bootconfigs_x86_64,
120    out: ["microdroid_initrd_debuggable_x86_64"],
121    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
122}
123
124java_genrule {
125    name: "microdroid_16k_initrd_debuggable_x86_64",
126    tools: ["initrd_bootconfig"],
127    srcs: [
128        ":microdroid_initrd_gen",
129        ":microdroid_bootconfig_debuggable_src",
130    ] + bootconfigs_x86_64_16k,
131    out: ["microdroid_16k_initrd_debuggable_x86_64"],
132    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
133}
134
135java_genrule {
136    name: "microdroid_gki-android15-6.6_initrd_debuggable_x86_64",
137    tools: ["initrd_bootconfig"],
138    srcs: [
139        ":microdroid_gki-android15-6.6_initrd_gen_x86_64",
140        ":microdroid_bootconfig_debuggable_src",
141    ] + bootconfigs_x86_64,
142    out: ["microdroid_gki-android15-6.6_initrd_debuggable_x86_64"],
143    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
144}
145
146java_genrule {
147    name: "microdroid_initrd_normal_arm64",
148    tools: ["initrd_bootconfig"],
149    srcs: [
150        ":microdroid_initrd_gen",
151        ":microdroid_bootconfig_normal_src",
152    ] + bootconfigs_arm64,
153    out: ["microdroid_initrd_normal_arm64"],
154    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
155}
156
157java_genrule {
158    name: "microdroid_gki-android15-6.6_initrd_normal_arm64",
159    tools: ["initrd_bootconfig"],
160    srcs: [
161        ":microdroid_gki-android15-6.6_initrd_gen_arm64",
162        ":microdroid_bootconfig_normal_src",
163    ] + bootconfigs_arm64,
164    out: ["microdroid_gki-android15-6.6_initrd_normal_arm64"],
165    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
166}
167
168java_genrule {
169    name: "microdroid_initrd_normal_x86_64",
170    tools: ["initrd_bootconfig"],
171    srcs: [
172        ":microdroid_initrd_gen",
173        ":microdroid_bootconfig_normal_src",
174    ] + bootconfigs_x86_64,
175    out: ["microdroid_initrd_normal_x86_64"],
176    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
177}
178
179java_genrule {
180    name: "microdroid_16k_initrd_normal_x86_64",
181    tools: ["initrd_bootconfig"],
182    srcs: [
183        ":microdroid_initrd_gen",
184        ":microdroid_bootconfig_normal_src",
185    ] + bootconfigs_x86_64_16k,
186    out: ["microdroid_16k_initrd_normal_x86_64"],
187    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
188}
189
190java_genrule {
191    name: "microdroid_gki-android15-6.6_initrd_normal_x86_64",
192    tools: ["initrd_bootconfig"],
193    srcs: [
194        ":microdroid_gki-android15-6.6_initrd_gen_x86_64",
195        ":microdroid_bootconfig_normal_src",
196    ] + bootconfigs_x86_64,
197    out: ["microdroid_gki-android15-6.6_initrd_normal_x86_64"],
198    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
199}
200
201prebuilt_etc {
202    name: "microdroid_initrd_debuggable",
203    // We don't have ramdisk for architectures other than x86_64 & arm64
204    src: ":empty_file",
205    arch: {
206        x86_64: {
207            src: ":microdroid_initrd_debuggable_x86_64",
208        },
209        arm64: {
210            src: ":microdroid_initrd_debuggable_arm64",
211        },
212    },
213    filename: "microdroid_initrd_debuggable.img",
214}
215
216prebuilt_etc {
217    name: "microdroid_16k_initrd_debuggable",
218    // We don't have ramdisk for architectures other than x86_64 & arm64
219    src: ":empty_file",
220    arch: {
221        // For x86_64 we emulate 16k by adding `page_shift=14` to bootconfig, that's why we need
222        // separate initrd.
223        x86_64: {
224            src: ":microdroid_16k_initrd_debuggable_x86_64",
225        },
226        // For arm64, the initrd for 16k kernel is the same.
227        arm64: {
228            src: ":microdroid_initrd_debuggable_arm64",
229        },
230    },
231    filename: "microdroid_16k_initrd_debuggable.img",
232}
233
234prebuilt_etc {
235    name: "microdroid_gki-android15-6.6_initrd_debuggable",
236    // We don't have ramdisk for architectures other than x86_64 & arm64
237    src: ":empty_file",
238    arch: {
239        arm64: {
240            src: ":microdroid_gki-android15-6.6_initrd_debuggable_arm64",
241        },
242        x86_64: {
243            src: ":microdroid_gki-android15-6.6_initrd_debuggable_x86_64",
244        },
245    },
246    filename: "microdroid_gki-android15-6.6_initrd_debuggable.img",
247}
248
249prebuilt_etc {
250    name: "microdroid_initrd_normal",
251    // We don't have ramdisk for architectures other than x86_64 & arm64
252    src: ":empty_file",
253    arch: {
254        x86_64: {
255            src: ":microdroid_initrd_normal_x86_64",
256        },
257        arm64: {
258            src: ":microdroid_initrd_normal_arm64",
259        },
260    },
261    filename: "microdroid_initrd_normal.img",
262}
263
264prebuilt_etc {
265    name: "microdroid_16k_initrd_normal",
266    // We don't have ramdisk for architectures other than x86_64 & arm64
267    src: ":empty_file",
268    arch: {
269        // For x86_64 we emulate 16k by adding `page_shift=14` to bootconfig, that's why we need
270        // separate initrd.
271        x86_64: {
272            src: ":microdroid_16k_initrd_normal_x86_64",
273        },
274        // For arm64, the initrd for 16k kernel is the same.
275        arm64: {
276            src: ":microdroid_initrd_normal_arm64",
277        },
278    },
279    filename: "microdroid_16k_initrd_normal.img",
280}
281
282prebuilt_etc {
283    name: "microdroid_gki-android15-6.6_initrd_normal",
284    // We don't have ramdisk for architectures other than x86_64 & arm64
285    src: ":empty_file",
286    arch: {
287        arm64: {
288            src: ":microdroid_gki-android15-6.6_initrd_normal_arm64",
289        },
290        x86_64: {
291            src: ":microdroid_gki-android15-6.6_initrd_normal_x86_64",
292        },
293    },
294    filename: "microdroid_gki-android15-6.6_initrd_normal.img",
295}
296