#
# Copyright 2017 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.
#

# This is deprecated and will be removed in the future.  It also doesn't do
# anything anyways.  Prefer to use the library associated with the API you are
# using.
absl_cc_library(
  NAME
    container
  PUBLIC
)

absl_cc_library(
  NAME
    compressed_tuple
  HDRS
   "internal/compressed_tuple.h"
  DEPS
    absl::utility
  PUBLIC
)

absl_cc_test(
  NAME
    compressed_tuple_test
  SRCS
    "internal/compressed_tuple_test.cc"
  DEPS
    absl::compressed_tuple
    absl::memory
    absl::utility
    gmock_main
)

absl_cc_library(
  NAME
    fixed_array
  HDRS
   "fixed_array.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::compressed_tuple
    absl::algorithm
    absl::core_headers
    absl::dynamic_annotations
    absl::throw_delegate
    absl::memory
  PUBLIC
)

absl_cc_test(
  NAME
    fixed_array_test
  SRCS
    "fixed_array_test.cc"
  COPTS
    ${ABSL_EXCEPTIONS_FLAG}
  LINKOPTS
    ${ABSL_EXCEPTIONS_FLAG_LINKOPTS}
  DEPS
    absl::fixed_array
    absl::exception_testing
    absl::hash_testing
    absl::memory
    gmock_main
)

absl_cc_test(
  NAME
    fixed_array_test_noexceptions
  SRCS
    "fixed_array_test.cc"
  DEPS
    absl::fixed_array
    absl::exception_testing
    absl::hash_testing
    absl::memory
    gmock_main
)

absl_cc_test(
  NAME
    fixed_array_exception_safety_test
  SRCS
    "fixed_array_exception_safety_test.cc"
  COPTS
    ${ABSL_EXCEPTIONS_FLAG}
  LINKOPTS
    ${ABSL_EXCEPTIONS_FLAG_LINKOPTS}
  DEPS
    absl::fixed_array
    absl::exception_safety_testing
    gmock_main
)

absl_cc_library(
  NAME
    inlined_vector_internal
  HDRS
   "internal/inlined_vector.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::type_traits
  PUBLIC
)

absl_cc_library(
  NAME
    inlined_vector
  HDRS
   "inlined_vector.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::algorithm
    absl::core_headers
    absl::throw_delegate
    absl::memory
  PUBLIC
)

absl_cc_library(
  NAME
    counting_allocator
  HDRS
    "internal/counting_allocator.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
)

absl_cc_test(
  NAME
    inlined_vector_test
  SRCS
    "inlined_vector_test.cc"
  COPTS
    ${ABSL_EXCEPTIONS_FLAG}
  LINKOPTS
    ${ABSL_EXCEPTIONS_FLAG_LINKOPTS}
  DEPS
    absl::counting_allocator
    absl::inlined_vector
    absl::test_instance_tracker
    absl::base
    absl::core_headers
    absl::exception_testing
    absl::hash_testing
    absl::memory
    absl::strings
    gmock_main
)

absl_cc_test(
  NAME
    inlined_vector_test_noexceptions
  SRCS
    "inlined_vector_test.cc"
  DEPS
    absl::inlined_vector
    absl::test_instance_tracker
    absl::base
    absl::core_headers
    absl::exception_testing
    absl::hash_testing
    absl::memory
    absl::strings
    gmock_main
)

absl_cc_library(
  NAME
    test_instance_tracker
  HDRS
    "internal/test_instance_tracker.h"
  SRCS
    "internal/test_instance_tracker.cc"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  TESTONLY
)

absl_cc_test(
  NAME
    test_instance_tracker_test
  SRCS
    "internal/test_instance_tracker_test.cc"
  DEPS
    absl::test_instance_tracker
    gmock_main
)

absl_cc_library(
  NAME
    flat_hash_map
  HDRS
    "flat_hash_map.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::container_memory
    absl::hash_function_defaults
    absl::raw_hash_map
    absl::algorithm_container
    absl::memory
  PUBLIC
)

absl_cc_test(
  NAME
    flat_hash_map_test
  SRCS
    "flat_hash_map_test.cc"
  DEPS
    absl::flat_hash_map
    absl::hash_generator_testing
    absl::unordered_map_constructor_test
    absl::unordered_map_lookup_test
    absl::unordered_map_members_test
    absl::unordered_map_modifiers_test
    absl::any
    gmock_main
)

