1*61c4878aSAndroid Build Coastguard Worker// Copyright 2024 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker// 3*61c4878aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker// use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker// the License at 6*61c4878aSAndroid Build Coastguard Worker// 7*61c4878aSAndroid Build Coastguard Worker// https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker// 9*61c4878aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker// License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker// the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerpackage { 16*61c4878aSAndroid Build Coastguard Worker default_applicable_licenses: ["external_pigweed_license"], 17*61c4878aSAndroid Build Coastguard Worker} 18*61c4878aSAndroid Build Coastguard Worker 19*61c4878aSAndroid Build Coastguard Workerfilegroup { 20*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_emboss_definitions", 21*61c4878aSAndroid Build Coastguard Worker srcs: [ 22*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/att.emb", 23*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_android.emb", 24*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_commands.emb", 25*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_common.emb", 26*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_data.emb", 27*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_events.emb", 28*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_h4.emb", 29*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/l2cap_frames.emb", 30*61c4878aSAndroid Build Coastguard Worker ], 31*61c4878aSAndroid Build Coastguard Worker} 32*61c4878aSAndroid Build Coastguard Worker 33*61c4878aSAndroid Build Coastguard Worker// Generates an emboss header file for a pw_bluetooth emboss definition. All 34*61c4878aSAndroid Build Coastguard Worker// files imported by the emboss definition must have the pw_bluetooth prefix: 35*61c4878aSAndroid Build Coastguard Worker// 36*61c4878aSAndroid Build Coastguard Worker// import "pw_bluetooth/<import_file_name>.emb" 37*61c4878aSAndroid Build Coastguard Worker// 38*61c4878aSAndroid Build Coastguard Worker// Since the rule does not know the path of the import files, it copies all 39*61c4878aSAndroid Build Coastguard Worker// input files into a temp $(genDir)/pw_bluetooth directory and uses $(genDir) 40*61c4878aSAndroid Build Coastguard Worker// as the import-dir. 41*61c4878aSAndroid Build Coastguard Worker// 42*61c4878aSAndroid Build Coastguard Worker// $(in) Emboss definition source file for which to generate the header file 43*61c4878aSAndroid Build Coastguard Worker// followed by any .emb imports of the source file. 44*61c4878aSAndroid Build Coastguard Worker// $(out) The generated header file. 45*61c4878aSAndroid Build Coastguard Workergenrule_defaults { 46*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_header", 47*61c4878aSAndroid Build Coastguard Worker cmd: "in_files=($(in)) && prefix=pw_bluetooth && " + 48*61c4878aSAndroid Build Coastguard Worker "mkdir -p $${prefix} && cp -t $${prefix} $(in) && " + 49*61c4878aSAndroid Build Coastguard Worker "python3 $(location embossc_runner_py) " + 50*61c4878aSAndroid Build Coastguard Worker "$(location :embossc_script) " + 51*61c4878aSAndroid Build Coastguard Worker "--generate cc " + 52*61c4878aSAndroid Build Coastguard Worker "--no-cc-enum-traits " + 53*61c4878aSAndroid Build Coastguard Worker "--import-dir=$(genDir) " + 54*61c4878aSAndroid Build Coastguard Worker "--output-file=$(out) " + 55*61c4878aSAndroid Build Coastguard Worker "$${in_files[0]}", 56*61c4878aSAndroid Build Coastguard Worker tools: [ 57*61c4878aSAndroid Build Coastguard Worker "embossc_runner_py", 58*61c4878aSAndroid Build Coastguard Worker ], 59*61c4878aSAndroid Build Coastguard Worker tool_files: [ 60*61c4878aSAndroid Build Coastguard Worker ":embossc_script", 61*61c4878aSAndroid Build Coastguard Worker ], 62*61c4878aSAndroid Build Coastguard Worker} 63*61c4878aSAndroid Build Coastguard Worker 64*61c4878aSAndroid Build Coastguard Workergenrule { 65*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_att", 66*61c4878aSAndroid Build Coastguard Worker defaults: [ 67*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 68*61c4878aSAndroid Build Coastguard Worker ], 69*61c4878aSAndroid Build Coastguard Worker srcs: [ 70*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/att.emb", 71*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_data.emb", 72*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/l2cap_frames.emb", 73*61c4878aSAndroid Build Coastguard Worker ], 74*61c4878aSAndroid Build Coastguard Worker out: [ 75*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/att.emb.h", 76*61c4878aSAndroid Build Coastguard Worker ], 77*61c4878aSAndroid Build Coastguard Worker} 78*61c4878aSAndroid Build Coastguard Worker 79*61c4878aSAndroid Build Coastguard Workergenrule { 80*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_hci_android", 81*61c4878aSAndroid Build Coastguard Worker defaults: [ 82*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 83*61c4878aSAndroid Build Coastguard Worker ], 84*61c4878aSAndroid Build Coastguard Worker srcs: [ 85*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_android.emb", 86*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_common.emb", 87*61c4878aSAndroid Build Coastguard Worker ], 88*61c4878aSAndroid Build Coastguard Worker out: [ 89*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/hci_android.emb.h", 90*61c4878aSAndroid Build Coastguard Worker ], 91*61c4878aSAndroid Build Coastguard Worker} 92*61c4878aSAndroid Build Coastguard Worker 93*61c4878aSAndroid Build Coastguard Workergenrule { 94*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_hci_commands", 95*61c4878aSAndroid Build Coastguard Worker defaults: [ 96*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 97*61c4878aSAndroid Build Coastguard Worker ], 98*61c4878aSAndroid Build Coastguard Worker srcs: [ 99*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_commands.emb", 100*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_common.emb", 101*61c4878aSAndroid Build Coastguard Worker ], 102*61c4878aSAndroid Build Coastguard Worker out: [ 103*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/hci_commands.emb.h", 104*61c4878aSAndroid Build Coastguard Worker ], 105*61c4878aSAndroid Build Coastguard Worker} 106*61c4878aSAndroid Build Coastguard Worker 107*61c4878aSAndroid Build Coastguard Workergenrule { 108*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_hci_common", 109*61c4878aSAndroid Build Coastguard Worker defaults: [ 110*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 111*61c4878aSAndroid Build Coastguard Worker ], 112*61c4878aSAndroid Build Coastguard Worker srcs: [ 113*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_common.emb", 114*61c4878aSAndroid Build Coastguard Worker ], 115*61c4878aSAndroid Build Coastguard Worker out: [ 116*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/hci_common.emb.h", 117*61c4878aSAndroid Build Coastguard Worker ], 118*61c4878aSAndroid Build Coastguard Worker} 119*61c4878aSAndroid Build Coastguard Worker 120*61c4878aSAndroid Build Coastguard Workergenrule { 121*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_hci_data", 122*61c4878aSAndroid Build Coastguard Worker defaults: [ 123*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 124*61c4878aSAndroid Build Coastguard Worker ], 125*61c4878aSAndroid Build Coastguard Worker srcs: [ 126*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_data.emb", 127*61c4878aSAndroid Build Coastguard Worker ], 128*61c4878aSAndroid Build Coastguard Worker out: [ 129*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/hci_data.emb.h", 130*61c4878aSAndroid Build Coastguard Worker ], 131*61c4878aSAndroid Build Coastguard Worker} 132*61c4878aSAndroid Build Coastguard Worker 133*61c4878aSAndroid Build Coastguard Workergenrule { 134*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_hci_events", 135*61c4878aSAndroid Build Coastguard Worker defaults: [ 136*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 137*61c4878aSAndroid Build Coastguard Worker ], 138*61c4878aSAndroid Build Coastguard Worker srcs: [ 139*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_events.emb", 140*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_common.emb", 141*61c4878aSAndroid Build Coastguard Worker ], 142*61c4878aSAndroid Build Coastguard Worker out: [ 143*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/hci_events.emb.h", 144*61c4878aSAndroid Build Coastguard Worker ], 145*61c4878aSAndroid Build Coastguard Worker} 146*61c4878aSAndroid Build Coastguard Worker 147*61c4878aSAndroid Build Coastguard Workergenrule { 148*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_hci_h4", 149*61c4878aSAndroid Build Coastguard Worker defaults: [ 150*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 151*61c4878aSAndroid Build Coastguard Worker ], 152*61c4878aSAndroid Build Coastguard Worker srcs: [ 153*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/hci_h4.emb", 154*61c4878aSAndroid Build Coastguard Worker ], 155*61c4878aSAndroid Build Coastguard Worker out: [ 156*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/hci_h4.emb.h", 157*61c4878aSAndroid Build Coastguard Worker ], 158*61c4878aSAndroid Build Coastguard Worker} 159*61c4878aSAndroid Build Coastguard Worker 160*61c4878aSAndroid Build Coastguard Workergenrule { 161*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_l2cap_frames", 162*61c4878aSAndroid Build Coastguard Worker defaults: [ 163*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 164*61c4878aSAndroid Build Coastguard Worker ], 165*61c4878aSAndroid Build Coastguard Worker srcs: [ 166*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/l2cap_frames.emb", 167*61c4878aSAndroid Build Coastguard Worker ], 168*61c4878aSAndroid Build Coastguard Worker out: [ 169*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/l2cap_frames.emb.h", 170*61c4878aSAndroid Build Coastguard Worker ], 171*61c4878aSAndroid Build Coastguard Worker} 172*61c4878aSAndroid Build Coastguard Worker 173*61c4878aSAndroid Build Coastguard Workergenrule { 174*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_generate_emboss_rfcomm_frames", 175*61c4878aSAndroid Build Coastguard Worker defaults: [ 176*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_header", 177*61c4878aSAndroid Build Coastguard Worker ], 178*61c4878aSAndroid Build Coastguard Worker srcs: [ 179*61c4878aSAndroid Build Coastguard Worker "public/pw_bluetooth/rfcomm_frames.emb", 180*61c4878aSAndroid Build Coastguard Worker ], 181*61c4878aSAndroid Build Coastguard Worker out: [ 182*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth/rfcomm_frames.emb.h", 183*61c4878aSAndroid Build Coastguard Worker ], 184*61c4878aSAndroid Build Coastguard Worker} 185*61c4878aSAndroid Build Coastguard Worker 186*61c4878aSAndroid Build Coastguard Workercc_library_headers { 187*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_emboss_group", 188*61c4878aSAndroid Build Coastguard Worker cpp_std: "c++20", 189*61c4878aSAndroid Build Coastguard Worker vendor_available: true, 190*61c4878aSAndroid Build Coastguard Worker export_generated_headers: [ 191*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_att", 192*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_android", 193*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_commands", 194*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_common", 195*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_data", 196*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_events", 197*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_h4", 198*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_l2cap_frames", 199*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_rfcomm_frames", 200*61c4878aSAndroid Build Coastguard Worker ], 201*61c4878aSAndroid Build Coastguard Worker generated_headers: [ 202*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_att", 203*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_android", 204*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_commands", 205*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_common", 206*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_data", 207*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_events", 208*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_hci_h4", 209*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_l2cap_frames", 210*61c4878aSAndroid Build Coastguard Worker "pw_bluetooth_generate_emboss_rfcomm_frames", 211*61c4878aSAndroid Build Coastguard Worker ], 212*61c4878aSAndroid Build Coastguard Worker host_supported: true, 213*61c4878aSAndroid Build Coastguard Worker} 214*61c4878aSAndroid Build Coastguard Worker 215*61c4878aSAndroid Build Coastguard Workercc_library_headers { 216*61c4878aSAndroid Build Coastguard Worker name: "pw_bluetooth_emboss_util_include_dirs", 217*61c4878aSAndroid Build Coastguard Worker cpp_std: "c++20", 218*61c4878aSAndroid Build Coastguard Worker vendor_available: true, 219*61c4878aSAndroid Build Coastguard Worker export_include_dirs: ["public"], 220*61c4878aSAndroid Build Coastguard Worker host_supported: true, 221*61c4878aSAndroid Build Coastguard Worker} 222