Files
carbon-lang/common/BUILD
T
f5c01ee487 Add a custom main library for benchmarks. (#3872)
This largely reproduces the upstream one, but has a few advantages:

1) It initializes LLVM which can be important if we use the backends.
2) It parses commandline flags with Abseil allowing the use of Abseil
   flags in benchmarks.
3) It flips the default for tabular display of results which we use
   pretty heavily.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
Co-authored-by: Carbon Infra Bot <carbon-external-infra@google.com>
2024-04-09 20:36:41 +00:00

283 lines
5.7 KiB
Python

# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
package(default_visibility = ["//visibility:public"])
cc_library(
name = "bazel_working_dir",
hdrs = ["bazel_working_dir.h"],
deps = [
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "benchmark_main",
srcs = ["benchmark_main.cpp"],
deps = [
":init_llvm",
"@abseil-cpp//absl/flags:parse",
"@google_benchmark//:benchmark",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "command_line",
srcs = ["command_line.cpp"],
hdrs = ["command_line.h"],
deps = [
":check",
":ostream",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "command_line_test",
size = "small",
srcs = ["command_line_test.cpp"],
deps = [
":command_line",
"//testing/base:gtest_main",
"//testing/base:test_raw_ostream",
"@googletest//:gtest",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "check",
srcs = [
"check_internal.cpp",
"check_internal.h",
],
hdrs = ["check.h"],
deps = [
":ostream",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "check_test",
size = "small",
srcs = ["check_test.cpp"],
deps = [
":check",
"//testing/base:gtest_main",
"@googletest//:gtest",
],
)
cc_library(
name = "enum_base",
hdrs = ["enum_base.h"],
deps = [
"//common:ostream",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "enum_base_test_def",
testonly = 1,
textual_hdrs = ["enum_base_test.def"],
)
cc_test(
name = "enum_base_test",
size = "small",
srcs = ["enum_base_test.cpp"],
deps = [
":enum_base",
":enum_base_test_def",
"//testing/base:gtest_main",
"//testing/base:test_raw_ostream",
"@googletest//:gtest",
],
)
cc_library(
name = "error",
hdrs = ["error.h"],
deps = [
":check",
":ostream",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "error_test",
size = "small",
srcs = ["error_test.cpp"],
deps = [
":error",
"//testing/base:gtest_main",
"//testing/base:test_raw_ostream",
"@googletest//:gtest",
],
)
cc_library(
name = "hashing",
srcs = ["hashing.cpp"],
hdrs = ["hashing.h"],
deps = [
":check",
":ostream",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "hashing_test",
srcs = ["hashing_test.cpp"],
deps = [
":hashing",
"//testing/base:gtest_main",
"//testing/base:test_raw_ostream",
"@googletest//:gtest",
"@llvm-project//llvm:Support",
],
)
cc_binary(
name = "hashing_benchmark",
testonly = 1,
srcs = ["hashing_benchmark.cpp"],
deps = [
":benchmark_main",
":check",
":hashing",
"@abseil-cpp//absl/hash",
"@abseil-cpp//absl/random",
"@google_benchmark//:benchmark",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "indirect_value",
hdrs = ["indirect_value.h"],
)
cc_test(
name = "indirect_value_test",
size = "small",
srcs = ["indirect_value_test.cpp"],
deps = [
":indirect_value",
"//testing/base:gtest_main",
"@googletest//:gtest",
],
)
cc_library(
name = "init_llvm",
srcs = ["init_llvm.cpp"],
hdrs = ["init_llvm.h"],
deps = [
"@llvm-project//llvm:Support",
],
)
# Link against this to cause `:init_llvm` to pull in all LLVM targets.
#
# Be careful when depending on this: it pulls in several hundred megabytes of
# LLVM binary size in -c fastbuild. This should only be depended on by a
# `cc_binary` or `cc_test` target, never a `cc_library`.
cc_library(
name = "all_llvm_targets",
srcs = ["all_llvm_targets.cpp"],
deps = [
":init_llvm",
"@llvm-project//llvm:AllTargetsAsmParsers",
"@llvm-project//llvm:AllTargetsCodeGens",
"@llvm-project//llvm:Support",
],
alwayslink = 1,
)
cc_library(
name = "ostream",
hdrs = ["ostream.h"],
deps = [
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "string_helpers",
srcs = ["string_helpers.cpp"],
hdrs = ["string_helpers.h"],
deps = [
":check",
":error",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "string_helpers_test",
size = "small",
srcs = ["string_helpers_test.cpp"],
deps = [
":string_helpers",
"//testing/base:gtest_main",
"@googletest//:gtest",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "struct_reflection",
hdrs = ["struct_reflection.h"],
)
cc_test(
name = "struct_reflection_test",
size = "small",
srcs = ["struct_reflection_test.cpp"],
deps = [
":struct_reflection",
"//testing/base:gtest_main",
"@googletest//:gtest",
],
)
cc_library(
name = "variant_helpers",
hdrs = ["variant_helpers.h"],
deps = [
":error",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "vlog",
srcs = ["vlog_internal.h"],
hdrs = ["vlog.h"],
deps = [
":ostream",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "vlog_test",
size = "small",
srcs = ["vlog_test.cpp"],
deps = [
":vlog",
"//testing/base:gtest_main",
"//testing/base:test_raw_ostream",
"@googletest//:gtest",
],
)