group("bluetooth") {
deps = [
"//bt/main:bluetooth",
- "//bt/service:bluetoothtbd",
+ "//bt/main:bluetooth-static",
+ #"//bt/service:bluetoothtbd",
]
}
# See the License for the specific language governing permissions and
# limitations under the License.
-[package]
-name = "bt_shim_ffi"
-version = "0.0.1"
-edition = "2018"
+[workspace]
-[dependencies]
-# BT dependencies
-bt_common = { path = "gd/rust/common" }
-bt_facade_helpers = { path = "gd/rust/facade" }
-bt_hal = { path = "gd/rust/hal" }
-bt_hci = { path = "gd/rust/hci" }
-bt_main = { path = "gd/rust/main" }
-bt_packets = { path = "gd/rust/packets" }
-
-# All external dependencies. Keep all versions at build/rust/Cargo.toml
-bindgen = "0.51"
-bytes = "1.0"
-cxx = { version = "0.5.9", features = ["c++17"] }
-env_logger = "0.8"
-futures = "0.3"
-grpcio = { version = "0.7", features = ["protobuf", "protobuf-codec", "openssl"] }
-grpcio-sys = { version = "*", features = ["openssl"] }
-lazy_static = "1.4"
-log = "0.4"
-nix = "0.19"
-num-derive = "0.3"
-num-traits = "0.2"
-paste = "1.0"
-proc-macro2 = "1.0.24"
-protobuf = "2.0"
-protoc-grpcio = "2.0"
-protoc-rust = "2.0"
-quote = "1.0.8"
-thiserror = "1.0"
-syn = { version = "1.0.58", features = ['default', 'full'] }
-tokio = { version = "1.0", features = ['bytes', 'fs', 'io-util', 'libc', 'macros', 'memchr', 'mio', 'net', 'num_cpus', 'rt', 'rt-multi-thread', 'sync', 'time', 'tokio-macros'] }
-tokio-stream = "0.1"
-walkdir = "2.2"
-
-
-[lib]
-path = "gd/rust/shim/src/lib.rs"
-crate-type = ["staticlib"]
+members = [
+ "gd/rust/shim",
+ "gd/rust/linux/mgmt",
+ "gd/rust/linux/adapter",
+]
# limitations under the License.
[package]
-name = "bt_facade_helpers"
+name = "bluetooth_with_facades"
version = "0.0.1"
edition = "2018"
protobuf = "*"
tokio = "*"
+# Binary-only deps
+clap = "*"
+lazy_static = "*"
+nix = "*"
+bt_common = { path = "../common" }
+
+
+[[bin]]
+name = "bluetooth_with_facades"
+path = "src/main.rs"
+
[lib]
-path = "helpers/lib.rs"
+path = "src/lib.rs"
crate-type = ["rlib"]
--- /dev/null
+#
+# Copyright 2021 Google, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[package]
+name = "bt_facade_helpers"
+version = "0.0.1"
+edition = "2018"
+
+[dependencies]
+# GD bluetooth deps
+bt_facade_proto = { path = "../../facade_proto" }
+bt_packets = { path = "../../packets" }
+
+# External deps
+bytes = "*"
+cxx = "*"
+futures = "*"
+grpcio = "*"
+log = "*"
+protobuf = "*"
+tokio = "*"
+
+[lib]
+path = "lib.rs"
+crate-type = ["rlib"]
+
[dependencies]
# BT dependencies
bt_common = { path = "../common" }
-bt_facade_helpers = { path = "../facade" }
+bt_facade_helpers = { path = "../facade/helpers" }
bt_facade_proto = { path = "../facade_proto" }
bt_packets = { path = "../packets" }
gddi = { path = "../gddi" }
bt_common = { path = "../common" }
bt_hci_custom_types = { path = "custom_types" }
bt_hal = { path = "../hal" }
-bt_facade_helpers = { path = "../facade" }
+bt_facade_helpers = { path = "../facade/helpers" }
bt_facade_proto = { path = "../facade_proto" }
bt_packets = { path = "../packets" }
gddi = { path = "../gddi" }
--- /dev/null
+#
+# Copyright 2021 Google, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[package]
+name = "bluetooth"
+version = "0.0.1"
+edition = "2018"
+
+[dependencies]
+# BT dependencies
+bt_shim = { path = "../../shim" }
+
+[build-dependencies]
+pkg-config = "0.3"
+
+[[bin]]
+name = "bluetoothd"
+path = "src/main.rs"
+
--- /dev/null
+use pkg_config::Config;
+
+fn main() {
+ // The main linking point with c++ code is the libbluetooth-static.a
+ // These includes all the symbols built via C++ but doesn't include other
+ // links (i.e. pkg-config)
+ println!("cargo:rustc-link-lib=static=bluetooth-static");
+
+ // A few dynamic links
+ println!("cargo:rustc-link-lib=dylib=flatbuffers");
+ println!("cargo:rustc-link-lib=dylib=protobuf");
+ println!("cargo:rustc-link-lib=dylib=resolv");
+
+ // Clang requires -lc++ instead of -lstdc++
+ println!("cargo:rustc-link-lib=c++");
+
+ // A few more dependencies from pkg-config. These aren't included as part of
+ // the libbluetooth-static.a
+ Config::new().probe("libchrome").unwrap();
+ Config::new().probe("libmodp_b64").unwrap();
+ Config::new().probe("tinyxml2").unwrap();
+
+ println!("cargo:rerun-if-changed=build.rs");
+ println!("cargo:rerun-if-changed=libbluetooth-static.a");
+}
--- /dev/null
+extern crate bt_shim;
+
+fn main() {
+ println!("Bluetooth Adapter Daemon");
+}
--- /dev/null
+#
+# Copyright 2021 Google, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[package]
+name = "btmgmt"
+version = "0.0.1"
+edition = "2018"
+
+[[bin]]
+name = "btmgmtd"
+path = "src/main.rs"
+
--- /dev/null
+fn main() {
+ println!("Bluetooth Management Daemon");
+}
--- /dev/null
+#
+# Copyright 2021 Google, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[package]
+name = "bt_shim"
+version = "0.0.1"
+edition = "2018"
+
+[dependencies]
+# BT dependencies
+bt_common = { path = "../common" }
+bt_facade_helpers = { path = "../facade/helpers" }
+bt_hal = { path = "../hal" }
+bt_hci = { path = "../hci" }
+bt_main = { path = "../main" }
+bt_packets = { path = "../packets" }
+
+# All external dependencies. Keep all versions at build/rust/Cargo.toml
+bindgen = "0.51"
+bytes = "1.0"
+cxx = { version = "1.0.42", features = ["c++17"] }
+env_logger = "0.8"
+futures = "0.3"
+grpcio = { version = "0.7", features = ["protobuf", "protobuf-codec", "openssl"] }
+grpcio-sys = { version = "*", features = ["openssl"] }
+lazy_static = "1.4"
+log = "0.4"
+nix = "0.19"
+num-derive = "0.3"
+num-traits = "0.2"
+paste = "1.0"
+proc-macro2 = "1.0.24"
+protobuf = "2.0"
+protoc-grpcio = "2.0"
+protoc-rust = "2.0"
+quote = "1.0.8"
+thiserror = "1.0"
+syn = { version = "1.0.58", features = ['default', 'full'] }
+tokio = { version = "1.0", features = ['bytes', 'fs', 'io-util', 'libc', 'macros', 'memchr', 'mio', 'net', 'num_cpus', 'rt', 'rt-multi-thread', 'sync', 'time', 'tokio-macros'] }
+tokio-stream = "0.1"
+walkdir = "2.2"
+
+[lib]
+path = "src/lib.rs"
include_dirs = [ "../include" ]
}
+# Complete static library for linking with Rust
+static_library("bluetooth-static") {
+ complete_static_lib = true
+
+ sources = [
+ "//bt/service/hal/bluetooth_interface.cc",
+ "//bt/service/logging_helpers.cc",
+ ]
+
+ configs += [
+ "//bt:target_defaults"
+ ]
+
+ deps = [
+ ":bluetooth",
+ ]
+}
+
# Configure libbluetooth as either dynamic or static library
if (defined(use.bt_dynlib) && use.bt_dynlib) {
lib_type = "shared_library"
}
target(lib_type, "bluetooth") {
- # HAL layer
- sources = [ "//bt/btif/src/bluetooth.cc" ]
- # platform specific
- sources += [
+ # Platform specific
+ sources = [
"bte_conf.cc",
"bte_init_cpp_logging.cc",
"bte_logmsg.cc",
configs += [ ":service_config" ]
}
-source_set("service") {
+static_library("service") {
sources = [
"common/bluetooth/a2dp_codec_config.cc",
"common/bluetooth/adapter_state.cc",
"ssl",
"crypto",
]
+
+ lib_dirs = [
+ "${root_out_dir}/rust"
+ ]
}
if (use.test) {