xref: /aosp_15_r20/external/pigweed/pw_metric/BUILD.bazel (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 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 Workerload("@rules_python//python:proto.bzl", "py_proto_library")
16*61c4878aSAndroid Build Coastguard Workerload(
17*61c4878aSAndroid Build Coastguard Worker    "//pw_protobuf_compiler:pw_proto_library.bzl",
18*61c4878aSAndroid Build Coastguard Worker    "nanopb_proto_library",
19*61c4878aSAndroid Build Coastguard Worker    "nanopb_rpc_proto_library",
20*61c4878aSAndroid Build Coastguard Worker    "pw_proto_filegroup",
21*61c4878aSAndroid Build Coastguard Worker    "pwpb_proto_library",
22*61c4878aSAndroid Build Coastguard Worker    "raw_rpc_proto_library",
23*61c4878aSAndroid Build Coastguard Worker)
24*61c4878aSAndroid Build Coastguard Workerload("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
27*61c4878aSAndroid Build Coastguard Worker
28*61c4878aSAndroid Build Coastguard Workerlicenses(["notice"])
29*61c4878aSAndroid Build Coastguard Worker
30*61c4878aSAndroid Build Coastguard Workercc_library(
31*61c4878aSAndroid Build Coastguard Worker    name = "metric",
32*61c4878aSAndroid Build Coastguard Worker    srcs = ["metric.cc"],
33*61c4878aSAndroid Build Coastguard Worker    hdrs = [
34*61c4878aSAndroid Build Coastguard Worker        "public/pw_metric/global.h",
35*61c4878aSAndroid Build Coastguard Worker        "public/pw_metric/metric.h",
36*61c4878aSAndroid Build Coastguard Worker    ],
37*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
38*61c4878aSAndroid Build Coastguard Worker    deps = [
39*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
40*61c4878aSAndroid Build Coastguard Worker        "//pw_containers",
41*61c4878aSAndroid Build Coastguard Worker        "//pw_log",
42*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
43*61c4878aSAndroid Build Coastguard Worker        "//pw_tokenizer:base64",
44*61c4878aSAndroid Build Coastguard Worker    ],
45*61c4878aSAndroid Build Coastguard Worker)
46*61c4878aSAndroid Build Coastguard Worker
47*61c4878aSAndroid Build Coastguard Workercc_library(
48*61c4878aSAndroid Build Coastguard Worker    name = "global",
49*61c4878aSAndroid Build Coastguard Worker    srcs = ["global.cc"],
50*61c4878aSAndroid Build Coastguard Worker    hdrs = [
51*61c4878aSAndroid Build Coastguard Worker        "public/pw_metric/global.h",
52*61c4878aSAndroid Build Coastguard Worker    ],
53*61c4878aSAndroid Build Coastguard Worker    deps = [
54*61c4878aSAndroid Build Coastguard Worker        ":metric",
55*61c4878aSAndroid Build Coastguard Worker    ],
56*61c4878aSAndroid Build Coastguard Worker)
57*61c4878aSAndroid Build Coastguard Worker
58*61c4878aSAndroid Build Coastguard Worker# Common MetricWalker/MetricWriter used by RPC service.
59*61c4878aSAndroid Build Coastguard Workercc_library(
60*61c4878aSAndroid Build Coastguard Worker    name = "metric_walker",
61*61c4878aSAndroid Build Coastguard Worker    hdrs = ["pw_metric_private/metric_walker.h"],
62*61c4878aSAndroid Build Coastguard Worker    visibility = ["//visibility:private"],
63*61c4878aSAndroid Build Coastguard Worker    deps = [
64*61c4878aSAndroid Build Coastguard Worker        ":metric",
65*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
66*61c4878aSAndroid Build Coastguard Worker        "//pw_containers",
67*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
68*61c4878aSAndroid Build Coastguard Worker        "//pw_tokenizer",
69*61c4878aSAndroid Build Coastguard Worker    ],
70*61c4878aSAndroid Build Coastguard Worker)
71*61c4878aSAndroid Build Coastguard Worker
72*61c4878aSAndroid Build Coastguard Workercc_library(
73*61c4878aSAndroid Build Coastguard Worker    name = "metric_service_nanopb",
74*61c4878aSAndroid Build Coastguard Worker    srcs = ["metric_service_nanopb.cc"],
75*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_metric/metric_service_nanopb.h"],
76*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
77*61c4878aSAndroid Build Coastguard Worker    deps = [
78*61c4878aSAndroid Build Coastguard Worker        ":metric",
79*61c4878aSAndroid Build Coastguard Worker        ":metric_proto_nanopb_rpc",
80*61c4878aSAndroid Build Coastguard Worker        ":metric_walker",
81*61c4878aSAndroid Build Coastguard Worker    ],
82*61c4878aSAndroid Build Coastguard Worker)
83*61c4878aSAndroid Build Coastguard Worker
84*61c4878aSAndroid Build Coastguard Workercc_library(
85*61c4878aSAndroid Build Coastguard Worker    name = "metric_service_pwpb",
86*61c4878aSAndroid Build Coastguard Worker    srcs = ["metric_service_pwpb.cc"],
87*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_metric/metric_service_pwpb.h"],
88*61c4878aSAndroid Build Coastguard Worker    includes = [
89*61c4878aSAndroid Build Coastguard Worker        "metric_proto_cc.pwpb.pb/pw_metric",
90*61c4878aSAndroid Build Coastguard Worker        "metric_proto_cc.raw_rpc.pb/pw_metric",
91*61c4878aSAndroid Build Coastguard Worker    ],
92*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
93*61c4878aSAndroid Build Coastguard Worker    deps = [
94*61c4878aSAndroid Build Coastguard Worker        ":metric",
95*61c4878aSAndroid Build Coastguard Worker        ":metric_proto_pwpb",
96*61c4878aSAndroid Build Coastguard Worker        ":metric_proto_raw_rpc",
97*61c4878aSAndroid Build Coastguard Worker        ":metric_walker",
98*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
99*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
100*61c4878aSAndroid Build Coastguard Worker        "//pw_containers",
101*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
102*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/raw:server_api",
103*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
104*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
105*61c4878aSAndroid Build Coastguard Worker    ],
106*61c4878aSAndroid Build Coastguard Worker)
107*61c4878aSAndroid Build Coastguard Worker
108*61c4878aSAndroid Build Coastguard Workerpw_proto_filegroup(
109*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto_and_options",
110*61c4878aSAndroid Build Coastguard Worker    srcs = [
111*61c4878aSAndroid Build Coastguard Worker        "pw_metric_proto/metric_service.proto",
112*61c4878aSAndroid Build Coastguard Worker    ],
113*61c4878aSAndroid Build Coastguard Worker    options_files = [
114*61c4878aSAndroid Build Coastguard Worker        "pw_metric_proto/metric_service.options",
115*61c4878aSAndroid Build Coastguard Worker        "pw_metric_proto/metric_service.pwpb_options",
116*61c4878aSAndroid Build Coastguard Worker    ],
117*61c4878aSAndroid Build Coastguard Worker)
118*61c4878aSAndroid Build Coastguard Worker
119*61c4878aSAndroid Build Coastguard Workerproto_library(
120*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto",
121*61c4878aSAndroid Build Coastguard Worker    srcs = [":metric_proto_and_options"],
122*61c4878aSAndroid Build Coastguard Worker    strip_import_prefix = "/pw_metric",
123*61c4878aSAndroid Build Coastguard Worker)
124*61c4878aSAndroid Build Coastguard Worker
125*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
126*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto_py_pb2",
127*61c4878aSAndroid Build Coastguard Worker    deps = [":metric_proto"],
128*61c4878aSAndroid Build Coastguard Worker)
129*61c4878aSAndroid Build Coastguard Worker
130*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
131*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto_pwpb",
132*61c4878aSAndroid Build Coastguard Worker    deps = [":metric_proto"],
133*61c4878aSAndroid Build Coastguard Worker)
134*61c4878aSAndroid Build Coastguard Worker
135*61c4878aSAndroid Build Coastguard Workernanopb_proto_library(
136*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto_nanopb",
137*61c4878aSAndroid Build Coastguard Worker    deps = [":metric_proto"],
138*61c4878aSAndroid Build Coastguard Worker)
139*61c4878aSAndroid Build Coastguard Worker
140*61c4878aSAndroid Build Coastguard Workernanopb_rpc_proto_library(
141*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto_nanopb_rpc",
142*61c4878aSAndroid Build Coastguard Worker    nanopb_proto_library_deps = [":metric_proto_nanopb"],
143*61c4878aSAndroid Build Coastguard Worker    deps = [":metric_proto"],
144*61c4878aSAndroid Build Coastguard Worker)
145*61c4878aSAndroid Build Coastguard Worker
146*61c4878aSAndroid Build Coastguard Workerraw_rpc_proto_library(
147*61c4878aSAndroid Build Coastguard Worker    name = "metric_proto_raw_rpc",
148*61c4878aSAndroid Build Coastguard Worker    deps = [":metric_proto"],
149*61c4878aSAndroid Build Coastguard Worker)
150*61c4878aSAndroid Build Coastguard Worker
151*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
152*61c4878aSAndroid Build Coastguard Worker    name = "metric_test",
153*61c4878aSAndroid Build Coastguard Worker    srcs = [
154*61c4878aSAndroid Build Coastguard Worker        "metric_test.cc",
155*61c4878aSAndroid Build Coastguard Worker    ],
156*61c4878aSAndroid Build Coastguard Worker    deps = [
157*61c4878aSAndroid Build Coastguard Worker        ":metric",
158*61c4878aSAndroid Build Coastguard Worker    ],
159*61c4878aSAndroid Build Coastguard Worker)
160*61c4878aSAndroid Build Coastguard Worker
161*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
162*61c4878aSAndroid Build Coastguard Worker    name = "global_test",
163*61c4878aSAndroid Build Coastguard Worker    srcs = [
164*61c4878aSAndroid Build Coastguard Worker        "global_test.cc",
165*61c4878aSAndroid Build Coastguard Worker    ],
166*61c4878aSAndroid Build Coastguard Worker    # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; has test
167*61c4878aSAndroid Build Coastguard Worker    # failures.
168*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = select({
169*61c4878aSAndroid Build Coastguard Worker        "//pw_build/constraints/chipset:rp2040": ["@platforms//:incompatible"],
170*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
171*61c4878aSAndroid Build Coastguard Worker    }),
172*61c4878aSAndroid Build Coastguard Worker    deps = [
173*61c4878aSAndroid Build Coastguard Worker        ":global",
174*61c4878aSAndroid Build Coastguard Worker    ],
175*61c4878aSAndroid Build Coastguard Worker)
176*61c4878aSAndroid Build Coastguard Worker
177*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
178*61c4878aSAndroid Build Coastguard Worker    name = "metric_service_nanopb_test",
179*61c4878aSAndroid Build Coastguard Worker    srcs = [
180*61c4878aSAndroid Build Coastguard Worker        "metric_service_nanopb_test.cc",
181*61c4878aSAndroid Build Coastguard Worker    ],
182*61c4878aSAndroid Build Coastguard Worker    deps = [
183*61c4878aSAndroid Build Coastguard Worker        ":metric_service_nanopb",
184*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/nanopb:test_method_context",
185*61c4878aSAndroid Build Coastguard Worker    ],
186*61c4878aSAndroid Build Coastguard Worker)
187*61c4878aSAndroid Build Coastguard Worker
188*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
189*61c4878aSAndroid Build Coastguard Worker    name = "metric_service_pwpb_test",
190*61c4878aSAndroid Build Coastguard Worker    srcs = [
191*61c4878aSAndroid Build Coastguard Worker        "metric_service_pwpb_test.cc",
192*61c4878aSAndroid Build Coastguard Worker    ],
193*61c4878aSAndroid Build Coastguard Worker    deps = [
194*61c4878aSAndroid Build Coastguard Worker        ":metric_service_pwpb",
195*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/pwpb:test_method_context",
196*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/raw:test_method_context",
197*61c4878aSAndroid Build Coastguard Worker    ],
198*61c4878aSAndroid Build Coastguard Worker)
199