| // Copyright 2024 The Pigweed Authors |
| // |
| // 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 |
| // |
| // https://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 { |
| default_applicable_licenses: ["external_pigweed_license"], |
| } |
| |
| filegroup { |
| name: "pw_bluetooth_emboss_definitions", |
| srcs: [ |
| "public/pw_bluetooth/att.emb", |
| "public/pw_bluetooth/hci_android.emb", |
| "public/pw_bluetooth/hci_commands.emb", |
| "public/pw_bluetooth/hci_common.emb", |
| "public/pw_bluetooth/hci_data.emb", |
| "public/pw_bluetooth/hci_events.emb", |
| "public/pw_bluetooth/hci_h4.emb", |
| "public/pw_bluetooth/l2cap_frames.emb", |
| ], |
| } |
| |
| // Generates an emboss header file for a pw_bluetooth emboss definition. All |
| // files imported by the emboss definition must have the pw_bluetooth prefix: |
| // |
| // import "pw_bluetooth/<import_file_name>.emb" |
| // |
| // Since the rule does not know the path of the import files, it copies all |
| // input files into a temp $(genDir)/pw_bluetooth directory and uses $(genDir) |
| // as the import-dir. |
| // |
| // $(in) Emboss definition source file for which to generate the header file |
| // followed by any .emb imports of the source file. |
| // $(out) The generated header file. |
| genrule_defaults { |
| name: "pw_bluetooth_generate_emboss_header", |
| cmd: "in_files=($(in)) && prefix=pw_bluetooth && " + |
| "mkdir -p $${prefix} && cp -t $${prefix} $(in) && " + |
| "python3 $(location embossc_runner_py) " + |
| "$(location :embossc_script) " + |
| "--generate cc " + |
| "--no-cc-enum-traits " + |
| "--import-dir=$(genDir) " + |
| "--output-file=$(out) " + |
| "$${in_files[0]}", |
| tools: [ |
| "embossc_runner_py", |
| ], |
| tool_files: [ |
| ":embossc_script", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_att", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/att.emb", |
| "public/pw_bluetooth/hci_data.emb", |
| "public/pw_bluetooth/l2cap_frames.emb", |
| ], |
| out: [ |
| "pw_bluetooth/att.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_hci_android", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/hci_android.emb", |
| "public/pw_bluetooth/hci_common.emb", |
| ], |
| out: [ |
| "pw_bluetooth/hci_android.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_hci_commands", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/hci_commands.emb", |
| "public/pw_bluetooth/hci_common.emb", |
| ], |
| out: [ |
| "pw_bluetooth/hci_commands.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_hci_common", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/hci_common.emb", |
| ], |
| out: [ |
| "pw_bluetooth/hci_common.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_hci_data", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/hci_data.emb", |
| ], |
| out: [ |
| "pw_bluetooth/hci_data.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_hci_events", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/hci_events.emb", |
| "public/pw_bluetooth/hci_common.emb", |
| ], |
| out: [ |
| "pw_bluetooth/hci_events.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_hci_h4", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/hci_h4.emb", |
| ], |
| out: [ |
| "pw_bluetooth/hci_h4.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_l2cap_frames", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/l2cap_frames.emb", |
| ], |
| out: [ |
| "pw_bluetooth/l2cap_frames.emb.h", |
| ], |
| } |
| |
| genrule { |
| name: "pw_bluetooth_generate_emboss_rfcomm_frames", |
| defaults: [ |
| "pw_bluetooth_generate_emboss_header", |
| ], |
| srcs: [ |
| "public/pw_bluetooth/rfcomm_frames.emb", |
| ], |
| out: [ |
| "pw_bluetooth/rfcomm_frames.emb.h", |
| ], |
| } |
| |
| cc_library_headers { |
| name: "pw_bluetooth_emboss_group", |
| cpp_std: "c++20", |
| vendor_available: true, |
| export_generated_headers: [ |
| "pw_bluetooth_generate_emboss_att", |
| "pw_bluetooth_generate_emboss_hci_android", |
| "pw_bluetooth_generate_emboss_hci_commands", |
| "pw_bluetooth_generate_emboss_hci_common", |
| "pw_bluetooth_generate_emboss_hci_data", |
| "pw_bluetooth_generate_emboss_hci_events", |
| "pw_bluetooth_generate_emboss_hci_h4", |
| "pw_bluetooth_generate_emboss_l2cap_frames", |
| "pw_bluetooth_generate_emboss_rfcomm_frames", |
| ], |
| generated_headers: [ |
| "pw_bluetooth_generate_emboss_att", |
| "pw_bluetooth_generate_emboss_hci_android", |
| "pw_bluetooth_generate_emboss_hci_commands", |
| "pw_bluetooth_generate_emboss_hci_common", |
| "pw_bluetooth_generate_emboss_hci_data", |
| "pw_bluetooth_generate_emboss_hci_events", |
| "pw_bluetooth_generate_emboss_hci_h4", |
| "pw_bluetooth_generate_emboss_l2cap_frames", |
| "pw_bluetooth_generate_emboss_rfcomm_frames", |
| ], |
| host_supported: true, |
| } |
| |
| cc_library_headers { |
| name: "pw_bluetooth_emboss_util_include_dirs", |
| cpp_std: "c++20", |
| vendor_available: true, |
| export_include_dirs: ["public"], |
| host_supported: true, |
| } |