blob: 202d26f5ba390a3fb1ff9315df04c40932e722d4 [file] [log] [blame]
package {
default_applicable_licenses: ["Android-Apache-2.0"],
}
rust_defaults {
name: "librustutils_defaults",
srcs: ["lib.rs"],
rustlibs: [
"libanyhow",
"libcutils_bindgen",
"liblibc",
"libnix",
"libsystem_properties_bindgen_sys",
"libthiserror",
],
}
rust_library {
name: "librustutils",
crate_name: "rustutils",
defaults: ["librustutils_defaults"],
shared_libs: [
"libbase",
"libcutils",
],
apex_available: [
"//apex_available:platform",
"com.android.btservices",
"com.android.compos",
"com.android.uwb",
"com.android.virt",
],
product_available: true,
vendor_available: true,
min_sdk_version: "29",
}
rust_test {
name: "librustutils_test",
crate_name: "librustutils_test_test",
defaults: ["librustutils_defaults"],
test_suites: ["general-tests"],
auto_gen_config: true,
}
// Build a separate rust_library rather than depending directly on libsystem_properties_bindgen,
// to work around the fact that rust_bindgen targets only produce rlibs and not dylibs, which would
// result in duplicate conflicting versions of liblibc. This will hopefully be fixed in the build
// system, at which point we can delete this target and go back to using libsystem_properties_bindgen
// directly.
rust_library {
name: "libsystem_properties_bindgen_sys",
crate_name: "system_properties_bindgen",
srcs: [
":libsystem_properties_bindgen",
],
rustlibs: [
"liblibc",
],
product_available: true,
vendor_available: true,
apex_available: [
"//apex_available:platform",
"com.android.btservices",
"com.android.compos",
"com.android.uwb",
"com.android.virt",
],
min_sdk_version: "29",
lints: "none",
clippy_lints: "none",
}
rust_bindgen {
name: "libsystem_properties_bindgen",
wrapper_src: "bindgen/system_properties.h",
crate_name: "system_properties_bindgen",
source_stem: "bindings",
bindgen_flags: [
"--allowlist-function=__system_property_find",
"--allowlist-function=__system_property_foreach",
"--allowlist-function=__system_property_read_callback",
"--allowlist-function=__system_property_set",
"--allowlist-function=__system_property_wait",
"--blocklist-type=timespec",
"--raw-line",
"use libc::timespec;",
],
rustlibs: [
"liblibc",
],
product_available: true,
vendor_available: true,
apex_available: [
"//apex_available:platform",
"com.android.btservices",
"com.android.compos",
"com.android.uwb",
"com.android.virt",
],
min_sdk_version: "29",
}
rust_bindgen {
name: "libcutils_bindgen",
wrapper_src: "bindgen/cutils.h",
crate_name: "cutils_bindgen",
source_stem: "bindings",
header_libs: ["libcutils_headers"],
bindgen_flags: [
"--allowlist-function", "android_get_control_socket",
"--allowlist-var", "AID_KEYSTORE",
"--allowlist-var", "AID_ROOT",
"--allowlist-var", "AID_SHELL",
"--allowlist-var", "AID_SYSTEM",
"--allowlist-var", "AID_USER_OFFSET",
],
product_available: true,
vendor_available: true,
apex_available: [
"//apex_available:platform",
"com.android.btservices",
"com.android.compos",
"com.android.uwb",
"com.android.virt",
],
min_sdk_version: "29",
}
rust_test {
name: "libsystem_properties_bindgen_test",
srcs: [":libsystem_properties_bindgen"],
crate_name: "system_properties_bindgen_test",
test_suites: ["general-tests"],
rustlibs: [
"liblibc",
],
auto_gen_config: true,
clippy_lints: "none",
lints: "none",
}
rust_test {
name: "libcutils_bindgen_test",
srcs: [":libcutils_bindgen"],
crate_name: "cutils_bindgen_test",
test_suites: ["general-tests"],
auto_gen_config: true,
clippy_lints: "none",
lints: "none",
}
rust_fuzz {
name: "system_properties_fuzzer",
srcs: ["system_properties_fuzzer.rs"],
rustlibs: [
"libarbitrary",
"librustutils",
],
fuzz_config: {
fuzz_on_haiku_device: true,
fuzz_on_haiku_host: true,
},
}