xref: /aosp_15_r20/external/federated-compute/fcp/base/BUILD (revision 14675a029014e728ec732f129a32e299b2da0601)
1# Description:
2# Base component, containing common functionality used by other FCP components.
3
4load("//fcp:config.bzl", "FCP_BAREMETAL_COPTS", "FCP_COPTS")
5load("//fcp/tracing:build_defs.bzl", "tracing_schema_cc_library")
6
7package(
8    default_visibility = ["//fcp:internal"],
9)
10
11tracing_schema_cc_library(
12    name = "tracing_schema",
13    srcs = ["tracing_schema.fbs"],
14)
15
16# Used to detect when we're building for Android, using select().
17config_setting(
18    name = "android",
19    values = {"crosstool_top": "//external:android/crosstool"},
20)
21
22cc_library(
23    name = "base",
24    srcs = [
25        "base_name.cc",
26        "monitoring.cc",
27        "platform.cc",
28    ],
29    hdrs = [
30        "base_name.h",
31        "monitoring.h",
32        "move_to_lambda.h",
33        "new.h",
34        "platform.h",
35    ],
36    copts = FCP_COPTS,
37    linkopts = select({
38        ":android": [
39            # For accessing Android's native logging APIs.
40            "-llog",
41        ],
42        "//conditions:default": [],
43    }),
44    deps = [
45        "@com_google_absl//absl/base:core_headers",
46        "@com_google_absl//absl/base:log_severity",
47        "@com_google_absl//absl/status",
48        "@com_google_absl//absl/status:statusor",
49        "@com_google_absl//absl/strings",
50        "@com_google_absl//absl/strings:cord",
51        "@com_google_absl//absl/strings:str_format",
52    ],
53)
54
55# TODO(team): Consider using configuration profiles to merge "base_baremetal" with "base"
56cc_library(
57    name = "baremetal_base",
58    srcs = [
59        "base_name.cc",
60        "monitoring.cc",
61        "string_stream.cc",
62    ],
63    hdrs = [
64        "base_name.h",
65        "monitoring.h",
66        "new.h",
67        "string_stream.h",
68    ],
69    copts = FCP_BAREMETAL_COPTS,
70    features = ["-use_header_modules"],
71    linkstatic = True,
72)
73
74cc_library(
75    name = "bounds",
76    srcs = [
77    ],
78    hdrs = [
79        "bounds.h",
80    ],
81    copts = FCP_COPTS,
82    deps = [":base"],
83)
84
85cc_test(
86    name = "bounds_test",
87    srcs = [
88        "bounds_test.cc",
89    ],
90    copts = FCP_COPTS,
91    deps = [
92        ":bounds",
93        "@com_google_googletest//:gtest_main",
94    ],
95)
96
97cc_library(
98    name = "meta",
99    srcs = [
100    ],
101    hdrs = [
102        "meta.h",
103    ],
104    copts = FCP_COPTS,
105    deps = [":base"],
106)
107
108cc_test(
109    name = "meta_test",
110    srcs = [
111        "meta_test.cc",
112    ],
113    copts = FCP_COPTS,
114    deps = [
115        ":meta",
116        "@com_google_googletest//:gtest_main",
117    ],
118)
119
120cc_library(
121    name = "reentrancy_guard",
122    hdrs = [
123        "reentrancy_guard.h",
124    ],
125    copts = FCP_COPTS,
126    deps = [":base"],
127)
128
129cc_test(
130    name = "reentrancy_guard_test",
131    srcs = [
132        "reentrancy_guard_test.cc",
133    ],
134    copts = FCP_COPTS,
135    deps = [
136        ":base",
137        ":reentrancy_guard",
138        ":scheduler",
139        "//fcp/testing",
140        "@com_google_absl//absl/synchronization",
141        "@com_google_googletest//:gtest_main",
142    ],
143)
144
145cc_library(
146    name = "random_token",
147    srcs = [
148        "random_token.cc",
149    ],
150    hdrs = [
151        "random_token.h",
152    ],
153    copts = FCP_COPTS,
154    deps = [
155        ":base",
156        "@boringssl//:crypto",
157        "@com_google_absl//absl/strings",
158        "@com_google_absl//absl/types:span",
159    ],
160)
161
162cc_test(
163    name = "random_token_test",
164    srcs = [
165        "random_token_test.cc",
166    ],
167    copts = FCP_COPTS,
168    deps = [
169        ":random_token",
170        "@com_google_absl//absl/container:flat_hash_set",
171        "@com_google_absl//absl/hash:hash_testing",
172        "@com_google_googletest//:gtest_main",
173    ],
174)
175
176cc_library(
177    name = "future",
178    srcs = [
179        "future.cc",
180    ],
181    hdrs = [
182        "future.h",
183    ],
184    copts = FCP_COPTS,
185    deps = [
186        ":base",
187        ":meta",
188        ":scheduler",
189        ":unique_value",
190        "@com_google_absl//absl/base:core_headers",
191        "@com_google_absl//absl/synchronization",
192    ],
193)
194
195cc_test(
196    name = "future_test",
197    srcs = ["future_test.cc"],
198    copts = FCP_COPTS,
199    deps = [
200        ":base",
201        ":future",
202        ":meta",
203        "@com_google_absl//absl/base:core_headers",
204        "@com_google_absl//absl/synchronization",
205        "@com_google_absl//absl/time",
206        "@com_google_googletest//:gtest_main",
207    ],
208)
209
210cc_test(
211    name = "monitoring_test",
212    size = "small",
213    srcs = [
214        "monitoring_test.cc",
215    ],
216    copts = FCP_COPTS,
217    deps = [
218        ":base",
219        "@com_google_absl//absl/base:log_severity",
220        "@com_google_absl//absl/strings:str_format",
221        "@com_google_googletest//:gtest_main",
222    ],
223)
224
225cc_test(
226    name = "baremetal_monitoring_test",
227    size = "small",
228    srcs = [
229        "monitoring_test.cc",
230    ],
231    copts = FCP_COPTS,
232    local_defines = ["FCP_BAREMETAL"],
233    deps = [
234        ":baremetal_base",
235        "@com_google_absl//absl/base:log_severity",
236        "@com_google_absl//absl/strings:str_format",
237        "@com_google_googletest//:gtest_main",
238    ],
239)
240
241cc_test(
242    name = "baremetal_string_stream_test",
243    size = "small",
244    srcs = [
245        "string_stream_test.cc",
246    ],
247    copts = FCP_COPTS,
248    local_defines = ["FCP_BAREMETAL"],
249    deps = [
250        ":baremetal_base",
251        "@com_google_googletest//:gtest_main",
252    ],
253)
254
255cc_test(
256    name = "platform_test",
257    size = "small",
258    srcs = [
259        "platform_test.cc",
260    ],
261    copts = FCP_COPTS,
262    deps = [
263        ":base",
264        "//fcp/testing",
265        "@com_google_absl//absl/strings:cord",
266        "@com_google_googletest//:gtest_main",
267    ],
268)
269
270cc_library(
271    name = "scheduler",
272    srcs = [
273        "scheduler.cc",
274    ],
275    hdrs = [
276        "scheduler.h",
277    ],
278    copts = FCP_COPTS,
279    deps = [
280        ":base",
281        "@com_google_absl//absl/synchronization",
282    ],
283)
284
285cc_test(
286    name = "scheduler_test",
287    size = "small",
288    srcs = [
289        "scheduler_test.cc",
290    ],
291    copts = FCP_COPTS,
292    deps = [
293        ":base",
294        ":scheduler",
295        "//fcp/testing",
296        "@com_google_absl//absl/synchronization",
297        "@com_google_googletest//:gtest_main",
298    ],
299)
300
301cc_test(
302    name = "move_to_lambda_test",
303    size = "small",
304    srcs = [
305        "move_to_lambda_test.cc",
306    ],
307    copts = FCP_COPTS,
308    deps = [
309        ":base",
310        ":unique_value",
311        "@com_google_googletest//:gtest_main",
312    ],
313)
314
315cc_library(
316    name = "unique_value",
317    srcs = [
318    ],
319    hdrs = [
320        "unique_value.h",
321    ],
322    copts = FCP_COPTS,
323)
324
325cc_test(
326    name = "unique_value_test",
327    srcs = [
328        "unique_value_test.cc",
329    ],
330    copts = FCP_COPTS,
331    deps = [
332        ":base",
333        ":unique_value",
334        "@com_google_absl//absl/strings",
335        "@com_google_googletest//:gtest_main",
336    ],
337)
338
339cc_library(
340    name = "error",
341    hdrs = [
342        "error.h",
343    ],
344    copts = FCP_COPTS,
345)
346
347cc_library(
348    name = "result",
349    srcs = ["result.cc"],
350    hdrs = [
351        "result.h",
352    ],
353    copts = FCP_COPTS,
354    deps = [
355        ":error",
356        ":meta",
357        ":source_location",
358        ":tracing_schema",
359        "//fcp/tracing",
360    ],
361)
362
363cc_library(
364    name = "status_converters",
365    srcs = ["status_converters.cc"],
366    hdrs = ["status_converters.h"],
367    deps = [
368        ":base",
369        "@com_github_grpc_grpc//:grpc++",
370        "@com_google_absl//absl/status",
371    ],
372)
373
374cc_test(
375    name = "result_test",
376    srcs = [
377        "result_test.cc",
378    ],
379    copts = FCP_COPTS,
380    deps = [
381        ":result",
382        ":tracing_schema",
383        ":unique_value",
384        "//fcp/testing",
385        "//fcp/testing:result_matchers",
386        "//fcp/tracing:test_tracing_recorder",
387        "@com_google_googletest//:gtest_main",
388    ],
389)
390
391cc_library(
392    name = "source_location",
393    srcs = [
394    ],
395    hdrs = [
396        "source_location.h",
397    ],
398    copts = FCP_COPTS,
399)
400
401cc_test(
402    name = "source_location_test",
403    srcs = [
404        "source_location_test.cc",
405    ],
406    copts = FCP_COPTS,
407    deps = [
408        ":source_location",
409        "@com_google_googletest//:gtest_main",
410    ],
411)
412
413cc_library(
414    name = "match",
415    srcs = [
416    ],
417    hdrs = [
418        "match.h",
419    ],
420    copts = FCP_COPTS,
421    deps = [":meta"],
422)
423
424cc_test(
425    name = "match_test",
426    srcs = [
427        "match_test.cc",
428    ],
429    copts = FCP_COPTS,
430    deps = [
431        ":match",
432        ":result",
433        "//fcp/testing",
434        "//fcp/testing:result_matchers",
435        "@com_google_googletest//:gtest_main",
436    ],
437)
438
439cc_library(
440    name = "process_unique_id",
441    srcs = ["process_unique_id.cc"],
442    hdrs = ["process_unique_id.h"],
443)
444
445cc_test(
446    name = "process_unique_id_test",
447    srcs = ["process_unique_id_test.cc"],
448    deps = [
449        ":process_unique_id",
450        "@com_google_absl//absl/container:flat_hash_set",
451        "@com_google_googletest//:gtest_main",
452    ],
453)
454
455cc_library(
456    name = "clock",
457    srcs = [
458        "clock.cc",
459    ],
460    hdrs = [
461        "clock.h",
462    ],
463    copts = FCP_COPTS,
464    deps = [
465        ":base",
466        "@com_google_absl//absl/synchronization",
467        "@com_google_absl//absl/time",
468    ],
469)
470
471cc_library(
472    name = "simulated_clock",
473    testonly = 1,
474    srcs = [
475        "simulated_clock.cc",
476    ],
477    hdrs = [
478        "simulated_clock.h",
479    ],
480    copts = FCP_COPTS,
481    deps = [
482        ":clock",
483    ],
484)
485
486cc_test(
487    name = "simulated_clock_test",
488    srcs = [
489        "simulated_clock_test.cc",
490    ],
491    copts = FCP_COPTS,
492    deps = [
493        ":simulated_clock",
494        "@com_google_absl//absl/time",
495        "@com_google_googletest//:gtest_main",
496    ],
497)
498
499cc_test(
500    name = "realtime_clock_test",
501    srcs = [
502        "realtime_clock_test.cc",
503    ],
504    copts = FCP_COPTS,
505    deps = [
506        ":clock",
507        "@com_google_absl//absl/synchronization",
508        "@com_google_absl//absl/time",
509        "@com_google_googletest//:gtest_main",
510    ],
511)
512
513cc_library(
514    name = "time_util",
515    srcs = ["time_util.cc"],
516    hdrs = ["time_util.h"],
517    deps = [
518        "@com_google_absl//absl/time",
519        "@com_google_protobuf//:protobuf",
520    ],
521)
522
523cc_test(
524    name = "time_util_test",
525    srcs = ["time_util_test.cc"],
526    deps = [
527        ":time_util",
528        "//fcp/testing",
529        "@com_google_googletest//:gtest_main",
530    ],
531)
532
533cc_library(
534    name = "wall_clock_stopwatch",
535    srcs = ["wall_clock_stopwatch.cc"],
536    hdrs = ["wall_clock_stopwatch.h"],
537    copts = FCP_COPTS,
538    deps = [
539        ":base",
540        "@com_google_absl//absl/synchronization",
541        "@com_google_absl//absl/time",
542    ],
543)
544
545cc_test(
546    name = "wall_clock_stopwatch_test",
547    srcs = ["wall_clock_stopwatch_test.cc"],
548    copts = FCP_COPTS,
549    deps = [
550        ":clock",
551        ":scheduler",
552        ":wall_clock_stopwatch",
553        "@com_google_absl//absl/time",
554        "@com_google_googletest//:gtest_main",
555    ],
556)
557