blob: 4027ba37a837fcf346486a2093ecfcc88353b8d9 [file] [log] [blame]
# 'util' contains generic containers, adapters, algorithms
# Any verible package may directly depend on this.
licenses(["notice"])
package(
default_visibility = [
"//:__subpackages__",
],
)
cc_library(
name = "algorithm",
hdrs = ["algorithm.h"],
)
cc_library(
name = "auto_pop_stack",
hdrs = ["auto_pop_stack.h"],
deps = [
":iterator_adaptors",
":logging",
"@com_google_absl//absl/base:core_headers",
],
)
cc_library(
name = "forward",
hdrs = ["forward.h"],
)
cc_library(
name = "range",
hdrs = ["range.h"],
deps = [":logging"],
)
cc_library(
name = "status_macros",
hdrs = ["status_macros.h"],
deps = ["@com_google_absl//absl/base:core_headers"],
)
cc_library(
name = "subcommand",
srcs = ["subcommand.cc"],
hdrs = ["subcommand.h"],
deps = [
":container_iterator_range",
"//common/strings:compare",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "file_util",
srcs = ["file_util.cc"],
hdrs = ["file_util.h"],
deps = [
":logging",
"//common/strings:mem_block",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
],
)
# Due to the hermetic builds bazel offers, we can't just fill a header file
# with a git hash. We have to use the workspace stamping features bazel
# offers.
# https://docs.bazel.build/versions/master/user-manual.html#workspace_status
# to contain a proper git timestamp, bazel has to be invoked with
# bazel build --workspace_status_command=bazel/build-version.py
genrule(
name = "version_header",
outs = ["generated_verible_build_version.h"],
cmd = "./$(location create_version_header.sh) > $@",
stamp = 1, # Tell bazel that we really are interested in the status file
tools = ["create_version_header.sh"],
visibility = ["//visibility:private"],
)
cc_library(
name = "build_version",
hdrs = ["generated_verible_build_version.h"],
visibility = ["//visibility:private"],
)
cc_library(
name = "init_command_line",
srcs = ["init_command_line.cc"],
hdrs = ["init_command_line.h"],
deps = [
# these deps are needed by init_command_line.cc:
":logging", # buildcleaner: keep
":build_version", # buildcleaner: keep
"@com_google_absl//absl/flags:config", # buildcleaner: keep
"@com_google_absl//absl/flags:flag", # buildcleaner: keep
"@com_google_absl//absl/flags:parse", # buildcleaner: keep
"@com_google_absl//absl/flags:usage", # buildcleaner: keep
"@com_google_absl//absl/log:globals", # buildcleaner: keep
"@com_google_absl//absl/log:initialize", # buildcleaner: keep
"@com_google_absl//absl/strings", # buildcleaner: keep
"@com_google_absl//absl/time", # buildcleaner: keep
],
)
cc_library(
name = "interval",
hdrs = ["interval.h"],
deps = [
":forward",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "interval_map",
hdrs = ["interval_map.h"],
deps = [
":auto_iterator",
":logging",
],
)
cc_library(
name = "interval_set",
hdrs = ["interval_set.h"],
deps = [
":auto_iterator",
":interval",
":iterator_range",
":logging",
"@com_google_absl//absl/random",
"@com_google_absl//absl/strings",
],
)
# TODO: once all absl logging features are established in abseil-cpp, we
# should IWYU them directly in places where we need logging and remove
# this common/util:logging target.
cc_library(
name = "logging",
srcs = ["logging.cc"],
hdrs = ["logging.h"],
deps = [
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/log:die_if_null",
],
)
cc_library(
name = "casts",
hdrs = ["casts.h"],
)
cc_library(
name = "container_util",
hdrs = ["container_util.h"],
deps = [
":logging",
],
)
cc_library(
name = "container_iterator_range",
hdrs = ["container_iterator_range.h"],
deps = [
":iterator_range",
":range",
],
)
cc_library(
name = "type_traits",
hdrs = ["type_traits.h"],
)
cc_library(
name = "auto_iterator",
hdrs = ["auto_iterator.h"],
)
cc_library(
name = "iterator_adaptors",
hdrs = ["iterator_adaptors.h"],
deps = [
":auto_iterator",
":iterator_range",
],
)
cc_library(
name = "iterator_range",
hdrs = ["iterator_range.h"],
deps = [],
)
cc_library(
name = "spacer",
srcs = ["spacer.cc"],
hdrs = ["spacer.h"],
)
cc_library(
name = "top_n",
hdrs = ["top_n.h"],
)
cc_library(
name = "value_saver",
hdrs = ["value_saver.h"],
)
cc_library(
name = "enum_flags",
hdrs = ["enum_flags.h"],
deps = [
":bijective_map",
"//common/strings:compare",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "bijective_map",
hdrs = ["bijective_map.h"],
deps = [
":forward",
":logging",
],
)
cc_library(
name = "vector_tree",
hdrs = ["vector_tree.h"],
deps = [
":container_proxy",
":iterator_range",
":logging",
":type_traits",
],
)
cc_library(
name = "tree_operations",
srcs = ["tree_operations.cc"],
hdrs = ["tree_operations.h"],
deps = [
":logging",
":spacer",
":type_traits",
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "expandable_tree_view",
hdrs = ["expandable_tree_view.h"],
deps = [
":logging",
":tree_operations",
":vector_tree",
],
)
cc_library(
name = "vector_tree_test_util",
testonly = 1,
srcs = ["vector_tree_test_util.cc"],
hdrs = ["vector_tree_test_util.h"],
deps = [
":tree_operations",
":vector_tree",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest", # for library testonly
],
)
cc_library(
name = "vector_tree_iterators",
hdrs = ["vector_tree_iterators.h"],
deps = [
":iterator_range",
":logging",
":tree_operations",
":vector_tree",
],
)
cc_library(
name = "map_tree",
hdrs = ["map_tree.h"],
deps = [
":logging",
":spacer",
],
)
cc_library(
name = "with_reason",
hdrs = ["with_reason.h"],
)
cc_library(
name = "user_interaction",
srcs = ["user_interaction.cc"],
hdrs = ["user_interaction.h"],
deps = [
"@com_google_absl//absl/strings",
],
)
cc_library(
name = "container_proxy",
hdrs = ["container_proxy.h"],
)
cc_test(
name = "algorithm_test",
srcs = ["algorithm_test.cc"],
deps = [
":algorithm",
":iterator_range",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "auto_iterator_test",
srcs = ["auto_iterator_test.cc"],
deps = [
":auto_iterator",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "auto_pop_stack_test",
srcs = ["auto_pop_stack_test.cc"],
deps = [
":auto_pop_stack",
":iterator_range",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "file_util_test",
srcs = ["file_util_test.cc"],
deps = [
":file_util",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "interval_test",
srcs = ["interval_test.cc"],
deps = [
":interval",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "interval_map_test",
srcs = ["interval_map_test.cc"],
deps = [
":interval_map",
":range",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "interval_set_test",
srcs = ["interval_set_test.cc"],
deps = [
":interval_set",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "forward_test",
srcs = ["forward_test.cc"],
deps = [
":forward",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "range_test",
srcs = ["range_test.cc"],
deps = [
":iterator_range",
":range",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "container_iterator_range_test",
srcs = ["container_iterator_range_test.cc"],
deps = [
":container_iterator_range",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "iterator_adaptors_test",
srcs = ["iterator_adaptors_test.cc"],
deps = [
":iterator_adaptors",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "iterator_range_test",
srcs = ["iterator_range_test.cc"],
deps = [
":iterator_range",
":range",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "spacer_test",
srcs = ["spacer_test.cc"],
deps = [
":spacer",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "subcommand_test",
srcs = ["subcommand_test.cc"],
deps = [
":subcommand",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "top_n_test",
srcs = ["top_n_test.cc"],
deps = [
":top_n",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "type_traits_test",
srcs = ["type_traits_test.cc"],
deps = [
":type_traits",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "value_saver_test",
srcs = ["value_saver_test.cc"],
deps = [
":value_saver",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "enum_flags_test",
srcs = ["enum_flags_test.cc"],
deps = [
":enum_flags",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "bijective_map_test",
srcs = ["bijective_map_test.cc"],
deps = [
":bijective_map",
":logging",
"//common/strings:compare",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "vector_tree_test",
srcs = ["vector_tree_test.cc"],
deps = [
":tree_operations",
":vector_tree",
":vector_tree_test_util",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "tree_operations_test",
srcs = ["tree_operations_test.cc"],
deps = [
":spacer",
":tree_operations",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "expandable_tree_view_test",
srcs = ["expandable_tree_view_test.cc"],
deps = [
":expandable_tree_view",
":vector_tree",
":vector_tree_test_util",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "vector_tree_iterators_test",
srcs = ["vector_tree_iterators_test.cc"],
deps = [
":tree_operations",
":vector_tree",
":vector_tree_iterators",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "map_tree_test",
srcs = ["map_tree_test.cc"],
copts = select({
"@platforms//os:windows": [],
"//conditions:default": ["-Wno-array-bounds"],
}),
deps = [
":map_tree",
":spacer",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "with_reason_test",
srcs = ["with_reason_test.cc"],
deps = [
":with_reason",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "user_interaction_test",
srcs = ["user_interaction_test.cc"],
deps = [
":user_interaction",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "container_proxy_test",
srcs = ["container_proxy_test.cc"],
deps = [
":container_proxy",
":type_traits",
"//common/strings:display_utils",
"@com_google_googletest//:gtest_main",
],
)
cc_library(
name = "simple_zip",
srcs = ["simple_zip.cc"],
hdrs = ["simple_zip.h"],
visibility = ["//visibility:public"],
deps = [
"//third_party/portable_endian",
"@com_google_absl//absl/strings",
"@zlib",
],
)
cc_test(
name = "simple_zip_test",
srcs = ["simple_zip_test.cc"],
deps = [
":file_util",
":simple_zip",
"@com_google_absl//absl/strings",
"@com_google_googletest//:gtest_main",
],
)