• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5rust_ffi_static {
6    name: "libvmbase_example",
7    defaults: ["vmbase_ffi_defaults"],
8    crate_name: "vmbase_example",
9    srcs: ["src/main.rs"],
10    rustlibs: [
11        "libdiced_open_dice_nostd",
12        "liblibfdt_nostd",
13        "liblog_rust_nostd",
14        "libspin_nostd",
15        "libvirtio_drivers",
16        "libvmbase",
17    ],
18    target: {
19        android_arm64: {
20            rustlibs: [
21                "libaarch64_paging",
22            ],
23        },
24    },
25}
26
27genrule {
28    name: "vmbase_image.ld.S.mm",
29    // Soong won't let us use cc_object to preprocess *.ld.S files because it
30    // can't resist feeding any and all *.S files to the assembler, which fails
31    // because linker scripts typically aren't valid assembly. Also, cc_object
32    // rejects inputs that don't end in one of .{s,S,c,cpp,cc,cxx,mm}. So keep
33    // the proper extension (.ld.S) for the file in VCS and use this convoluted
34    // extra step to please Soong by pretending that our linker script is in
35    // fact some Object C++ code, which fortunately it doesn't try to compile.
36    srcs: ["image.ld.S"],
37    out: ["image.ld.S.mm"],
38    cmd: "cp $(in) $(out)",
39    visibility: ["//visibility:private"],
40}
41
42cc_defaults {
43    name: "vmbase_example_ld_defaults",
44    defaults: ["vmbase_cc_defaults"],
45    cflags: [
46        "-E",
47        "-P",
48        "-xassembler-with-cpp", // allow C preprocessor directives
49        // Soong passes an implicit -c before -E. Suppress the warning about -c
50        // being unused.
51        "-Wno-unused-command-line-argument",
52    ],
53    srcs: [":vmbase_image.ld.S.mm"],
54    visibility: ["//visibility:private"],
55}
56
57cc_object {
58    name: "vmbase_example_bios.ld",
59    defaults: ["vmbase_example_ld_defaults"],
60    cflags: ["-DVMBASE_EXAMPLE_IS_BIOS"],
61}
62
63cc_object {
64    name: "vmbase_example_kernel.ld",
65    defaults: ["vmbase_example_ld_defaults"],
66    cflags: ["-DVMBASE_EXAMPLE_IS_KERNEL"],
67}
68
69cc_defaults {
70    name: "vmbase_example_elf_defaults",
71    defaults: ["vmbase_elf_defaults"],
72    srcs: [
73        "idmap.S",
74    ],
75    static_libs: [
76        "libvmbase_example",
77    ],
78}
79
80cc_binary {
81    name: "vmbase_example_bios",
82    defaults: ["vmbase_example_elf_defaults"],
83    asflags: ["-DVMBASE_EXAMPLE_IS_BIOS"],
84    linker_scripts: [
85        ":vmbase_example_bios.ld",
86        ":vmbase_sections",
87    ],
88}
89
90cc_binary {
91    name: "vmbase_example_kernel",
92    defaults: ["vmbase_example_elf_defaults"],
93    asflags: ["-DVMBASE_EXAMPLE_IS_KERNEL"],
94    linker_scripts: [
95        ":vmbase_example_kernel.ld",
96        ":vmbase_sections",
97    ],
98}
99
100raw_binary {
101    name: "vmbase_example_bios_bin",
102    stem: "vmbase_example_bios.bin",
103    src: ":vmbase_example_bios",
104    enabled: false,
105    target: {
106        android_arm64: {
107            enabled: true,
108        },
109    },
110}
111
112raw_binary {
113    name: "vmbase_example_kernel_bin",
114    stem: "vmbase_example_kernel.bin",
115    src: ":vmbase_example_kernel",
116    enabled: false,
117    target: {
118        android_arm64: {
119            enabled: true,
120        },
121    },
122}
123