tvl-depot/absl/flags/BUILD.bazel
Abseil Team 72382c21fe Export of internal Abseil changes
--
dea3e4f33f16bdb1d89cad1f8055b81c0c0cb554 by Andy Getzendanner <durandal@google.com>:

Validate in log_severity_test that flags of type absl::LogSeverity are lock-free.

PiperOrigin-RevId: 293454285

--
2a0cd2d8dc193a0cbff4ffa6c5c7037745507419 by Derek Mauro <dmauro@google.com>:

Update the testing instructions in CONTRIBUTING.md

PiperOrigin-RevId: 293436013

--
cec91c3f635b0b4c8a60955e5926dba4ed980898 by Gennadiy Rozental <rogeeff@google.com>:

Introduce struct to represent storage for flag value and normalize naming of internal structs in Flag implementation.

There is no semantic changes in this CL. All the internal structs are now named as Flag... We also stop using flags_internal:: qualifications for most of them since the names are unique enough by themselves.

PiperOrigin-RevId: 293251467
GitOrigin-RevId: dea3e4f33f16bdb1d89cad1f8055b81c0c0cb554
Change-Id: I161aecc9509edae3e4b77eead02df684b2ce7087
2020-02-05 17:48:17 -05:00

463 lines
9.5 KiB
Text

#
# Copyright 2019 The Abseil Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
load(
"//absl:copts/configure_copts.bzl",
"ABSL_DEFAULT_COPTS",
"ABSL_DEFAULT_LINKOPTS",
"ABSL_TEST_COPTS",
)
package(default_visibility = ["//visibility:public"])
licenses(["notice"]) # Apache 2.0
cc_library(
name = "flag_internal",
srcs = [
"internal/flag.cc",
],
hdrs = [
"internal/flag.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = ["//absl/base:__subpackages__"],
deps = [
":config",
":handle",
":registry",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/memory",
"//absl/strings",
"//absl/synchronization",
],
)
cc_library(
name = "program_name",
srcs = [
"internal/program_name.cc",
],
hdrs = [
"internal/program_name.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/flags:__pkg__",
],
deps = [
":path_util",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
"//absl/synchronization",
],
)
cc_library(
name = "path_util",
hdrs = [
"internal/path_util.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/flags:__pkg__",
],
deps = [
"//absl/base:config",
"//absl/strings",
],
)
cc_library(
name = "config",
srcs = [
"usage_config.cc",
],
hdrs = [
"config.h",
"usage_config.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":path_util",
":program_name",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
"//absl/synchronization",
],
)
cc_library(
name = "marshalling",
srcs = [
"marshalling.cc",
],
hdrs = [
"marshalling.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
"//absl/base:config",
"//absl/base:core_headers",
"//absl/base:log_severity",
"//absl/strings",
"//absl/strings:str_format",
],
)
cc_library(
name = "handle",
hdrs = [
"internal/commandlineflag.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/flags:__pkg__",
],
deps = [
":marshalling",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
"//absl/types:optional",
],
)
cc_library(
name = "registry",
srcs = [
"internal/registry.cc",
"internal/type_erased.cc",
],
hdrs = [
"internal/registry.h",
"internal/type_erased.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/flags:__pkg__",
],
deps = [
":config",
":handle",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/base:raw_logging_internal",
"//absl/strings",
"//absl/synchronization",
],
)
cc_library(
name = "flag",
srcs = [
"flag.cc",
],
hdrs = [
"declare.h",
"flag.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
":flag_internal",
":handle",
":marshalling",
":registry",
"//absl/base",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
],
)
cc_library(
name = "usage_internal",
srcs = [
"internal/usage.cc",
],
hdrs = [
"internal/usage.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/flags:__pkg__",
],
deps = [
":config",
":flag",
":flag_internal",
":handle",
":path_util",
":program_name",
":registry",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
],
)
cc_library(
name = "usage",
srcs = [
"usage.cc",
],
hdrs = [
"usage.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":usage_internal",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
"//absl/synchronization",
],
)
cc_library(
name = "parse",
srcs = ["parse.cc"],
hdrs = [
"internal/parse.h",
"parse.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
":flag",
":flag_internal",
":handle",
":program_name",
":registry",
":usage",
":usage_internal",
"//absl/base:config",
"//absl/base:core_headers",
"//absl/strings",
"//absl/synchronization",
],
)
############################################################################
# Unit tests in alphabetical order.
cc_test(
name = "commandlineflag_test",
size = "small",
srcs = [
"internal/commandlineflag_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
":flag",
":handle",
":registry",
"//absl/memory",
"//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "config_test",
size = "small",
srcs = [
"config_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "flag_test",
size = "small",
srcs = [
"flag_test.cc",
"flag_test_defs.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
":flag",
":flag_internal",
":handle",
":registry",
"//absl/base:core_headers",
"//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_binary(
name = "flag_benchmark",
testonly = 1,
srcs = [
"flag_benchmark.cc",
],
copts = ABSL_TEST_COPTS,
tags = ["benchmark"],
visibility = ["//visibility:private"],
deps = [
":flag",
"//absl/time",
"//absl/types:optional",
"@com_github_google_benchmark//:benchmark_main",
],
)
cc_test(
name = "marshalling_test",
size = "small",
srcs = [
"marshalling_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":marshalling",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "path_util_test",
size = "small",
srcs = [
"internal/path_util_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":path_util",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "parse_test",
size = "small",
srcs = [
"parse_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":flag",
":parse",
":registry",
"//absl/base:raw_logging_internal",
"//absl/base:scoped_set_env",
"//absl/strings",
"//absl/types:span",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "program_name_test",
size = "small",
srcs = [
"internal/program_name_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":program_name",
"//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "type_erased_test",
size = "small",
srcs = [
"internal/type_erased_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":flag",
":handle",
":marshalling",
":registry",
"//absl/memory",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "usage_config_test",
size = "small",
srcs = [
"usage_config_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
":path_util",
":program_name",
"//absl/strings",
"@com_google_googletest//:gtest_main",
],
)
cc_test(
name = "usage_test",
size = "small",
srcs = [
"internal/usage_test.cc",
],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":config",
":flag",
":parse",
":path_util",
":program_name",
":registry",
":usage",
":usage_internal",
"//absl/memory",
"//absl/strings",
"@com_google_googletest//:gtest",
],
)