absl_cc_library(
  NAME
    flat_hash_set
  HDRS
    "flat_hash_set.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::container_memory
    absl::hash_function_defaults
    absl::raw_hash_set
    absl::algorithm_container
    absl::core_headers
    absl::memory
  PUBLIC
)

absl_cc_test(
  NAME
    flat_hash_set_test
  SRCS
    "flat_hash_set_test.cc"
  COPTS
    "-DUNORDERED_SET_CXX17"
  DEPS
    absl::flat_hash_set
    absl::hash_generator_testing
    absl::unordered_set_constructor_test
    absl::unordered_set_lookup_test
    absl::unordered_set_members_test
    absl::unordered_set_modifiers_test
    absl::memory
    absl::strings
    gmock_main
)

absl_cc_library(
  NAME
    node_hash_map
  HDRS
    "node_hash_map.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::container_memory
    absl::hash_function_defaults
    absl::node_hash_policy
    absl::raw_hash_map
    absl::algorithm_container
    absl::memory
  PUBLIC
)

absl_cc_test(
  NAME
    node_hash_map_test
  SRCS
    "node_hash_map_test.cc"
  DEPS
    absl::hash_generator_testing
    absl::node_hash_map
    absl::tracked
    absl::unordered_map_constructor_test
    absl::unordered_map_lookup_test
    absl::unordered_map_members_test
    absl::unordered_map_modifiers_test
    gmock_main
)

absl_cc_library(
  NAME
    node_hash_set
  HDRS
    "node_hash_set.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::hash_function_defaults
    absl::node_hash_policy
    absl::raw_hash_set
    absl::algorithm_container
    absl::memory
  PUBLIC
)

absl_cc_test(
  NAME
    node_hash_set_test
  SRCS
    "node_hash_set_test.cc"
  COPTS
    "-DUNORDERED_SET_CXX17"
  DEPS
    absl::hash_generator_testing
    absl::node_hash_set
    absl::unordered_set_constructor_test
    absl::unordered_set_lookup_test
    absl::unordered_set_members_test
    absl::unordered_set_modifiers_test
    gmock_main
)

absl_cc_library(
  NAME
    container_memory
  HDRS
    "internal/container_memory.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::memory
    absl::utility
  PUBLIC
)

absl_cc_test(
  NAME
    container_memory_test
  SRCS
    "internal/container_memory_test.cc"
  DEPS
    absl::container_memory
    absl::strings
    gmock_main
)

absl_cc_library(
  NAME
    hash_function_defaults
  HDRS
    "internal/hash_function_defaults.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::config
    absl::hash
    absl::strings
  PUBLIC
)

absl_cc_test(
  NAME
    hash_function_defaults_test
  SRCS
    "internal/hash_function_defaults_test.cc"
  DEPS
    absl::hash_function_defaults
    absl::hash
    absl::strings
    gmock_main
)

absl_cc_library(
  NAME
    hash_generator_testing
  HDRS
    "internal/hash_generator_testing.h"
  SRCS
    "internal/hash_generator_testing.cc"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_policy_testing
    absl::meta
    absl::strings
  TESTONLY
)

absl_cc_library(
  NAME
    hash_policy_testing
  HDRS
    "internal/hash_policy_testing.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash
    absl::strings
  TESTONLY
)

absl_cc_test(
  NAME
    hash_policy_testing_test
  SRCS
    "internal/hash_policy_testing_test.cc"
  DEPS
    absl::hash_policy_testing
    gmock_main
)

absl_cc_library(
  NAME
    hash_policy_traits
  HDRS
    "internal/hash_policy_traits.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::meta
  PUBLIC
)

absl_cc_test(
  NAME
    hash_policy_traits_test
  SRCS
    "internal/hash_policy_traits_test.cc"
  DEPS
    absl::hash_policy_traits
    gmock_main
)

absl_cc_library(
  NAME
    hashtablez_sampler
  HDRS
    "internal/hashtablez_sampler.h"
  SRCS
    "internal/hashtablez_sampler.cc"
    "internal/hashtablez_sampler_force_weak_definition.cc"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::base
    absl::have_sse
    absl::synchronization
)

absl_cc_test(
  NAME
    hashtablez_sampler_test
  SRCS
    "internal/hashtablez_sampler_test.cc"
  DEPS
    absl::hashtablez_sampler
    absl::have_sse
    gmock_main
)

absl_cc_library(
  NAME
    hashtable_debug
  HDRS
    "internal/hashtable_debug.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::hashtable_debug_hooks
)

