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