1package { 2 default_applicable_licenses: ["Android-Apache-2.0"], 3} 4 5rust_defaults { 6 name: "aconfig_storage_file.defaults", 7 edition: "2021", 8 lints: "none", 9 rustlibs: [ 10 "libanyhow", 11 "libthiserror", 12 "libtempfile", 13 "libprotobuf", 14 "libclap", 15 "libcxx", 16 "libaconfig_storage_protos", 17 ], 18} 19 20rust_library { 21 name: "libaconfig_storage_file", 22 crate_name: "aconfig_storage_file", 23 host_supported: true, 24 defaults: ["aconfig_storage_file.defaults"], 25 srcs: ["src/lib.rs"], 26 apex_available: [ 27 "//apex_available:platform", 28 "//apex_available:anyapex", 29 ], 30 min_sdk_version: "29", 31 vendor_available: true, 32 product_available: true, 33} 34 35rust_binary_host { 36 name: "aconfig-storage", 37 defaults: ["aconfig_storage_file.defaults"], 38 srcs: ["src/main.rs"], 39 rustlibs: ["libaconfig_storage_file"], 40} 41 42rust_test_host { 43 name: "aconfig_storage_file.test", 44 test_suites: ["general-tests"], 45 defaults: ["aconfig_storage_file.defaults"], 46 srcs: ["src/lib.rs"], 47} 48 49rust_protobuf { 50 name: "libaconfig_storage_protos", 51 protos: ["protos/aconfig_storage_metadata.proto"], 52 crate_name: "aconfig_storage_protos", 53 source_stem: "aconfig_storage_protos", 54 host_supported: true, 55 apex_available: [ 56 "//apex_available:platform", 57 "//apex_available:anyapex", 58 ], 59 min_sdk_version: "29", 60 vendor_available: true, 61 product_available: true, 62} 63 64cc_library { 65 name: "libaconfig_storage_protos_cc", 66 proto: { 67 export_proto_headers: true, 68 type: "lite", 69 }, 70 srcs: ["protos/aconfig_storage_metadata.proto"], 71 apex_available: [ 72 "//apex_available:platform", 73 "//apex_available:anyapex", 74 ], 75 host_supported: true, 76 min_sdk_version: "29", 77 vendor_available: true, 78 product_available: true, 79 double_loadable: true, 80} 81 82// cxx source codegen from rust api 83genrule { 84 name: "libcxx_aconfig_storage_file_bridge_code", 85 tools: ["cxxbridge"], 86 cmd: "$(location cxxbridge) $(in) > $(out)", 87 srcs: ["src/lib.rs"], 88 out: ["aconfig_storage/lib.rs.cc"], 89} 90 91// cxx header codegen from rust api 92genrule { 93 name: "libcxx_aconfig_storage_file_bridge_header", 94 tools: ["cxxbridge"], 95 cmd: "$(location cxxbridge) $(in) --header > $(out)", 96 srcs: ["src/lib.rs"], 97 out: ["aconfig_storage/lib.rs.h"], 98} 99 100// a static cc lib based on generated code 101rust_ffi_static { 102 name: "libaconfig_storage_file_cxx_bridge", 103 crate_name: "aconfig_storage_file_cxx_bridge", 104 host_supported: true, 105 vendor_available: true, 106 product_available: true, 107 srcs: ["src/lib.rs"], 108 defaults: ["aconfig_storage_file.defaults"], 109 apex_available: [ 110 "//apex_available:platform", 111 "//apex_available:anyapex", 112 ], 113 min_sdk_version: "29", 114} 115 116// storage file parse api cc interface 117cc_library { 118 name: "libaconfig_storage_file_cc", 119 srcs: ["aconfig_storage_file.cpp"], 120 generated_headers: [ 121 "cxx-bridge-header", 122 "libcxx_aconfig_storage_file_bridge_header", 123 ], 124 generated_sources: ["libcxx_aconfig_storage_file_bridge_code"], 125 whole_static_libs: ["libaconfig_storage_file_cxx_bridge"], 126 export_include_dirs: ["include"], 127 host_supported: true, 128 vendor_available: true, 129 product_available: true, 130 shared_libs: [ 131 "libbase", 132 ], 133 apex_available: [ 134 "//apex_available:platform", 135 "//apex_available:anyapex", 136 ], 137 min_sdk_version: "29", 138 double_loadable: true, 139} 140