absl_cc_library(
  NAME
    hashtable_debug_hooks
  HDRS
    "internal/hashtable_debug_hooks.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  PUBLIC
)

absl_cc_library(
  NAME
    have_sse
  HDRS
    "internal/have_sse.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
)

absl_cc_library(
  NAME
    node_hash_policy
  HDRS
    "internal/node_hash_policy.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  PUBLIC
)

absl_cc_test(
  NAME
    node_hash_policy_test
  SRCS
    "internal/node_hash_policy_test.cc"
  DEPS
    absl::hash_policy_traits
    absl::node_hash_policy
    gmock_main
)

absl_cc_library(
  NAME
    raw_hash_map
  HDRS
    "internal/raw_hash_map.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::container_memory
    absl::raw_hash_set
  PUBLIC
)

absl_cc_library(
  NAME
    container_common
  HDRS
    "internal/commom.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::type_traits
)

absl_cc_library(
  NAME
    raw_hash_set
  HDRS
    "internal/raw_hash_set.h"
  SRCS
    "internal/raw_hash_set.cc"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::bits
    absl::compressed_tuple
    absl::config
    absl::container_common
    absl::container_memory
    absl::core_headers
    absl::endian
    absl::hash_policy_traits
    absl::hashtable_debug_hooks
    absl::have_sse
    absl::layout
    absl::memory
    absl::meta
    absl::optional
    absl::utility
    absl::hashtablez_sampler
  PUBLIC
)

absl_cc_test(
  NAME
    raw_hash_set_test
  SRCS
    "internal/raw_hash_set_test.cc"
  DEPS
    absl::container_memory
    absl::hash_function_defaults
    absl::hash_policy_testing
    absl::hashtable_debug
    absl::raw_hash_set
    absl::base
    absl::core_headers
    absl::strings
    gmock_main
)

absl_cc_test(
  NAME
    raw_hash_set_allocator_test
  SRCS
    "internal/raw_hash_set_allocator_test.cc"
  DEPS
    absl::raw_hash_set
    absl::tracked
    absl::core_headers
    gmock_main
)

absl_cc_library(
  NAME
    layout
  HDRS
    "internal/layout.h"
  COPTS
    ${ABSL_DEFAULT_COPTS}
  DEPS
    absl::core_headers
    absl::meta
    absl::strings
    absl::span
    absl::utility
  PUBLIC
)

absl_cc_test(
  NAME
    layout_test
  SRCS
    "internal/layout_test.cc"
  DEPS
    absl::layout
    absl::base
    absl::core_headers
    absl::span
    gmock_main
)

absl_cc_library(
  NAME
    tracked
  HDRS
    "internal/tracked.h"
  COPTS
    ${ABSL_TEST_COPTS}
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_map_constructor_test
  HDRS
    "internal/unordered_map_constructor_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_generator_testing
    absl::hash_policy_testing
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_map_lookup_test
  HDRS
    "internal/unordered_map_lookup_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_generator_testing
    absl::hash_policy_testing
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_map_members_test
  HDRS
    "internal/unordered_map_members_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::type_traits
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_map_modifiers_test
  HDRS
    "internal/unordered_map_modifiers_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_generator_testing
    absl::hash_policy_testing
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_set_constructor_test
  HDRS
    "internal/unordered_set_constructor_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_generator_testing
    absl::hash_policy_testing
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_set_lookup_test
  HDRS
    "internal/unordered_set_lookup_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_generator_testing
    absl::hash_policy_testing
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_set_members_test
  HDRS
    "internal/unordered_set_members_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::type_traits
    gmock
  TESTONLY
)

absl_cc_library(
  NAME
    unordered_set_modifiers_test
  HDRS
    "internal/unordered_set_modifiers_test.h"
  COPTS
    ${ABSL_TEST_COPTS}
  DEPS
    absl::hash_generator_testing
    absl::hash_policy_testing
    gmock
  TESTONLY
)

absl_cc_test(
  NAME
    unordered_set_test
  SRCS
    "internal/unordered_set_test.cc"
  DEPS
    absl::unordered_set_constructor_test
    absl::unordered_set_lookup_test
    absl::unordered_set_members_test
    absl::unordered_set_modifiers_test
    gmock_main
)

absl_cc_test(
  NAME
    unordered_map_test
  SRCS
    "internal/unordered_map_test.cc"
  DEPS
    absl::unordered_map_constructor_test
    absl::unordered_map_lookup_test
    absl::unordered_map_members_test
    absl::unordered_map_modifiers_test
    gmock_main
)
