xref: /aosp_15_r20/external/pigweed/pw_bluetooth/Android.bp (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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