diff --git a/tools/aconfig/aconfig_storage_file/Android.bp b/tools/aconfig/aconfig_storage_file/Android.bp index 03402b5012..8922ba403d 100644 --- a/tools/aconfig/aconfig_storage_file/Android.bp +++ b/tools/aconfig/aconfig_storage_file/Android.bp @@ -14,6 +14,7 @@ rust_defaults { "libprotobuf", "libtempfile", "libmemmap2", + "libcxx", "libthiserror", ], } @@ -78,3 +79,38 @@ cc_library_static { ], host_supported: true, } + +genrule { + name: "libcxx_aconfig_storage_bridge_code", + tools: ["cxxbridge"], + cmd: "$(location cxxbridge) $(in) > $(out)", + srcs: ["src/lib.rs"], + out: ["aconfig_storage/lib.rs.cc"], +} + +genrule { + name: "libcxx_aconfig_storage_bridge_header", + tools: ["cxxbridge"], + cmd: "$(location cxxbridge) $(in) --header > $(out)", + srcs: ["src/lib.rs"], + out: ["aconfig_storage/lib.rs.h"], +} + +rust_ffi_static { + name: "libaconfig_storage_cxx_bridge", + crate_name: "aconfig_storage_cxx_bridge", + host_supported: true, + defaults: ["aconfig_storage_file.defaults"], +} + +cc_library_static { + name: "libaconfig_storage_cc", + srcs: ["aconfig_storage.cpp"], + generated_headers: [ + "cxx-bridge-header", + "libcxx_aconfig_storage_bridge_header" + ], + generated_sources: ["libcxx_aconfig_storage_bridge_code"], + whole_static_libs: ["libaconfig_storage_cxx_bridge"], + export_include_dirs: ["include"], +} diff --git a/tools/aconfig/aconfig_storage_file/src/lib.rs b/tools/aconfig/aconfig_storage_file/src/lib.rs index 130a0e02c5..84e0e90360 100644 --- a/tools/aconfig/aconfig_storage_file/src/lib.rs +++ b/tools/aconfig/aconfig_storage_file/src/lib.rs @@ -256,8 +256,6 @@ pub fn get_boolean_flag_value(container: &str, offset: u32) -> Result ffi::PackageOffsetQueryCXX { ffi::PackageOffsetQueryCXX::new(get_package_offset(container, package)) } /// Get flag start offset cc interlop -#[cfg(feature = "cargo")] pub fn get_flag_offset_cxx( container: &str, package_id: u32, @@ -366,12 +359,10 @@ pub fn get_flag_offset_cxx( } /// Get boolean flag value cc interlop -#[cfg(feature = "cargo")] pub fn get_boolean_flag_value_cxx(container: &str, offset: u32) -> ffi::BooleanFlagValueQueryCXX { ffi::BooleanFlagValueQueryCXX::new(get_boolean_flag_value(container, offset)) } -#[cfg(feature = "cargo")] impl ffi::PackageOffsetQueryCXX { pub(crate) fn new(offset_result: Result, AconfigStorageError>) -> Self { match offset_result { @@ -402,7 +393,6 @@ impl ffi::PackageOffsetQueryCXX { } } -#[cfg(feature = "cargo")] impl ffi::FlagOffsetQueryCXX { pub(crate) fn new(offset_result: Result, AconfigStorageError>) -> Self { match offset_result { @@ -430,7 +420,6 @@ impl ffi::FlagOffsetQueryCXX { } } -#[cfg(feature = "cargo")] impl ffi::BooleanFlagValueQueryCXX { pub(crate) fn new(value_result: Result) -> Self { match value_result {