#
# 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(
    "//absl:copts/configure_copts.bzl",
    "ABSL_DEFAULT_COPTS",
    "ABSL_DEFAULT_LINKOPTS",
    "ABSL_TEST_COPTS",
)

package(default_visibility = ["//visibility:public"])

licenses(["notice"])

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",
    srcs = [
        "internal/commandlineflag.cc",
    ],
    hdrs = [
        "internal/commandlineflag.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    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 = "reflection",
    srcs = [
        "reflection.cc",
    ],
    hdrs = [
        "internal/registry.h",
        "reflection.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":commandlineflag",
        ":commandlineflag_internal",
        ":config",
        ":private_handle_accessor",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/container:flat_hash_map",
        "//absl/strings",
        "//absl/synchronization",
    ],
)

cc_library(
    name = "flag_internal",
    srcs = [
        "internal/flag.cc",
    ],
    hdrs = [
        "internal/flag.h",
        "internal/sequence_lock.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    visibility = ["//absl/base:__subpackages__"],
    deps = [
        ":commandlineflag",
        ":commandlineflag_internal",
        ":config",
        ":marshalling",
        ":reflection",
        "//absl/base",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/base:dynamic_annotations",
        "//absl/memory",
        "//absl/meta:type_traits",
        "//absl/strings",
        "//absl/synchronization",
        "//absl/utility",
    ],
)

cc_library(
    name = "flag",
    srcs = [
        "flag.cc",
        "internal/flag_msvc.inc",
    ],
    hdrs = [
        "declare.h",
        "flag.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":config",
        ":flag_internal",
        ":reflection",
        "//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",
        ":reflection",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/container:flat_hash_map",
        "//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",
        ":reflection",
        ":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",
        ":reflection",
        "//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",
        ":reflection",
        "//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,
    linkopts = select({
        "//conditions:default": [],
    }) + ABSL_DEFAULT_LINKOPTS,
    tags = ["benchmark"],
    visibility = ["//visibility:private"],
    deps = [
        "flag_benchmark.lds",
        ":flag",
        ":marshalling",
        ":parse",
        ":reflection",
        "//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",
        ":reflection",
        ":usage_internal",
        "//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 = "reflection_test",
    size = "small",
    srcs = [
        "reflection_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":commandlineflag_internal",
        ":flag",
        ":marshalling",
        ":reflection",
        ":usage_internal",
        "//absl/memory",
        "//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "sequence_lock_test",
    size = "small",
    timeout = "moderate",
    srcs = [
        "internal/sequence_lock_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    shard_count = 31,
    deps = [
        ":flag_internal",
        "//absl/base",
        "//absl/container:fixed_array",
        "//absl/time",
        "@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",
        ":reflection",
        ":usage",
        ":usage_internal",
        "//absl/strings",
        "@com_google_googletest//:gtest",
    ],
)
