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
33genrule {
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
43genrule {
44    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_arm64",
45    srcs: [
46        ":microdroid_ramdisk",
47        ":microdroid_first_stage_ramdisk",
48        ":microdroid_gki_modules-6.1-pkvm_experimental-arm64",
49    ],
50    out: ["microdroid_initrd.img"],
51    cmd: "cat $(in) > $(out)",
52}
53
54genrule {
55    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_x86_64",
56    srcs: [
57        ":microdroid_ramdisk",
58        ":microdroid_first_stage_ramdisk",
59        ":microdroid_gki_modules-6.1-pkvm_experimental-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
66genrule {
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
87genrule {
88    name: "microdroid_initrd_debuggable_arm64",
89    tools: ["initrd_bootconfig"],
90    srcs: [
91        ":microdroid_initrd_gen",
92        ":microdroid_bootconfig_debuggable_src",
93    ] + bootconfigs_arm64,
94    out: ["microdroid_initrd_debuggable_arm64"],
95    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
96}
97
98genrule {
99    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable_arm64",
100    tools: ["initrd_bootconfig"],
101    srcs: [
102        ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_arm64",
103        ":microdroid_bootconfig_debuggable_src",
104    ] + bootconfigs_arm64,
105    out: ["microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable_arm64"],
106    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
107}
108
109genrule {
110    name: "microdroid_initrd_debuggable_x86_64",
111    tools: ["initrd_bootconfig"],
112    srcs: [
113        ":microdroid_initrd_gen",
114        ":microdroid_bootconfig_debuggable_src",
115    ] + bootconfigs_x86_64,
116    out: ["microdroid_initrd_debuggable_x86_64"],
117    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
118}
119
120genrule {
121    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable_x86_64",
122    tools: ["initrd_bootconfig"],
123    srcs: [
124        ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_x86_64",
125        ":microdroid_bootconfig_debuggable_src",
126    ] + bootconfigs_x86_64,
127    out: ["microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable_x86_64"],
128    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
129}
130
131genrule {
132    name: "microdroid_initrd_normal_arm64",
133    tools: ["initrd_bootconfig"],
134    srcs: [
135        ":microdroid_initrd_gen",
136        ":microdroid_bootconfig_normal_src",
137    ] + bootconfigs_arm64,
138    out: ["microdroid_initrd_normal_arm64"],
139    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
140}
141
142genrule {
143    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal_arm64",
144    tools: ["initrd_bootconfig"],
145    srcs: [
146        ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_arm64",
147        ":microdroid_bootconfig_normal_src",
148    ] + bootconfigs_arm64,
149    out: ["microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal_arm64"],
150    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
151}
152
153genrule {
154    name: "microdroid_initrd_normal_x86_64",
155    tools: ["initrd_bootconfig"],
156    srcs: [
157        ":microdroid_initrd_gen",
158        ":microdroid_bootconfig_normal_src",
159    ] + bootconfigs_x86_64,
160    out: ["microdroid_initrd_normal_x86_64"],
161    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
162}
163
164genrule {
165    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal_x86_64",
166    tools: ["initrd_bootconfig"],
167    srcs: [
168        ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_x86_64",
169        ":microdroid_bootconfig_normal_src",
170    ] + bootconfigs_x86_64,
171    out: ["microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal_x86_64"],
172    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
173}
174
175prebuilt_etc {
176    name: "microdroid_initrd_debuggable",
177    // We don't have ramdisk for architectures other than x86_64 & arm64
178    src: ":empty_file",
179    arch: {
180        x86_64: {
181            src: ":microdroid_initrd_debuggable_x86_64",
182        },
183        arm64: {
184            src: ":microdroid_initrd_debuggable_arm64",
185        },
186    },
187    filename: "microdroid_initrd_debuggable.img",
188}
189
190prebuilt_etc {
191    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable",
192    // We don't have ramdisk for architectures other than x86_64 & arm64
193    src: ":empty_file",
194    arch: {
195        x86_64: {
196            src: ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable_x86_64",
197        },
198        arm64: {
199            src: ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable_arm64",
200        },
201    },
202    filename: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable.img",
203}
204
205prebuilt_etc {
206    name: "microdroid_initrd_normal",
207    // We don't have ramdisk for architectures other than x86_64 & arm64
208    src: ":empty_file",
209    arch: {
210        x86_64: {
211            src: ":microdroid_initrd_normal_x86_64",
212        },
213        arm64: {
214            src: ":microdroid_initrd_normal_arm64",
215        },
216    },
217    filename: "microdroid_initrd_normal.img",
218}
219
220prebuilt_etc {
221    name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal",
222    // We don't have ramdisk for architectures other than x86_64 & arm64
223    src: ":empty_file",
224    arch: {
225        x86_64: {
226            src: ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal_x86_64",
227        },
228        arm64: {
229            src: ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal_arm64",
230        },
231    },
232    filename: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal.img",
233}
234