# # 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_binary", "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 = "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 = "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 = "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 = "commandlineflag_internal", hdrs = [ "internal/commandlineflag.h", ], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, visibility = ["//visibility:private"], deps = [ "//absl/base:config", "//absl/base:fast_type_id", ], ) cc_library( name = "commandlineflag", srcs = [ "commandlineflag.cc", ], hdrs = [ "commandlineflag.h", ], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":commandlineflag_internal", "//absl/base:config", "//absl/base:fast_type_id", "//absl/strings", "//absl/types:optional", ], ) cc_library( name = "private_handle_accessor", srcs = [ "internal/private_handle_accessor.cc", ], hdrs = [ "internal/private_handle_accessor.h", ], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, visibility = [ "//absl/flags:__pkg__", ], deps = [ ":commandlineflag", ":commandlineflag_internal", "//absl/base:config", "//absl/strings", ], ) 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 = [ ":commandlineflag", ":commandlineflag_internal", ":config", ":private_handle_accessor", "//absl/base:config", "//absl/base:core_headers", "//absl/base:raw_logging_internal", "//absl/strings", "//absl/synchronization", ], ) 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 = [ ":commandlineflag", ":commandlineflag_internal", ":config", ":marshalling", ":registry", "//absl/base", "//absl/base:config", "//absl/base:core_headers", "//absl/memory", "//absl/meta:type_traits", "//absl/strings", "//absl/synchronization", "//absl/utility", ], ) cc_library( name = "flag", srcs = [ "flag.cc", ], hdrs = [ "declare.h", "flag.h", ], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":config", ":flag_internal", ":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 = [ ":commandlineflag", ":config", ":flag", ":flag_internal", ":path_util", ":private_handle_accessor", ":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 = [ ":commandlineflag", ":commandlineflag_internal", ":config", ":flag", ":flag_internal", ":private_handle_accessor", ":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 = [ "commandlineflag_test.cc", ], copts = ABSL_TEST_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, deps = [ ":commandlineflag", ":commandlineflag_internal", ":config", ":flag", ":private_handle_accessor", ":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", ":marshalling", ":registry", "//absl/base:core_headers", "//absl/base:malloc_internal", "//absl/strings", "//absl/time", "@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", ":marshalling", "//absl/strings", "//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 = "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 = "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 = "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 = [ ":commandlineflag_internal", ":flag", ":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/strings", "@com_google_googletest//:gtest", ], )