Create a Rust API for part of //aos:configuration
Change-Id: I00044634f437e72487aaaca28e9a00fe65a4aa48
Signed-off-by: Brian Silverman <bsilver16384@gmail.com>
diff --git a/aos/BUILD b/aos/BUILD
index 9394295..1380f7d 100644
--- a/aos/BUILD
+++ b/aos/BUILD
@@ -1,5 +1,6 @@
load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library", "flatbuffer_py_library", "flatbuffer_rust_library", "flatbuffer_ts_library")
load("@rules_rust//rust:defs.bzl", "rust_library", "rust_test")
+load("//tools/build_rules:autocxx.bzl", "autocxx_library")
exports_files(["aos_dump_autocomplete.sh"])
@@ -222,6 +223,14 @@
visibility = ["//visibility:public"],
)
+flatbuffer_rust_library(
+ name = "configuration_rust_fbs",
+ srcs = ["configuration.fbs"],
+ crate_name = "aos_configuration_fbs",
+ target_compatible_with = ["//tools/platforms/rust:has_support"],
+ visibility = ["//visibility:public"],
+)
+
cc_library(
name = "configuration",
srcs = [
@@ -246,6 +255,51 @@
],
)
+cc_library(
+ name = "configuration_for_rust",
+ srcs = [
+ "configuration_for_rust.cc",
+ ],
+ hdrs = [
+ "configuration_for_rust.h",
+ ],
+ deps = [
+ ":configuration",
+ ":for_rust",
+ "//third_party/cargo:cxx_cc",
+ ],
+)
+
+autocxx_library(
+ name = "configuration_rs",
+ srcs = ["configuration.rs"],
+ crate_name = "aos_configuration",
+ libs = [
+ ":configuration",
+ ":configuration_for_rust",
+ ":configuration_fbs",
+ ],
+ override_cc_toolchain = "@llvm_toolchain//:cc-clang-x86_64-linux",
+ target_compatible_with = ["//tools/platforms/rust:has_support"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":configuration_rust_fbs",
+ ":flatbuffers_rs",
+ "//third_party/cargo:thiserror",
+ ],
+)
+
+rust_test(
+ name = "configuration_rs_test",
+ crate = ":configuration_rs",
+ data = [
+ "//aos/testdata:test_configs",
+ ],
+ # TODO: Make Rust play happy with pic vs nopic. Details at:
+ # https://github.com/bazelbuild/rules_rust/issues/118
+ rustc_flags = ["-Crelocation-model=static"],
+)
+
flatbuffer_ts_library(
name = "json_to_flatbuffer_fbs_ts",
srcs = ["json_to_flatbuffer.fbs"],
@@ -637,3 +691,14 @@
"@com_github_google_glog//:glog",
],
)
+
+cc_library(
+ name = "for_rust",
+ hdrs = [
+ "for_rust.h",
+ ],
+ visibility = ["//visibility:public"],
+ deps = [
+ "//third_party/cargo:cxx_cc",
+ ],
+)