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