From 29c11b4b3ff97314c9d5d224f6a4437f327f5d36 Mon Sep 17 00:00:00 2001 From: Dewey Dunnington Date: Mon, 17 Jun 2024 16:45:31 +0000 Subject: [PATCH 01/18] Update vendored abseil-cpp (#258) * copy some prior art * remove previous absl files * renove abseil files * add vendor in tools/ * it works! * fix some initial check issues * lazier config * remove r 3.6 on windows * see if removing the braces helps * maybe fix substitution * just link it all * try again * helppers * slight updates * better flags * more cmake * just hard code it * pkg-config * add gnu make to makefile * don't link rt * ignore windows dir * possible progress for R 4.2 * more win checks * don't use configure.win * maybe working on R 4.2 * also use cxx17 * check for absl * maybe with quotes * version and news * maybe the right flags * maybe try unifying makevars * maybe work on R 4.2/4/1 * maybe fix makevars.win * maybe fix for R 4.2 * maybe fix R 4.1 * see if we're getting the right if statement * temp fix for old s2 warnings * maybe fix again * try again * document configure.win * maybe fix R 4.2 warning * try again for globals * maybe use different namespace * use pkg-config abseil * fix comment * maybe fix * quality of life improvements * clean news * better cleanup/configure * reasonable path to not awful dev setup without system abseil * enforce minimum version in pkg-config check --- .Rbuildignore | 4 + .gitattributes | 2 + .github/workflows/check-standard.yaml | 3 +- .gitignore | 3 + DESCRIPTION | 14 +- NEWS.md | 10 + cleanup | 6 +- configure | 46 +- configure.win | 21 + data-raw/update-absl.R | 184 +-- src/.gitignore | 1 + src/Makevars.in | 140 +- src/Makevars.ucrt | 3 - src/Makevars.win | 136 +- src/RcppExports.cpp | 12 +- src/absl/container/internal/raw_hash_set.cc | 71 - src/absl/memory/memory.h | 699 --------- src/absl/strings/internal/memutil.cc | 112 -- src/absl/strings/internal/memutil.h | 148 -- .../strings/internal/str_format/checker.h | 338 ---- .../strings/internal/str_format/parser.cc | 339 ---- src/absl/strings/match.cc | 43 - src/absl/synchronization/internal/futex.h | 154 -- .../synchronization/internal/kernel_timeout.h | 156 -- src/absl/synchronization/internal/waiter.cc | 403 ----- src/absl/synchronization/internal/waiter.h | 161 -- src/absl/time/internal/zoneinfo.inc | 724 --------- src/s2/mutable_s2shape_index.h | 4 +- src/s2/s2builder_graph.h | 5 + src/s2/s2shape_index.h | 6 + src/s2/util/gtl/compact_array.h | 4 + src/s2/util/gtl/densehashtable.h | 22 +- tools/.gitignore | 2 + tools/build_absl.sh | 59 + tools/pkgconfig/absl_s2.pc | 7 + tools/vendor/abseil-cpp/.gitignore | 15 + .../abseil-cpp/ABSEIL_ISSUE_TEMPLATE.md | 22 + tools/vendor/abseil-cpp/AUTHORS | 6 + tools/vendor/abseil-cpp/BUILD.bazel | 25 + tools/vendor/abseil-cpp/CMake/AbseilDll.cmake | 822 ++++++++++ .../abseil-cpp/CMake/AbseilHelpers.cmake | 445 ++++++ .../CMake/Googletest/CMakeLists.txt.in | 14 + .../CMake/Googletest/DownloadGTest.cmake | 41 + tools/vendor/abseil-cpp/CMake/README.md | 188 +++ .../abseil-cpp/CMake/abslConfig.cmake.in | 8 + .../CMake/install_test_project/CMakeLists.txt | 25 + .../CMake/install_test_project/simple.cc | 32 + .../CMake/install_test_project/test.sh | 112 ++ tools/vendor/abseil-cpp/CMakeLists.txt | 244 +++ tools/vendor/abseil-cpp/CONTRIBUTING.md | 141 ++ tools/vendor/abseil-cpp/FAQ.md | 167 ++ tools/vendor/abseil-cpp/LICENSE | 203 +++ tools/vendor/abseil-cpp/PrivacyInfo.xcprivacy | 14 + tools/vendor/abseil-cpp/README.md | 160 ++ tools/vendor/abseil-cpp/UPGRADES.md | 17 + tools/vendor/abseil-cpp/WORKSPACE | 60 + tools/vendor/abseil-cpp/absl/BUILD.bazel | 151 ++ tools/vendor/abseil-cpp/absl/CMakeLists.txt | 44 + .../abseil-cpp/absl/abseil.podspec.gen.py | 232 +++ .../abseil-cpp/absl/algorithm/BUILD.bazel | 92 ++ .../abseil-cpp/absl/algorithm/CMakeLists.txt | 70 + .../abseil-cpp}/absl/algorithm/algorithm.h | 0 .../abseil-cpp}/absl/algorithm/container.h | 114 +- tools/vendor/abseil-cpp/absl/base/BUILD.bazel | 813 ++++++++++ .../abseil-cpp/absl/base/CMakeLists.txt | 714 +++++++++ .../vendor/abseil-cpp}/absl/base/attributes.h | 143 +- .../vendor/abseil-cpp}/absl/base/call_once.h | 2 +- .../vendor/abseil-cpp}/absl/base/casts.h | 16 +- .../vendor/abseil-cpp}/absl/base/config.h | 262 ++-- .../vendor/abseil-cpp}/absl/base/const_init.h | 0 .../absl/base/dynamic_annotations.h | 27 +- .../absl/base/inline_variable_test_a.cc | 27 + .../absl/base/inline_variable_test_b.cc | 27 + .../absl/base/internal/atomic_hook.h | 0 .../base/internal/atomic_hook_test_helper.cc | 32 + .../base/internal/atomic_hook_test_helper.h | 34 + .../absl/base/internal/cycleclock.cc | 0 .../absl/base/internal/cycleclock.h | 21 +- .../absl/base/internal/cycleclock_config.h | 55 + .../absl/base/internal/direct_mmap.h | 5 +- .../absl/base/internal/dynamic_annotations.h | 0 .../abseil-cpp}/absl/base/internal/endian.h | 0 .../absl/base/internal/errno_saver.h | 0 .../base/internal/exception_safety_testing.cc | 79 + .../base/internal/exception_safety_testing.h | 1109 +++++++++++++ .../absl/base/internal/exception_testing.h | 42 + .../absl/base/internal/fast_type_id.h | 0 .../abseil-cpp}/absl/base/internal/hide_ptr.h | 0 .../abseil-cpp}/absl/base/internal/identity.h | 0 .../absl/base/internal/inline_variable.h | 6 +- .../base/internal/inline_variable_testing.h | 46 + .../abseil-cpp}/absl/base/internal/invoke.h | 8 +- .../absl/base/internal/low_level_alloc.cc | 93 +- .../absl/base/internal/low_level_alloc.h | 9 +- .../absl/base/internal/low_level_scheduling.h | 0 .../absl/base/internal/nullability_impl.h | 106 ++ .../absl/base/internal/per_thread_tls.h | 0 .../abseil-cpp}/absl/base/internal/prefetch.h | 35 +- .../absl/base/internal/pretty_function.h | 0 .../absl/base/internal/raw_logging.cc | 53 +- .../absl/base/internal/raw_logging.h | 79 +- .../absl/base/internal/scheduling_mode.h | 0 .../absl/base/internal/scoped_set_env.cc | 0 .../absl/base/internal/scoped_set_env.h | 0 .../absl/base/internal/spinlock.cc | 6 +- .../abseil-cpp}/absl/base/internal/spinlock.h | 8 +- .../absl/base/internal/spinlock_akaros.inc | 0 .../absl/base/internal/spinlock_linux.inc | 0 .../absl/base/internal/spinlock_posix.inc | 0 .../absl/base/internal/spinlock_wait.cc | 0 .../absl/base/internal/spinlock_wait.h | 0 .../absl/base/internal/spinlock_win32.inc | 5 +- .../absl/base/internal/strerror.cc | 8 +- .../abseil-cpp}/absl/base/internal/strerror.h | 0 .../abseil-cpp}/absl/base/internal/sysinfo.cc | 132 +- .../abseil-cpp}/absl/base/internal/sysinfo.h | 0 .../absl/base/internal/thread_annotations.h | 9 + .../absl/base/internal/thread_identity.cc | 17 +- .../absl/base/internal/thread_identity.h | 26 +- .../absl/base/internal/throw_delegate.cc | 55 +- .../absl/base/internal/throw_delegate.h | 0 .../absl/base/internal/tsan_mutex_interface.h | 0 .../absl/base/internal/unaligned_access.h | 0 .../absl/base/internal/unscaledcycleclock.cc | 5 +- .../absl/base/internal/unscaledcycleclock.h | 43 +- .../base/internal/unscaledcycleclock_config.h | 62 + .../abseil-cpp}/absl/base/log_severity.cc | 0 .../abseil-cpp}/absl/base/log_severity.h | 0 .../vendor/abseil-cpp}/absl/base/macros.h | 25 +- .../vendor/abseil-cpp/absl/base/nullability.h | 224 +++ .../abseil-cpp}/absl/base/optimization.h | 64 +- .../vendor/abseil-cpp}/absl/base/options.h | 8 +- .../abseil-cpp}/absl/base/policy_checks.h | 28 +- .../vendor/abseil-cpp}/absl/base/port.h | 0 tools/vendor/abseil-cpp/absl/base/prefetch.h | 198 +++ .../absl/base/spinlock_test_common.cc | 272 ++++ .../absl/base/thread_annotations.h | 0 .../abseil-cpp/absl/cleanup/BUILD.bazel | 65 + .../abseil-cpp/absl/cleanup/CMakeLists.txt | 56 + .../vendor/abseil-cpp/absl/cleanup/cleanup.h | 140 ++ .../absl/cleanup/internal/cleanup.h | 100 ++ .../abseil-cpp/absl/container/BUILD.bazel | 1035 ++++++++++++ .../abseil-cpp/absl/container/CMakeLists.txt | 971 ++++++++++++ .../abseil-cpp}/absl/container/btree_map.h | 44 +- .../abseil-cpp}/absl/container/btree_set.h | 46 +- .../abseil-cpp/absl/container/btree_test.h | 166 ++ .../abseil-cpp}/absl/container/fixed_array.h | 95 +- .../absl/container/flat_hash_map.h | 6 +- .../absl/container/flat_hash_set.h | 15 +- .../absl/container/inlined_vector.h | 298 +++- .../absl/container/internal/btree.h | 742 +++++---- .../absl/container/internal/btree_container.h | 178 ++- .../absl/container/internal/common.h | 6 +- .../container/internal/common_policy_traits.h | 132 ++ .../container/internal/compressed_tuple.h | 24 +- .../container/internal/container_memory.h | 16 +- .../container/internal/counting_allocator.h | 6 +- .../internal/hash_function_defaults.h | 46 + .../internal/hash_generator_testing.cc | 76 + .../internal/hash_generator_testing.h | 182 +++ .../container/internal/hash_policy_testing.h | 184 +++ .../container/internal/hash_policy_traits.h | 59 +- .../absl/container/internal/hashtable_debug.h | 0 .../internal/hashtable_debug_hooks.h | 0 .../container/internal/hashtablez_sampler.cc | 57 +- .../container/internal/hashtablez_sampler.h | 60 +- ...ashtablez_sampler_force_weak_definition.cc | 0 .../absl/container/internal/inlined_vector.h | 245 ++- .../absl/container/internal/layout.h | 0 .../container/internal/node_slot_policy.h | 0 .../absl/container/internal/raw_hash_map.h | 53 +- .../absl/container/internal/raw_hash_set.cc | 263 ++++ .../absl/container/internal/raw_hash_set.h | 1365 +++++++++++----- .../internal/test_instance_tracker.cc | 29 + .../internal/test_instance_tracker.h | 274 ++++ .../absl/container/internal/tracked.h | 0 .../internal/unordered_map_constructor_test.h | 494 ++++++ .../internal/unordered_map_lookup_test.h | 117 ++ .../internal/unordered_map_members_test.h | 87 ++ .../internal/unordered_map_modifiers_test.h | 352 +++++ .../internal/unordered_set_constructor_test.h | 496 ++++++ .../internal/unordered_set_lookup_test.h | 91 ++ .../internal/unordered_set_members_test.h | 86 + .../internal/unordered_set_modifiers_test.h | 221 +++ .../absl/container/node_hash_map.h | 8 +- .../absl/container/node_hash_set.h | 8 +- .../absl/copts/AbseilConfigureCopts.cmake | 106 ++ .../absl/copts/GENERATED_AbseilCopts.cmake | 229 +++ .../abseil-cpp/absl/copts/GENERATED_copts.bzl | 230 +++ .../abseil-cpp/absl/copts/configure_copts.bzl | 82 + tools/vendor/abseil-cpp/absl/copts/copts.py | 191 +++ .../abseil-cpp/absl/copts/generate_copts.py | 109 ++ tools/vendor/abseil-cpp/absl/crc/BUILD.bazel | 212 +++ .../vendor/abseil-cpp/absl/crc/CMakeLists.txt | 178 +++ tools/vendor/abseil-cpp/absl/crc/crc32c.cc | 99 ++ tools/vendor/abseil-cpp/absl/crc/crc32c.h | 190 +++ .../absl/crc/internal/cpu_detect.cc | 262 ++++ .../abseil-cpp/absl/crc/internal/cpu_detect.h | 57 + .../abseil-cpp/absl/crc/internal/crc.cc | 437 ++++++ .../vendor/abseil-cpp/absl/crc/internal/crc.h | 83 + .../internal/crc32_x86_arm_combined_simd.h | 269 ++++ .../abseil-cpp/absl/crc/internal/crc32c.h | 39 + .../absl/crc/internal/crc32c_inline.h | 72 + .../absl/crc/internal/crc_cord_state.cc | 130 ++ .../absl/crc/internal/crc_cord_state.h | 159 ++ .../absl/crc/internal/crc_internal.h | 177 +++ .../abseil-cpp/absl/crc/internal/crc_memcpy.h | 119 ++ .../absl/crc/internal/crc_memcpy_fallback.cc | 75 + .../absl/crc/internal/crc_memcpy_x86_64.cc | 432 +++++ .../crc/internal/crc_non_temporal_memcpy.cc | 93 ++ .../absl/crc/internal/crc_x86_arm_combined.cc | 725 +++++++++ .../internal/non_temporal_arm_intrinsics.h | 79 + .../absl/crc/internal/non_temporal_memcpy.h | 180 +++ .../abseil-cpp/absl/debugging/BUILD.bazel | 329 ++++ .../abseil-cpp/absl/debugging/CMakeLists.txt | 298 ++++ .../absl/debugging/failure_signal_handler.cc | 67 +- .../absl/debugging/failure_signal_handler.h | 2 +- .../debugging/internal/address_is_readable.cc | 2 +- .../debugging/internal/address_is_readable.h | 0 .../absl/debugging/internal/demangle.cc | 105 +- .../absl/debugging/internal/demangle.h | 2 +- .../absl/debugging/internal/elf_mem_image.cc | 25 +- .../absl/debugging/internal/elf_mem_image.h | 3 +- .../absl/debugging/internal/examine_stack.cc | 17 +- .../absl/debugging/internal/examine_stack.h | 0 .../debugging/internal/stack_consumption.cc | 9 +- .../debugging/internal/stack_consumption.h | 0 .../internal/stacktrace_aarch64-inl.inc | 100 +- .../debugging/internal/stacktrace_arm-inl.inc | 0 .../debugging/internal/stacktrace_config.h | 0 .../internal/stacktrace_emscripten-inl.inc | 0 .../internal/stacktrace_generic-inl.inc | 2 +- .../internal/stacktrace_powerpc-inl.inc | 2 +- .../internal/stacktrace_riscv-inl.inc | 125 +- .../internal/stacktrace_unimplemented-inl.inc | 0 .../internal/stacktrace_win32-inl.inc | 9 +- .../debugging/internal/stacktrace_x86-inl.inc | 43 +- .../absl/debugging/internal/symbolize.h | 2 +- .../absl/debugging/internal/vdso_support.cc | 5 +- .../absl/debugging/internal/vdso_support.h | 0 .../abseil-cpp}/absl/debugging/leak_check.cc | 4 +- .../abseil-cpp}/absl/debugging/leak_check.h | 2 +- .../abseil-cpp}/absl/debugging/stacktrace.cc | 0 .../abseil-cpp}/absl/debugging/stacktrace.h | 0 .../abseil-cpp/absl/debugging/symbolize.cc | 43 + .../abseil-cpp}/absl/debugging/symbolize.h | 0 .../absl/debugging/symbolize_darwin.inc | 5 +- .../absl/debugging/symbolize_elf.inc | 272 ++-- .../absl/debugging/symbolize_emscripten.inc | 3 + .../debugging/symbolize_unimplemented.inc | 0 .../absl/debugging/symbolize_win32.inc | 13 +- .../vendor/abseil-cpp/absl/flags/BUILD.bazel | 586 +++++++ .../abseil-cpp/absl/flags/CMakeLists.txt | 474 ++++++ .../abseil-cpp/absl/flags/commandlineflag.cc | 34 + .../abseil-cpp/absl/flags/commandlineflag.h | 200 +++ tools/vendor/abseil-cpp/absl/flags/config.h | 68 + tools/vendor/abseil-cpp/absl/flags/declare.h | 73 + tools/vendor/abseil-cpp/absl/flags/flag.cc | 38 + tools/vendor/abseil-cpp/absl/flags/flag.h | 310 ++++ .../abseil-cpp/absl/flags/flag_benchmark.lds | 13 + .../abseil-cpp/absl/flags/flag_test_defs.cc | 24 + .../absl/flags/internal/commandlineflag.cc | 26 + .../absl/flags/internal/commandlineflag.h | 68 + .../abseil-cpp/absl/flags/internal/flag.cc | 615 ++++++++ .../abseil-cpp/absl/flags/internal/flag.h | 801 ++++++++++ .../absl/flags/internal/flag_msvc.inc | 116 ++ .../abseil-cpp/absl/flags/internal/parse.h | 70 + .../absl/flags/internal/path_util.h | 62 + .../flags/internal/private_handle_accessor.cc | 65 + .../flags/internal/private_handle_accessor.h | 61 + .../absl/flags/internal/program_name.cc | 60 + .../absl/flags/internal/program_name.h | 50 + .../abseil-cpp/absl/flags/internal/registry.h | 97 ++ .../absl/flags/internal/sequence_lock.h | 187 +++ .../abseil-cpp/absl/flags/internal/usage.cc | 550 +++++++ .../abseil-cpp/absl/flags/internal/usage.h | 106 ++ .../abseil-cpp/absl/flags/marshalling.cc | 282 ++++ .../abseil-cpp/absl/flags/marshalling.h | 361 +++++ tools/vendor/abseil-cpp/absl/flags/parse.cc | 943 +++++++++++ tools/vendor/abseil-cpp/absl/flags/parse.h | 130 ++ .../abseil-cpp/absl/flags/reflection.cc | 354 +++++ .../vendor/abseil-cpp/absl/flags/reflection.h | 90 ++ tools/vendor/abseil-cpp/absl/flags/usage.cc | 66 + tools/vendor/abseil-cpp/absl/flags/usage.h | 43 + .../abseil-cpp/absl/flags/usage_config.cc | 165 ++ .../abseil-cpp/absl/flags/usage_config.h | 135 ++ .../abseil-cpp/absl/functional/BUILD.bazel | 130 ++ .../abseil-cpp/absl/functional/CMakeLists.txt | 110 ++ .../absl/functional/any_invocable.h | 17 +- .../abseil-cpp}/absl/functional/bind_front.h | 2 +- .../absl/functional/function_ref.h | 6 +- .../absl/functional/internal/any_invocable.h | 136 +- .../absl/functional/internal/front_binder.h | 0 .../absl/functional/internal/function_ref.h | 28 +- tools/vendor/abseil-cpp/absl/hash/BUILD.bazel | 202 +++ .../abseil-cpp/absl/hash/CMakeLists.txt | 182 +++ tools/vendor/abseil-cpp/absl/hash/hash.h | 424 +++++ .../abseil-cpp/absl/hash/hash_testing.h | 378 +++++ .../abseil-cpp/absl/hash/internal/city.cc | 349 +++++ .../abseil-cpp/absl/hash/internal/city.h | 78 + .../abseil-cpp/absl/hash/internal/hash.cc | 69 + .../abseil-cpp/absl/hash/internal/hash.h | 1328 ++++++++++++++++ .../abseil-cpp/absl/hash/internal/hash_test.h | 87 ++ .../absl/hash/internal/low_level_hash.cc | 118 ++ .../absl/hash/internal/low_level_hash.h | 50 + .../absl/hash/internal/print_hash_of.cc | 10 +- .../absl/hash/internal/spy_hash_state.h | 266 ++++ tools/vendor/abseil-cpp/absl/log/BUILD.bazel | 597 +++++++ .../vendor/abseil-cpp/absl/log/CMakeLists.txt | 1042 +++++++++++++ tools/vendor/abseil-cpp/absl/log/absl_check.h | 117 ++ tools/vendor/abseil-cpp/absl/log/absl_log.h | 103 ++ tools/vendor/abseil-cpp/absl/log/check.h | 209 +++ .../abseil-cpp/absl/log/check_test_impl.inc | 528 +++++++ .../vendor/abseil-cpp/absl/log/die_if_null.cc | 32 + .../vendor/abseil-cpp/absl/log/die_if_null.h | 76 + tools/vendor/abseil-cpp/absl/log/flags.cc | 120 ++ tools/vendor/abseil-cpp/absl/log/flags.h | 43 + tools/vendor/abseil-cpp/absl/log/globals.cc | 178 +++ tools/vendor/abseil-cpp/absl/log/globals.h | 195 +++ .../vendor/abseil-cpp/absl/log/initialize.cc | 34 + tools/vendor/abseil-cpp/absl/log/initialize.h | 45 + .../abseil-cpp/absl/log/internal/BUILD.bazel | 383 +++++ .../absl/log/internal/append_truncated.h | 47 + .../abseil-cpp/absl/log/internal/check_impl.h | 150 ++ .../abseil-cpp/absl/log/internal/check_op.cc | 118 ++ .../abseil-cpp/absl/log/internal/check_op.h | 394 +++++ .../absl/log/internal/conditions.cc | 83 + .../abseil-cpp/absl/log/internal/conditions.h | 228 +++ .../abseil-cpp/absl/log/internal/config.h | 45 + .../abseil-cpp/absl/log/internal/flags.h | 53 + .../abseil-cpp/absl/log/internal/globals.cc | 145 ++ .../abseil-cpp/absl/log/internal/globals.h | 101 ++ .../absl/log/internal/log_format.cc | 205 +++ .../abseil-cpp/absl/log/internal/log_format.h | 78 + .../abseil-cpp/absl/log/internal/log_impl.h | 216 +++ .../absl/log/internal/log_message.cc | 633 ++++++++ .../absl/log/internal/log_message.h | 377 +++++ .../absl/log/internal/log_sink_set.cc | 296 ++++ .../absl/log/internal/log_sink_set.h | 54 + .../abseil-cpp/absl/log/internal/nullguard.cc | 35 + .../abseil-cpp/absl/log/internal/nullguard.h | 88 ++ .../abseil-cpp/absl/log/internal/nullstream.h | 136 ++ .../abseil-cpp/absl/log/internal/proto.cc | 220 +++ .../abseil-cpp/absl/log/internal/proto.h | 288 ++++ .../abseil-cpp/absl/log/internal/strip.h | 71 + .../abseil-cpp/absl/log/internal/structured.h | 58 + .../absl/log/internal/test_actions.cc | 75 + .../absl/log/internal/test_actions.h | 90 ++ .../absl/log/internal/test_helpers.cc | 82 + .../absl/log/internal/test_helpers.h | 71 + .../absl/log/internal/test_matchers.cc | 217 +++ .../absl/log/internal/test_matchers.h | 94 ++ .../abseil-cpp/absl/log/internal/voidify.h | 44 + tools/vendor/abseil-cpp/absl/log/log.h | 320 ++++ .../absl/log/log_basic_test_impl.inc | 455 ++++++ tools/vendor/abseil-cpp/absl/log/log_entry.cc | 29 + tools/vendor/abseil-cpp/absl/log/log_entry.h | 220 +++ tools/vendor/abseil-cpp/absl/log/log_sink.cc | 23 + tools/vendor/abseil-cpp/absl/log/log_sink.h | 64 + .../abseil-cpp/absl/log/log_sink_registry.h | 61 + .../vendor/abseil-cpp/absl/log/log_streamer.h | 171 ++ .../abseil-cpp/absl/log/scoped_mock_log.cc | 86 + .../abseil-cpp/absl/log/scoped_mock_log.h | 197 +++ tools/vendor/abseil-cpp/absl/log/structured.h | 70 + .../vendor/abseil-cpp/absl/memory/BUILD.bazel | 52 + .../abseil-cpp/absl/memory/CMakeLists.txt | 41 + tools/vendor/abseil-cpp/absl/memory/memory.h | 278 ++++ tools/vendor/abseil-cpp/absl/meta/BUILD.bazel | 51 + .../abseil-cpp/absl/meta/CMakeLists.txt | 54 + .../abseil-cpp}/absl/meta/type_traits.h | 483 ++---- .../abseil-cpp/absl/numeric/BUILD.bazel | 128 ++ .../abseil-cpp/absl/numeric/CMakeLists.txt | 100 ++ .../vendor/abseil-cpp}/absl/numeric/bits.h | 13 +- .../vendor/abseil-cpp}/absl/numeric/int128.cc | 34 +- .../vendor/abseil-cpp}/absl/numeric/int128.h | 79 +- .../absl/numeric/int128_have_intrinsic.inc | 3 - .../absl/numeric/int128_no_intrinsic.inc | 77 +- .../abseil-cpp}/absl/numeric/internal/bits.h | 0 .../absl/numeric/internal/representation.h | 0 .../abseil-cpp/absl/profiling/BUILD.bazel | 129 ++ .../abseil-cpp/absl/profiling/CMakeLists.txt | 93 ++ .../profiling/internal/exponential_biased.cc | 0 .../profiling/internal/exponential_biased.h | 0 .../profiling/internal/periodic_sampler.cc | 0 .../profiling/internal/periodic_sampler.h | 0 .../absl/profiling/internal/sample_recorder.h | 20 +- .../vendor/abseil-cpp/absl/random/BUILD.bazel | 517 ++++++ .../abseil-cpp/absl/random/CMakeLists.txt | 1219 +++++++++++++++ .../abseil-cpp/absl/random/benchmarks.cc | 383 +++++ .../absl/random/bernoulli_distribution.h | 200 +++ .../absl/random/beta_distribution.h | 427 +++++ .../abseil-cpp/absl/random/bit_gen_ref.h | 185 +++ .../absl/random/discrete_distribution.cc | 98 ++ .../absl/random/discrete_distribution.h | 247 +++ .../abseil-cpp/absl/random/distributions.h | 452 ++++++ .../absl/random/exponential_distribution.h | 165 ++ .../absl/random/gaussian_distribution.cc | 104 ++ .../absl/random/gaussian_distribution.h | 275 ++++ .../absl/random/internal/BUILD.bazel | 759 +++++++++ .../absl/random/internal/chi_square.cc | 233 +++ .../absl/random/internal/chi_square.h | 89 ++ .../random/internal/distribution_caller.h | 95 ++ .../random/internal/distribution_test_util.cc | 418 +++++ .../random/internal/distribution_test_util.h | 113 ++ .../absl/random/internal/explicit_seed_seq.h | 92 ++ .../absl/random/internal/fast_uniform_bits.h | 271 ++++ .../absl/random/internal/fastmath.h | 57 + .../gaussian_distribution_gentables.cc | 143 ++ .../absl/random/internal/generate_real.h | 144 ++ .../random/internal/iostream_state_saver.h | 245 +++ .../absl/random/internal/mock_helpers.h | 135 ++ .../absl/random/internal/mock_overload_set.h | 100 ++ .../absl/random/internal/nanobenchmark.cc | 804 ++++++++++ .../absl/random/internal/nanobenchmark.h | 172 ++ .../absl/random/internal/nonsecure_base.h | 161 ++ .../absl/random/internal/pcg_engine.h | 287 ++++ .../absl/random/internal/platform.h | 171 ++ .../absl/random/internal/pool_urbg.cc | 253 +++ .../absl/random/internal/pool_urbg.h | 131 ++ .../abseil-cpp/absl/random/internal/randen.cc | 91 ++ .../abseil-cpp/absl/random/internal/randen.h | 96 ++ .../absl/random/internal/randen_benchmarks.cc | 176 +++ .../absl/random/internal/randen_detect.cc | 229 +++ .../absl/random/internal/randen_detect.h | 33 + .../absl/random/internal/randen_engine.h | 264 ++++ .../absl/random/internal/randen_hwaes.cc | 526 +++++++ .../absl/random/internal/randen_hwaes.h | 50 + .../absl/random/internal/randen_round_keys.cc | 462 ++++++ .../absl/random/internal/randen_slow.cc | 471 ++++++ .../absl/random/internal/randen_slow.h | 40 + .../absl/random/internal/randen_traits.h | 88 ++ .../absl/random/internal/salted_seed_seq.h | 165 ++ .../absl/random/internal/seed_material.cc | 267 ++++ .../absl/random/internal/seed_material.h | 104 ++ .../absl/random/internal/sequence_urbg.h | 60 + .../abseil-cpp/absl/random/internal/traits.h | 149 ++ .../absl/random/internal/uniform_helper.h | 244 +++ .../absl/random/internal/wide_multiply.h | 96 ++ .../random/log_uniform_int_distribution.h | 256 +++ .../absl/random/mock_distributions.h | 266 ++++ .../abseil-cpp/absl/random/mocking_bit_gen.h | 240 +++ .../absl/random/poisson_distribution.h | 261 ++++ tools/vendor/abseil-cpp/absl/random/random.h | 189 +++ .../absl/random/seed_gen_exception.cc | 46 + .../absl/random/seed_gen_exception.h | 55 + .../abseil-cpp/absl/random/seed_sequences.cc | 29 + .../abseil-cpp/absl/random/seed_sequences.h | 111 ++ .../absl/random/uniform_int_distribution.h | 275 ++++ .../absl/random/uniform_real_distribution.h | 202 +++ .../absl/random/zipf_distribution.h | 272 ++++ .../vendor/abseil-cpp/absl/status/BUILD.bazel | 109 ++ .../abseil-cpp/absl/status/CMakeLists.txt | 93 ++ .../absl/status/internal/status_internal.h | 91 ++ .../absl/status/internal/statusor_internal.h | 384 +++++ tools/vendor/abseil-cpp/absl/status/status.cc | 627 ++++++++ tools/vendor/abseil-cpp/absl/status/status.h | 901 +++++++++++ .../absl/status/status_payload_printer.cc | 38 + .../absl/status/status_payload_printer.h | 51 + .../vendor/abseil-cpp/absl/status/statusor.cc | 103 ++ .../vendor/abseil-cpp/absl/status/statusor.h | 790 ++++++++++ .../abseil-cpp/absl/strings/BUILD.bazel | 1355 ++++++++++++++++ .../abseil-cpp/absl/strings/CMakeLists.txt | 1153 ++++++++++++++ .../vendor/abseil-cpp}/absl/strings/ascii.cc | 66 +- .../vendor/abseil-cpp}/absl/strings/ascii.h | 0 .../abseil-cpp}/absl/strings/charconv.cc | 653 ++++++-- .../abseil-cpp}/absl/strings/charconv.h | 4 +- .../vendor/abseil-cpp}/absl/strings/cord.cc | 135 +- .../vendor/abseil-cpp}/absl/strings/cord.h | 197 +-- .../abseil-cpp}/absl/strings/cord_analysis.cc | 24 +- .../abseil-cpp}/absl/strings/cord_analysis.h | 18 + .../abseil-cpp}/absl/strings/cord_buffer.cc | 0 .../abseil-cpp}/absl/strings/cord_buffer.h | 20 +- .../absl/strings/cord_test_helpers.h | 122 ++ .../absl/strings/cordz_test_helpers.h | 151 ++ .../abseil-cpp}/absl/strings/escaping.cc | 173 +- .../abseil-cpp}/absl/strings/escaping.h | 43 +- .../absl/strings/internal/char_map.h | 26 +- .../absl/strings/internal/charconv_bigint.cc | 14 +- .../absl/strings/internal/charconv_bigint.h | 6 +- .../absl/strings/internal/charconv_parse.cc | 4 +- .../absl/strings/internal/charconv_parse.h | 0 .../absl/strings/internal/cord_data_edge.h | 0 .../absl/strings/internal/cord_internal.cc | 1 - .../absl/strings/internal/cord_internal.h | 428 ++++- .../absl/strings/internal/cord_rep_btree.cc | 29 +- .../absl/strings/internal/cord_rep_btree.h | 48 +- .../internal/cord_rep_btree_navigator.cc | 10 +- .../internal/cord_rep_btree_navigator.h | 0 .../strings/internal/cord_rep_btree_reader.cc | 0 .../strings/internal/cord_rep_btree_reader.h | 0 .../absl/strings/internal/cord_rep_consume.cc | 8 +- .../absl/strings/internal/cord_rep_consume.h | 11 +- .../absl/strings/internal/cord_rep_crc.cc | 16 +- .../absl/strings/internal/cord_rep_crc.h | 9 +- .../absl/strings/internal/cord_rep_flat.h | 8 + .../absl/strings/internal/cord_rep_ring.cc | 0 .../absl/strings/internal/cord_rep_ring.h | 4 +- .../strings/internal/cord_rep_ring_reader.h | 0 .../strings/internal/cord_rep_test_util.h | 205 +++ .../absl/strings/internal/cordz_functions.cc | 0 .../absl/strings/internal/cordz_functions.h | 22 +- .../absl/strings/internal/cordz_handle.cc | 66 +- .../absl/strings/internal/cordz_handle.h | 41 +- .../absl/strings/internal/cordz_info.cc | 16 +- .../absl/strings/internal/cordz_info.h | 14 +- .../strings/internal/cordz_sample_token.cc | 0 .../strings/internal/cordz_sample_token.h | 16 +- .../absl/strings/internal/cordz_statistics.h | 8 +- .../strings/internal/cordz_update_scope.h | 0 .../strings/internal/cordz_update_tracker.h | 0 .../internal/damerau_levenshtein_distance.cc | 93 ++ .../internal/damerau_levenshtein_distance.h | 34 + .../absl/strings/internal/escaping.cc | 48 +- .../absl/strings/internal/escaping.h | 17 +- .../strings/internal/escaping_test_common.h | 133 ++ .../strings/internal/has_absl_stringify.h | 55 + .../absl/strings/internal/memutil.cc | 40 + .../absl/strings/internal/memutil.h | 40 + .../strings/internal/numbers_test_common.h | 184 +++ .../absl/strings/internal/ostringstream.cc | 21 +- .../absl/strings/internal/ostringstream.h | 45 +- .../absl/strings/internal/pow10_helper.cc | 0 .../absl/strings/internal/pow10_helper.h | 0 .../strings/internal/resize_uninitialized.h | 0 .../absl/strings/internal/stl_type_traits.h | 2 +- .../absl/strings/internal/str_format/arg.cc | 132 +- .../absl/strings/internal/str_format/arg.h | 151 +- .../absl/strings/internal/str_format/bind.cc | 5 +- .../absl/strings/internal/str_format/bind.h | 32 +- .../strings/internal/str_format/checker.h | 100 ++ .../internal/str_format/constexpr_parser.h | 352 +++++ .../strings/internal/str_format/extension.cc | 3 +- .../strings/internal/str_format/extension.h | 8 +- .../internal/str_format/float_conversion.cc | 414 ++--- .../internal/str_format/float_conversion.h | 0 .../strings/internal/str_format/output.cc | 0 .../absl/strings/internal/str_format/output.h | 0 .../strings/internal/str_format/parser.cc | 140 ++ .../absl/strings/internal/str_format/parser.h | 111 +- .../absl/strings/internal/str_join_internal.h | 0 .../strings/internal/str_split_internal.h | 65 +- .../absl/strings/internal/string_constant.h | 0 .../absl/strings/internal/stringify_sink.cc | 28 + .../absl/strings/internal/stringify_sink.h | 57 + .../abseil-cpp}/absl/strings/internal/utf8.cc | 0 .../abseil-cpp}/absl/strings/internal/utf8.h | 0 tools/vendor/abseil-cpp/absl/strings/match.cc | 130 ++ .../vendor/abseil-cpp}/absl/strings/match.h | 19 + .../abseil-cpp}/absl/strings/numbers.cc | 333 ++-- .../vendor/abseil-cpp}/absl/strings/numbers.h | 7 +- .../abseil-cpp}/absl/strings/str_cat.cc | 68 +- .../vendor/abseil-cpp}/absl/strings/str_cat.h | 143 +- .../abseil-cpp}/absl/strings/str_format.h | 89 +- .../abseil-cpp}/absl/strings/str_join.h | 0 .../abseil-cpp}/absl/strings/str_replace.cc | 0 .../abseil-cpp}/absl/strings/str_replace.h | 0 .../abseil-cpp}/absl/strings/str_split.cc | 15 +- .../abseil-cpp}/absl/strings/str_split.h | 0 .../abseil-cpp}/absl/strings/string_view.cc | 42 +- .../abseil-cpp}/absl/strings/string_view.h | 13 +- .../vendor/abseil-cpp}/absl/strings/strip.h | 0 .../abseil-cpp}/absl/strings/substitute.cc | 14 +- .../abseil-cpp}/absl/strings/substitute.h | 66 +- .../absl/synchronization/BUILD.bazel | 379 +++++ .../absl/synchronization/CMakeLists.txt | 284 ++++ .../absl/synchronization/barrier.cc | 0 .../absl/synchronization/barrier.h | 0 .../absl/synchronization/blocking_counter.cc | 0 .../absl/synchronization/blocking_counter.h | 0 .../internal/create_thread_identity.cc | 5 + .../internal/create_thread_identity.h | 0 .../absl/synchronization/internal/futex.h | 177 +++ .../synchronization/internal/futex_waiter.cc | 111 ++ .../synchronization/internal/futex_waiter.h | 63 + .../synchronization/internal/graphcycles.cc | 86 +- .../synchronization/internal/graphcycles.h | 0 .../internal/kernel_timeout.cc | 225 +++ .../synchronization/internal/kernel_timeout.h | 178 +++ .../internal/per_thread_sem.cc | 20 +- .../synchronization/internal/per_thread_sem.h | 11 +- .../internal/pthread_waiter.cc | 167 ++ .../synchronization/internal/pthread_waiter.h | 60 + .../synchronization/internal/sem_waiter.cc | 122 ++ .../synchronization/internal/sem_waiter.h | 65 + .../synchronization/internal/stdcpp_waiter.cc | 91 ++ .../synchronization/internal/stdcpp_waiter.h | 56 + .../synchronization/internal/thread_pool.h | 9 +- .../absl/synchronization/internal/waiter.h | 69 + .../synchronization/internal/waiter_base.cc | 42 + .../synchronization/internal/waiter_base.h | 90 ++ .../synchronization/internal/win32_waiter.cc | 151 ++ .../synchronization/internal/win32_waiter.h | 70 + .../abseil-cpp}/absl/synchronization/mutex.cc | 953 ++++++------ .../abseil-cpp}/absl/synchronization/mutex.h | 381 +++-- .../absl/synchronization/notification.cc | 1 - .../absl/synchronization/notification.h | 1 - tools/vendor/abseil-cpp/absl/time/BUILD.bazel | 149 ++ .../abseil-cpp/absl/time/CMakeLists.txt | 141 ++ .../abseil-cpp}/absl/time/civil_time.cc | 26 + .../vendor/abseil-cpp}/absl/time/civil_time.h | 25 + .../vendor/abseil-cpp}/absl/time/clock.cc | 39 +- .../vendor/abseil-cpp}/absl/time/clock.h | 0 .../vendor/abseil-cpp}/absl/time/duration.cc | 64 +- .../vendor/abseil-cpp}/absl/time/format.cc | 3 +- .../absl/time/internal/cctz/BUILD.bazel | 160 ++ .../internal/cctz/include/cctz/civil_time.h | 0 .../cctz/include/cctz/civil_time_detail.h | 0 .../internal/cctz/include/cctz/time_zone.h | 1 + .../cctz/include/cctz/zone_info_source.h | 0 .../internal/cctz/src/civil_time_detail.cc | 0 .../time/internal/cctz/src/time_zone_fixed.cc | 2 +- .../time/internal/cctz/src/time_zone_fixed.h | 0 .../internal/cctz/src/time_zone_format.cc | 14 +- .../time/internal/cctz/src/time_zone_if.cc | 14 +- .../time/internal/cctz/src/time_zone_if.h | 9 +- .../time/internal/cctz/src/time_zone_impl.cc | 6 +- .../time/internal/cctz/src/time_zone_impl.h | 4 + .../time/internal/cctz/src/time_zone_info.cc | 652 ++++---- .../time/internal/cctz/src/time_zone_info.h | 25 +- .../time/internal/cctz/src/time_zone_libc.cc | 97 +- .../time/internal/cctz/src/time_zone_libc.h | 9 +- .../internal/cctz/src/time_zone_lookup.cc | 143 +- .../time/internal/cctz/src/time_zone_posix.cc | 0 .../time/internal/cctz/src/time_zone_posix.h | 2 +- .../absl/time/internal/cctz/src/tzfile.h | 6 +- .../internal/cctz/src/zone_info_source.cc | 3 +- .../time/internal/get_current_time_chrono.inc | 0 .../time/internal/get_current_time_posix.inc | 0 .../absl/time/internal/test_util.cc | 32 + .../abseil-cpp/absl/time/internal/test_util.h | 33 + .../vendor/abseil-cpp}/absl/time/time.cc | 15 +- .../vendor/abseil-cpp}/absl/time/time.h | 539 +++++-- .../vendor/abseil-cpp/absl/types/BUILD.bazel | 336 ++++ .../abseil-cpp/absl/types/CMakeLists.txt | 371 +++++ .../vendor/abseil-cpp}/absl/types/any.h | 6 +- .../abseil-cpp}/absl/types/bad_any_cast.cc | 0 .../abseil-cpp}/absl/types/bad_any_cast.h | 0 .../absl/types/bad_optional_access.cc | 0 .../absl/types/bad_optional_access.h | 0 .../absl/types/bad_variant_access.cc | 0 .../absl/types/bad_variant_access.h | 0 .../vendor/abseil-cpp}/absl/types/compare.h | 137 +- .../absl/types/internal/conformance_aliases.h | 0 .../types/internal/conformance_archetype.h | 0 .../absl/types/internal/conformance_profile.h | 0 .../absl/types/internal/conformance_testing.h | 1386 +++++++++++++++++ .../internal/conformance_testing_helpers.h | 0 .../absl/types/internal/optional.h | 58 +- .../absl/types/internal/parentheses.h | 0 .../abseil-cpp}/absl/types/internal/span.h | 51 +- .../absl/types/internal/transform_args.h | 0 .../abseil-cpp}/absl/types/internal/variant.h | 72 +- .../vendor/abseil-cpp}/absl/types/optional.h | 28 +- .../vendor/abseil-cpp}/absl/types/span.h | 39 +- .../vendor/abseil-cpp}/absl/types/variant.h | 0 .../abseil-cpp/absl/utility/BUILD.bazel | 77 + .../abseil-cpp/absl/utility/CMakeLists.txt | 68 + .../absl/utility/internal/if_constexpr.h | 70 + .../vendor/abseil-cpp}/absl/utility/utility.h | 0 tools/winlibs.R | 29 +- 660 files changed, 77346 insertions(+), 9139 deletions(-) create mode 100644 .gitattributes delete mode 100644 src/Makevars.ucrt delete mode 100644 src/absl/container/internal/raw_hash_set.cc delete mode 100644 src/absl/memory/memory.h delete mode 100644 src/absl/strings/internal/memutil.cc delete mode 100644 src/absl/strings/internal/memutil.h delete mode 100644 src/absl/strings/internal/str_format/checker.h delete mode 100644 src/absl/strings/internal/str_format/parser.cc delete mode 100644 src/absl/strings/match.cc delete mode 100644 src/absl/synchronization/internal/futex.h delete mode 100644 src/absl/synchronization/internal/kernel_timeout.h delete mode 100644 src/absl/synchronization/internal/waiter.cc delete mode 100644 src/absl/synchronization/internal/waiter.h delete mode 100644 src/absl/time/internal/zoneinfo.inc create mode 100644 tools/.gitignore create mode 100755 tools/build_absl.sh create mode 100644 tools/pkgconfig/absl_s2.pc create mode 100644 tools/vendor/abseil-cpp/.gitignore create mode 100644 tools/vendor/abseil-cpp/ABSEIL_ISSUE_TEMPLATE.md create mode 100644 tools/vendor/abseil-cpp/AUTHORS create mode 100644 tools/vendor/abseil-cpp/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/CMake/AbseilDll.cmake create mode 100644 tools/vendor/abseil-cpp/CMake/AbseilHelpers.cmake create mode 100644 tools/vendor/abseil-cpp/CMake/Googletest/CMakeLists.txt.in create mode 100644 tools/vendor/abseil-cpp/CMake/Googletest/DownloadGTest.cmake create mode 100644 tools/vendor/abseil-cpp/CMake/README.md create mode 100644 tools/vendor/abseil-cpp/CMake/abslConfig.cmake.in create mode 100644 tools/vendor/abseil-cpp/CMake/install_test_project/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/CMake/install_test_project/simple.cc create mode 100644 tools/vendor/abseil-cpp/CMake/install_test_project/test.sh create mode 100644 tools/vendor/abseil-cpp/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/CONTRIBUTING.md create mode 100644 tools/vendor/abseil-cpp/FAQ.md create mode 100644 tools/vendor/abseil-cpp/LICENSE create mode 100644 tools/vendor/abseil-cpp/PrivacyInfo.xcprivacy create mode 100644 tools/vendor/abseil-cpp/README.md create mode 100644 tools/vendor/abseil-cpp/UPGRADES.md create mode 100644 tools/vendor/abseil-cpp/WORKSPACE create mode 100644 tools/vendor/abseil-cpp/absl/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/abseil.podspec.gen.py create mode 100644 tools/vendor/abseil-cpp/absl/algorithm/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/algorithm/algorithm.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/algorithm/container.h (96%) create mode 100644 tools/vendor/abseil-cpp/absl/base/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/base/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/base/attributes.h (84%) rename {src => tools/vendor/abseil-cpp}/absl/base/call_once.h (99%) rename {src => tools/vendor/abseil-cpp}/absl/base/casts.h (94%) rename {src => tools/vendor/abseil-cpp}/absl/base/config.h (83%) rename {src => tools/vendor/abseil-cpp}/absl/base/const_init.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/dynamic_annotations.h (96%) create mode 100644 tools/vendor/abseil-cpp/absl/base/inline_variable_test_a.cc create mode 100644 tools/vendor/abseil-cpp/absl/base/inline_variable_test_b.cc rename {src => tools/vendor/abseil-cpp}/absl/base/internal/atomic_hook.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/atomic_hook_test_helper.cc create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h rename {src => tools/vendor/abseil-cpp}/absl/base/internal/cycleclock.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/cycleclock.h (85%) create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h rename {src => tools/vendor/abseil-cpp}/absl/base/internal/direct_mmap.h (96%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/dynamic_annotations.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/endian.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/errno_saver.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.cc create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/exception_testing.h rename {src => tools/vendor/abseil-cpp}/absl/base/internal/fast_type_id.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/hide_ptr.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/identity.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/inline_variable.h (96%) create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h rename {src => tools/vendor/abseil-cpp}/absl/base/internal/invoke.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/low_level_alloc.cc (88%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/low_level_alloc.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/low_level_scheduling.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/nullability_impl.h rename {src => tools/vendor/abseil-cpp}/absl/base/internal/per_thread_tls.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/prefetch.h (85%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/pretty_function.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/raw_logging.cc (85%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/raw_logging.h (75%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/scheduling_mode.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/scoped_set_env.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/scoped_set_env.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock.cc (98%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock_akaros.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock_linux.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock_posix.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock_wait.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock_wait.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/spinlock_win32.inc (84%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/strerror.cc (91%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/strerror.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/sysinfo.cc (82%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/sysinfo.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/thread_annotations.h (95%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/thread_identity.cc (91%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/thread_identity.h (94%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/throw_delegate.cc (76%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/throw_delegate.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/tsan_mutex_interface.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/unaligned_access.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/unscaledcycleclock.cc (97%) rename {src => tools/vendor/abseil-cpp}/absl/base/internal/unscaledcycleclock.h (62%) create mode 100644 tools/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h rename {src => tools/vendor/abseil-cpp}/absl/base/log_severity.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/log_severity.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/base/macros.h (86%) create mode 100644 tools/vendor/abseil-cpp/absl/base/nullability.h rename {src => tools/vendor/abseil-cpp}/absl/base/optimization.h (79%) rename {src => tools/vendor/abseil-cpp}/absl/base/options.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/base/policy_checks.h (85%) rename {src => tools/vendor/abseil-cpp}/absl/base/port.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/base/prefetch.h create mode 100644 tools/vendor/abseil-cpp/absl/base/spinlock_test_common.cc rename {src => tools/vendor/abseil-cpp}/absl/base/thread_annotations.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/cleanup/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/cleanup/cleanup.h create mode 100644 tools/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h create mode 100644 tools/vendor/abseil-cpp/absl/container/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/container/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/container/btree_map.h (94%) rename {src => tools/vendor/abseil-cpp}/absl/container/btree_set.h (94%) create mode 100644 tools/vendor/abseil-cpp/absl/container/btree_test.h rename {src => tools/vendor/abseil-cpp}/absl/container/fixed_array.h (86%) rename {src => tools/vendor/abseil-cpp}/absl/container/flat_hash_map.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/container/flat_hash_set.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/container/inlined_vector.h (74%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/btree.h (81%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/btree_container.h (82%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/common.h (97%) create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h rename {src => tools/vendor/abseil-cpp}/absl/container/internal/compressed_tuple.h (93%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/container_memory.h (96%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/counting_allocator.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hash_function_defaults.h (81%) create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hash_policy_traits.h (75%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hashtable_debug.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hashtable_debug_hooks.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hashtablez_sampler.cc (79%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hashtablez_sampler.h (82%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/hashtablez_sampler_force_weak_definition.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/inlined_vector.h (77%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/layout.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/node_slot_policy.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/container/internal/raw_hash_map.h (82%) create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc rename {src => tools/vendor/abseil-cpp}/absl/container/internal/raw_hash_set.h (64%) create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/test_instance_tracker.cc create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/test_instance_tracker.h rename {src => tools/vendor/abseil-cpp}/absl/container/internal/tracked.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h create mode 100644 tools/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h rename {src => tools/vendor/abseil-cpp}/absl/container/node_hash_map.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/container/node_hash_set.h (97%) create mode 100644 tools/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake create mode 100644 tools/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake create mode 100644 tools/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl create mode 100644 tools/vendor/abseil-cpp/absl/copts/configure_copts.bzl create mode 100644 tools/vendor/abseil-cpp/absl/copts/copts.py create mode 100644 tools/vendor/abseil-cpp/absl/copts/generate_copts.py create mode 100644 tools/vendor/abseil-cpp/absl/crc/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/crc/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/crc/crc32c.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/crc32c.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc32c.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc32c_inline.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_cord_state.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_cord_state.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_internal.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_memcpy.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h create mode 100644 tools/vendor/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h create mode 100644 tools/vendor/abseil-cpp/absl/debugging/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/debugging/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/debugging/failure_signal_handler.cc (87%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/failure_signal_handler.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/address_is_readable.cc (99%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/address_is_readable.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/demangle.cc (95%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/demangle.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/elf_mem_image.cc (94%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/elf_mem_image.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/examine_stack.cc (95%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/examine_stack.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stack_consumption.cc (98%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stack_consumption.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_aarch64-inl.inc (67%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_arm-inl.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_config.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_emscripten-inl.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_generic-inl.inc (98%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_powerpc-inl.inc (99%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_riscv-inl.inc (62%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_unimplemented-inl.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_win32-inl.inc (92%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/stacktrace_x86-inl.inc (89%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/symbolize.h (99%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/vdso_support.cc (97%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/internal/vdso_support.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/leak_check.cc (95%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/leak_check.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/stacktrace.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/stacktrace.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/debugging/symbolize.cc rename {src => tools/vendor/abseil-cpp}/absl/debugging/symbolize.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/symbolize_darwin.inc (94%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/symbolize_elf.inc (85%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/symbolize_emscripten.inc (97%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/symbolize_unimplemented.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/debugging/symbolize_win32.inc (88%) create mode 100644 tools/vendor/abseil-cpp/absl/flags/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/flags/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/flags/commandlineflag.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/commandlineflag.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/config.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/declare.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/flag.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/flag.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/flag_benchmark.lds create mode 100644 tools/vendor/abseil-cpp/absl/flags/flag_test_defs.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/commandlineflag.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/flag.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/flag.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/flag_msvc.inc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/parse.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/path_util.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/private_handle_accessor.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/program_name.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/program_name.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/registry.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/sequence_lock.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/usage.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/internal/usage.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/marshalling.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/marshalling.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/parse.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/parse.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/reflection.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/reflection.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/usage.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/usage.h create mode 100644 tools/vendor/abseil-cpp/absl/flags/usage_config.cc create mode 100644 tools/vendor/abseil-cpp/absl/flags/usage_config.h create mode 100644 tools/vendor/abseil-cpp/absl/functional/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/functional/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/functional/any_invocable.h (96%) rename {src => tools/vendor/abseil-cpp}/absl/functional/bind_front.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/functional/function_ref.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/functional/internal/any_invocable.h (87%) rename {src => tools/vendor/abseil-cpp}/absl/functional/internal/front_binder.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/functional/internal/function_ref.h (79%) create mode 100644 tools/vendor/abseil-cpp/absl/hash/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/hash/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/hash/hash.h create mode 100644 tools/vendor/abseil-cpp/absl/hash/hash_testing.h create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/city.cc create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/city.h create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/hash.cc create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/hash.h create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/hash_test.h create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h rename src/absl/debugging/symbolize.cc => tools/vendor/abseil-cpp/absl/hash/internal/print_hash_of.cc (74%) create mode 100644 tools/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h create mode 100644 tools/vendor/abseil-cpp/absl/log/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/log/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/log/absl_check.h create mode 100644 tools/vendor/abseil-cpp/absl/log/absl_log.h create mode 100644 tools/vendor/abseil-cpp/absl/log/check.h create mode 100644 tools/vendor/abseil-cpp/absl/log/check_test_impl.inc create mode 100644 tools/vendor/abseil-cpp/absl/log/die_if_null.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/die_if_null.h create mode 100644 tools/vendor/abseil-cpp/absl/log/flags.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/flags.h create mode 100644 tools/vendor/abseil-cpp/absl/log/globals.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/globals.h create mode 100644 tools/vendor/abseil-cpp/absl/log/initialize.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/initialize.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/append_truncated.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/check_impl.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/check_op.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/check_op.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/conditions.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/conditions.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/config.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/flags.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/globals.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/globals.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_format.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_format.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_impl.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_message.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_message.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/log_sink_set.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/nullguard.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/nullguard.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/nullstream.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/proto.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/proto.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/strip.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/structured.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/test_actions.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/test_actions.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/test_helpers.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/test_helpers.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/test_matchers.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/test_matchers.h create mode 100644 tools/vendor/abseil-cpp/absl/log/internal/voidify.h create mode 100644 tools/vendor/abseil-cpp/absl/log/log.h create mode 100644 tools/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc create mode 100644 tools/vendor/abseil-cpp/absl/log/log_entry.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/log_entry.h create mode 100644 tools/vendor/abseil-cpp/absl/log/log_sink.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/log_sink.h create mode 100644 tools/vendor/abseil-cpp/absl/log/log_sink_registry.h create mode 100644 tools/vendor/abseil-cpp/absl/log/log_streamer.h create mode 100644 tools/vendor/abseil-cpp/absl/log/scoped_mock_log.cc create mode 100644 tools/vendor/abseil-cpp/absl/log/scoped_mock_log.h create mode 100644 tools/vendor/abseil-cpp/absl/log/structured.h create mode 100644 tools/vendor/abseil-cpp/absl/memory/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/memory/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/memory/memory.h create mode 100644 tools/vendor/abseil-cpp/absl/meta/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/meta/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/meta/type_traits.h (50%) create mode 100644 tools/vendor/abseil-cpp/absl/numeric/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/numeric/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/numeric/bits.h (94%) rename {src => tools/vendor/abseil-cpp}/absl/numeric/int128.cc (93%) rename {src => tools/vendor/abseil-cpp}/absl/numeric/int128.h (95%) rename {src => tools/vendor/abseil-cpp}/absl/numeric/int128_have_intrinsic.inc (98%) rename {src => tools/vendor/abseil-cpp}/absl/numeric/int128_no_intrinsic.inc (82%) rename {src => tools/vendor/abseil-cpp}/absl/numeric/internal/bits.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/numeric/internal/representation.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/profiling/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/profiling/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/profiling/internal/exponential_biased.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/profiling/internal/exponential_biased.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/profiling/internal/periodic_sampler.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/profiling/internal/periodic_sampler.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/profiling/internal/sample_recorder.h (89%) create mode 100644 tools/vendor/abseil-cpp/absl/random/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/random/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/random/benchmarks.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/bernoulli_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/beta_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/bit_gen_ref.h create mode 100644 tools/vendor/abseil-cpp/absl/random/discrete_distribution.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/discrete_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/distributions.h create mode 100644 tools/vendor/abseil-cpp/absl/random/exponential_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/gaussian_distribution.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/gaussian_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/chi_square.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/chi_square.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/distribution_caller.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/distribution_test_util.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/distribution_test_util.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/explicit_seed_seq.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/fastmath.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/gaussian_distribution_gentables.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/generate_real.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/mock_helpers.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/mock_overload_set.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/nanobenchmark.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/nanobenchmark.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/pcg_engine.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/platform.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/pool_urbg.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/pool_urbg.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_detect.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_detect.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_engine.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_hwaes.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_hwaes.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_round_keys.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_slow.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_slow.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/randen_traits.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/seed_material.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/seed_material.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/sequence_urbg.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/traits.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/uniform_helper.h create mode 100644 tools/vendor/abseil-cpp/absl/random/internal/wide_multiply.h create mode 100644 tools/vendor/abseil-cpp/absl/random/log_uniform_int_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/mock_distributions.h create mode 100644 tools/vendor/abseil-cpp/absl/random/mocking_bit_gen.h create mode 100644 tools/vendor/abseil-cpp/absl/random/poisson_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/random.h create mode 100644 tools/vendor/abseil-cpp/absl/random/seed_gen_exception.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/seed_gen_exception.h create mode 100644 tools/vendor/abseil-cpp/absl/random/seed_sequences.cc create mode 100644 tools/vendor/abseil-cpp/absl/random/seed_sequences.h create mode 100644 tools/vendor/abseil-cpp/absl/random/uniform_int_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/uniform_real_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/random/zipf_distribution.h create mode 100644 tools/vendor/abseil-cpp/absl/status/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/status/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/status/internal/status_internal.h create mode 100644 tools/vendor/abseil-cpp/absl/status/internal/statusor_internal.h create mode 100644 tools/vendor/abseil-cpp/absl/status/status.cc create mode 100644 tools/vendor/abseil-cpp/absl/status/status.h create mode 100644 tools/vendor/abseil-cpp/absl/status/status_payload_printer.cc create mode 100644 tools/vendor/abseil-cpp/absl/status/status_payload_printer.h create mode 100644 tools/vendor/abseil-cpp/absl/status/statusor.cc create mode 100644 tools/vendor/abseil-cpp/absl/status/statusor.h create mode 100644 tools/vendor/abseil-cpp/absl/strings/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/strings/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/strings/ascii.cc (77%) rename {src => tools/vendor/abseil-cpp}/absl/strings/ascii.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/charconv.cc (57%) rename {src => tools/vendor/abseil-cpp}/absl/strings/charconv.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/strings/cord.cc (92%) rename {src => tools/vendor/abseil-cpp}/absl/strings/cord.h (92%) rename {src => tools/vendor/abseil-cpp}/absl/strings/cord_analysis.cc (89%) rename {src => tools/vendor/abseil-cpp}/absl/strings/cord_analysis.h (66%) rename {src => tools/vendor/abseil-cpp}/absl/strings/cord_buffer.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/cord_buffer.h (97%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/cord_test_helpers.h create mode 100644 tools/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h rename {src => tools/vendor/abseil-cpp}/absl/strings/escaping.cc (87%) rename {src => tools/vendor/abseil-cpp}/absl/strings/escaping.h (82%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/char_map.h (86%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/charconv_bigint.cc (97%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/charconv_bigint.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/charconv_parse.cc (99%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/charconv_parse.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_data_edge.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_internal.cc (96%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_internal.h (63%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_btree.cc (98%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_btree.h (95%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_btree_navigator.cc (96%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_btree_navigator.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_btree_reader.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_btree_reader.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_consume.cc (86%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_consume.h (82%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_crc.cc (77%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_crc.h (92%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_flat.h (95%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_ring.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_ring.h (99%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cord_rep_ring_reader.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/cord_rep_test_util.h rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_functions.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_functions.h (78%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_handle.cc (63%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_handle.h (71%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_info.cc (96%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_info.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_sample_token.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_sample_token.h (86%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_statistics.h (96%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_update_scope.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/cordz_update_tracker.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/escaping.cc (79%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/escaping.h (78%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/escaping_test_common.h create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/has_absl_stringify.h create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/memutil.cc create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/memutil.h create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/numbers_test_common.h rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/ostringstream.cc (61%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/ostringstream.h (66%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/pow10_helper.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/pow10_helper.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/resize_uninitialized.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/stl_type_traits.h (99%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/arg.cc (80%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/arg.h (77%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/bind.cc (97%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/bind.h (88%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/extension.cc (97%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/extension.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/float_conversion.cc (79%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/float_conversion.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/output.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/output.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/str_format/parser.cc rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_format/parser.h (73%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_join_internal.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/str_split_internal.h (86%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/string_constant.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/stringify_sink.cc create mode 100644 tools/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/utf8.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/internal/utf8.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/strings/match.cc rename {src => tools/vendor/abseil-cpp}/absl/strings/match.h (79%) rename {src => tools/vendor/abseil-cpp}/absl/strings/numbers.cc (81%) rename {src => tools/vendor/abseil-cpp}/absl/strings/numbers.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_cat.cc (75%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_cat.h (73%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_format.h (89%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_join.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_replace.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_replace.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_split.cc (90%) rename {src => tools/vendor/abseil-cpp}/absl/strings/str_split.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/string_view.cc (81%) rename {src => tools/vendor/abseil-cpp}/absl/strings/string_view.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/strings/strip.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/strings/substitute.cc (91%) rename {src => tools/vendor/abseil-cpp}/absl/strings/substitute.h (93%) create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/synchronization/barrier.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/barrier.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/blocking_counter.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/blocking_counter.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/create_thread_identity.cc (96%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/create_thread_identity.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/futex.h create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.h rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/graphcycles.cc (88%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/graphcycles.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/per_thread_sem.cc (86%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/per_thread_sem.h (90%) create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.h create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.h create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h rename {src => tools/vendor/abseil-cpp}/absl/synchronization/internal/thread_pool.h (90%) create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/waiter.h create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.h create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc create mode 100644 tools/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.h rename {src => tools/vendor/abseil-cpp}/absl/synchronization/mutex.cc (78%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/mutex.h (76%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/notification.cc (98%) rename {src => tools/vendor/abseil-cpp}/absl/synchronization/notification.h (99%) create mode 100644 tools/vendor/abseil-cpp/absl/time/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/time/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/time/civil_time.cc (83%) rename {src => tools/vendor/abseil-cpp}/absl/time/civil_time.h (94%) rename {src => tools/vendor/abseil-cpp}/absl/time/clock.cc (95%) rename {src => tools/vendor/abseil-cpp}/absl/time/clock.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/duration.cc (94%) rename {src => tools/vendor/abseil-cpp}/absl/time/format.cc (98%) create mode 100644 tools/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/include/cctz/civil_time.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/include/cctz/civil_time_detail.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/include/cctz/time_zone.h (99%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/include/cctz/zone_info_source.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/civil_time_detail.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_fixed.cc (98%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_fixed.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_format.cc (98%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_if.cc (74%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_if.h (89%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_impl.cc (95%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_impl.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_info.cc (93%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_info.h (89%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_libc.cc (80%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_libc.h (90%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_lookup.cc (56%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_posix.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/time_zone_posix.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/tzfile.h (92%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/cctz/src/zone_info_source.cc (99%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/get_current_time_chrono.inc (100%) rename {src => tools/vendor/abseil-cpp}/absl/time/internal/get_current_time_posix.inc (100%) create mode 100644 tools/vendor/abseil-cpp/absl/time/internal/test_util.cc create mode 100644 tools/vendor/abseil-cpp/absl/time/internal/test_util.h rename {src => tools/vendor/abseil-cpp}/absl/time/time.cc (96%) rename {src => tools/vendor/abseil-cpp}/absl/time/time.h (73%) create mode 100644 tools/vendor/abseil-cpp/absl/types/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/types/CMakeLists.txt rename {src => tools/vendor/abseil-cpp}/absl/types/any.h (98%) rename {src => tools/vendor/abseil-cpp}/absl/types/bad_any_cast.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/bad_any_cast.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/bad_optional_access.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/bad_optional_access.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/bad_variant_access.cc (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/bad_variant_access.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/compare.h (87%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/conformance_aliases.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/conformance_archetype.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/conformance_profile.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/types/internal/conformance_testing.h rename {src => tools/vendor/abseil-cpp}/absl/types/internal/conformance_testing_helpers.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/optional.h (85%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/parentheses.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/span.h (72%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/transform_args.h (100%) rename {src => tools/vendor/abseil-cpp}/absl/types/internal/variant.h (96%) rename {src => tools/vendor/abseil-cpp}/absl/types/optional.h (97%) rename {src => tools/vendor/abseil-cpp}/absl/types/span.h (94%) rename {src => tools/vendor/abseil-cpp}/absl/types/variant.h (100%) create mode 100644 tools/vendor/abseil-cpp/absl/utility/BUILD.bazel create mode 100644 tools/vendor/abseil-cpp/absl/utility/CMakeLists.txt create mode 100644 tools/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h rename {src => tools/vendor/abseil-cpp}/absl/utility/utility.h (100%) diff --git a/.Rbuildignore b/.Rbuildignore index af9ce000..b8a674fa 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -12,3 +12,7 @@ ^README\.Rmd$ ^vignettes/articles$ ^\.clang-format$ +^tools/build$ +^tools/dist$ +^compile_commands\.json$ +^\.cache$ diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..203732ea --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ + +tools/vendor/abseil-cpp linguist-vendored diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index b912eb92..6f79b931 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -19,8 +19,9 @@ jobs: matrix: config: - {os: macOS-latest, r: 'release'} - - {os: windows-latest, r: '3.6'} - {os: windows-latest, r: '4.1'} + - {os: windows-latest, r: '4.2'} + - {os: windows-latest, r: '4.3'} - {os: windows-latest, r: 'release'} - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - {os: ubuntu-latest, r: 'release'} diff --git a/.gitignore b/.gitignore index a4d151d6..8a1df551 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ .vscode docs configure.log +.cache +compile_commands.json +windows diff --git a/DESCRIPTION b/DESCRIPTION index d65a6286..1a82b81d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: s2 Title: Spherical Geometry Operators Using the S2 Geometry Library -Version: 1.1.6 +Version: 1.1.6.9000 Authors@R: c( person(given = "Dewey", family = "Dunnington", @@ -19,26 +19,26 @@ Authors@R: c( Description: Provides R bindings for Google's s2 library for geometric calculations on the sphere. High-performance constructors and exporters provide high compatibility with existing spatial packages, transformers construct new geometries from existing - geometries, predicates provide a means to select geometries based on spatial + geometries, predicates provide a means to select geometries based on spatial relationships, and accessors extract information about geometries. License: Apache License (== 2.0) Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) RoxygenNote: 7.2.3 -SystemRequirements: OpenSSL >= 1.0.1 -LinkingTo: +SystemRequirements: OpenSSL >= 1.0.1, Abseil >= 20230802.0 +LinkingTo: Rcpp, wk -Imports: +Imports: Rcpp, wk (>= 0.6.0) -Suggests: +Suggests: bit64, testthat (>= 3.0.0), vctrs URL: https://r-spatial.github.io/s2/, https://github.com/r-spatial/s2, http://s2geometry.io/ BugReports: https://github.com/r-spatial/s2/issues -Depends: +Depends: R (>= 3.0.0) Config/testthat/edition: 3 diff --git a/NEWS.md b/NEWS.md index b825a6b0..b87194d8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,13 @@ +# s2 (development version) + +* The Abseil dependency is resolved using pkg-config where possible. + Where this is not possible, a vendored version of Abseil will be built using + CMake (#258). + +# s2 1.1.6 + +* Fix CRAN warning (#254). + # s2 1.1.5 * fix compiler problem on Alpine 3.19.0 (#251) diff --git a/cleanup b/cleanup index 3fd9cd21..56fc4727 100755 --- a/cleanup +++ b/cleanup @@ -1,3 +1,7 @@ #!/bin/sh rm -f src/Makevars configure.log autobrew -rm `find src -name *.o` +rm `find src -name "*.o"` +rm `find src -name "*.a"` +rm `find src -name "*.tmp"` +rm -rf tools/build +rm -rf tools/dist diff --git a/configure b/configure index fbf909f0..4a7aaf5e 100755 --- a/configure +++ b/configure @@ -107,6 +107,51 @@ else PKG_CFLAGS="$PKG_CFLAGS -DIS_BIG_ENDIAN" fi +# Check pkg-config for abseil-cpp, but fall back to a cmake build. +# This should possibly be updated to check that the pkg-config detected +# version will actually work; however, the version of abseil that included +# pkg-config files is about the same as the minimum version required here. +export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:`pwd`/tools/pkgconfig" +echo "** Using PKG_CONFIG_PATH=${PKG_CONFIG_PATH}" + +if [ -z "${R_S2_ABSL_HOME}" ] && pkg-config absl_s2 --libs 2>/dev/null; then + echo "** Using abseil-cpp from pkg-config" + + PKGCONFIG_CFLAGS=`pkg-config --cflags-only-I absl_s2` + PKGCONFIG_LIBS=`pkg-config --libs absl_s2` + PKG_CFLAGS="${PKGCONFIG_CFLAGS} ${PKG_CFLAGS}" + PKG_LIBS="${PKGCONFIG_LIBS} ${PKG_LIBS}" +else + # Allow developers to set R_S2_ABSL_HOME in .Renviron to avoid building + # Abseil on every package rebuild. This can be built from this directory using + # tools/build_absl.sh path/to/dir (then R_S2_ABSL_HOME=path/to/dir in .Renviron) + if [ -z "$R_S2_ABSL_HOME" ]; then + echo "** Building abseil-cpp using cmake" + CMAKE_INSTALL_PREFIX="`pwd`/tools/dist" + if tools/build_absl.sh "${CMAKE_INSTALL_PREFIX}"; then + echo "** Done!" + else + echo "** CMake build of Abseil failed" + echo "** Abseil can be installed with:" + echo "** - apt-get install libabsl-dev" + echo "** - dnf install abseil-cpp-devel" + echo "** - brew install abseil" + echo "** If a system install of Abseil is not possible, cmake is required to build" + echo "** the internal vendored copy." + exit 1 + fi + + # Clean up build directory + rm -rf tools/build + + R_S2_ABSL_HOME="`pwd`/tools/dist" + fi + + ABSL_LIBS="-labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -labsl_cordz_handle -labsl_crc_cord_state -labsl_crc32c -labsl_crc_internal -labsl_crc_cpu_detect -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_synchronization -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_stacktrace -labsl_symbolize -labsl_malloc_internal -labsl_time -labsl_civil_time -labsl_time_zone -labsl_hash -labsl_city -labsl_bad_optional_access -labsl_bad_variant_access -labsl_low_level_hash -labsl_str_format_internal -labsl_strings -labsl_string_view -labsl_strings_internal -labsl_int128 -labsl_throw_delegate -labsl_demangle_internal -labsl_base -labsl_spinlock_wait -labsl_debugging_internal -labsl_raw_logging_internal -labsl_log_severity" + PKG_CFLAGS="-I${R_S2_ABSL_HOME}/include ${PKG_CFLAGS}" + PKG_LIBS="-L${R_S2_ABSL_HOME}/lib ${ABSL_LIBS} ${PKG_LIBS}" +fi + # From apache/arrow/r/configure: # If on Raspberry Pi, need to manually link against latomic # See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81358 for similar example @@ -117,7 +162,6 @@ fi echo "Using PKG_LIBS=$PKG_LIBS" echo "Using PKG_CFLAGS=$PKG_CFLAGS" - # Write to Makevars sed -e "s|@cflags@|$PKG_CFLAGS|" -e "s|@libs@|$PKG_LIBS|" src/Makevars.in > src/Makevars diff --git a/configure.win b/configure.win index e69de29b..85d0e2ce 100755 --- a/configure.win +++ b/configure.win @@ -0,0 +1,21 @@ + +# On R 4.3 and 4.4, Abseil can be resolved using pkg-config. Otherwise, +# build a copy of Abseil-cpp using CMake. +if pkg-config absl_base --libs 2>/dev/null; then + echo "Using Abseil from RTools via pkg-config" +else + # Build the libraries + CMAKE_INSTALL_PREFIX="`pwd`/tools/dist" + WIN_CPPFLAGS="-DABSL_FORCE_WAITER_MODE=4" tools/build_absl.sh "${CMAKE_INSTALL_PREFIX}" + + # Remove the build directory (its existence causes a check warning on R 4.2) + rm -rf tools/build +fi + +# On R 4.3 and 4.4, OpenSSL can be resolved using pkg-config. Otherwise, +# Use rwinlibs to download a static library for that toolchain. +if pkg-config openssl --libs 2>/dev/null; then + echo "Using openssl from RTools via pkg-config" +else + "${R_HOME}/bin/Rscript.exe" "tools/winlibs.R" +fi diff --git a/data-raw/update-absl.R b/data-raw/update-absl.R index 6c361b20..b59d68a4 100644 --- a/data-raw/update-absl.R +++ b/data-raw/update-absl.R @@ -1,166 +1,30 @@ library(tidyverse) -tag <- "20220623.1" +tag <- "20230802.2" # download Abseil source_url <- glue::glue("https://github.com/abseil/abseil-cpp/archive/refs/tags/{tag}.zip") curl::curl_download(source_url, "data-raw/abseil-cpp-source.zip") -unzip("data-raw/abseil-cpp-source.zip", exdir = "data-raw") - - -absl_copy <- function(src, dst) { - src_files <- list.files(src, "\\.(cc|h|inc)$", recursive = TRUE) %>% - str_subset("_test(ing)?\\.(cc|h)$", negate = TRUE) %>% - str_subset("test_", negate = TRUE) %>% - str_subset("_benchmark", negate = TRUE) - - dst_files <- file.path(dst, src_files) - dst_dirs <- unique(dirname(dst_files)) - for (d in sort(dst_dirs)) { - if (!dir.exists(d)) dir.create(d, recursive = TRUE) - } - - stopifnot(all(file.copy(file.path(src, src_files), dst_files))) -} - -unlink("src/absl", recursive = TRUE) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/container"), - "src/absl/container" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/base"), - "src/absl/base" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/meta"), - "src/absl/meta" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/synchronization"), - "src/absl/synchronization" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/time"), - "src/absl/time" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/strings"), - "src/absl/strings" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/utility"), - "src/absl/utility" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/debugging"), - "src/absl/debugging" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/memory"), - "src/absl/memory" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/types"), - "src/absl/types" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/numeric"), - "src/absl/numeric" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/algorithm"), - "src/absl/algorithm" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/functional"), - "src/absl/functional" -) - -absl_copy( - glue::glue("data-raw/abseil-cpp-{tag}/absl/profiling"), - "src/absl/profiling" -) - -absl_objects <- list.files("src/absl", ".cc$", recursive = TRUE) %>% - file.path("absl", .) %>% - str_subset("\\.cc$") %>% - str_replace("\\.cc$", ".o") %>% - paste0(collapse = " \\\n ") %>% - paste0("ABSL_LIBS = ", .) - -clipr::write_clip(absl_objects) -usethis::edit_file("src/Makevars.win") -usethis::edit_file("src/Makevars.in") - -# Edits needed to make CMD check happy - -# Pragmas -fix_pragmas <- function(f) { - content <- readr::read_file(f) - content <- stringr::str_replace_all(content, "\n#pragma", "\n// #pragma") - readr::write_file(content, f) -} - -fix_pragmas("src/absl/base/internal/invoke.h") -fix_pragmas("src/absl/container/inlined_vector.h") -fix_pragmas("src/absl/container/internal/inlined_vector.h") -fix_pragmas("src/absl/functional/internal/any_invocable.h") -fix_pragmas("src/absl/types/internal/optional.h") -fix_pragmas("src/absl/container/internal/counting_allocator.h") - -# Aborts -fix_aborts <- function(f) { - content <- readr::read_file(f) - content <- stringr::str_replace_all(content, fixed("abort()"), "throw std::runtime_error(\"abort()\")") - readr::write_file(content, f) -} - -fix_aborts("src/absl/base/internal/raw_logging.cc") -fix_aborts("src/absl/base/internal/sysinfo.cc") -fix_aborts("src/absl/debugging/symbolize_elf.inc") - -# Manual updates - -# The symbolizer implementation causes some trouble. We don't use this feature here -# and there seems to be a way to turn it off completely. Do this. -usethis::edit_file("src/absl/debugging/symbolize.cc") - -# On Windows, R.h defines a macro 'Free', which we have to undefine -usethis::edit_file("src/absl/base/internal/low_level_alloc.h") - -# On Windows with rtools35 (i.e., very old GCC with incomplete C++11), a reference -# to std::get_time() causes compilation error. We don't need strptime here, so just -# return nullptr in this function. -usethis::edit_file("src/absl/time/internal/cctz/src/time_zone_format.cc") - -# Windows builds have some additional issues with format strings. These are all within -# absl logger functions...just remove the definition of ABSL_RAW_LOG(...). -usethis::edit_file("src/absl/base/internal/raw_logging.h") - -# Fix a workaround for older gcc that causes a check warning. The bug that the -# workaround is addressing only applies to old gcc, so only use that bit of code -# for old gcc -usethis::edit_file("src/absl/container/internal/raw_hash_set.h") - -# CRAN compiles with -Wpedantic, so we can't use the __int128 intrinsic type -# undefine ABSL_HAVE_INTRINSIC_INT128 here: -usethis::edit_file("src/absl/base/config.h") - -# The use of ABSL_HAVE_CPP_ATTRIBUTE() with ABSL_FALLTHROUGH_INTENDED -# here uses C++17 attributes even if -std=c++17 is not set, -# which causes CRAN warnings with -Wpedantic -usethis::edit_file("src/absl/base/attributes.h") +unzip("data-raw/abseil-cpp-source.zip", exdir = "tools/vendor") +file.rename(glue::glue("tools/vendor/abseil-cpp-{tag}"), "tools/vendor/abseil-cpp") + +# prune unused components +unlink("tools/vendor/abseil-cpp/.github", recursive = TRUE) +unlink("tools/vendor/abseil-cpp/.clang-format") +unlink("tools/vendor/abseil-cpp/ci", recursive = TRUE) +unlink(list.files("tools/vendor/abseil-cpp", "\\.py$", full.names = TRUE)) +unlink( + list.files( + "tools/vendor/abseil-cpp/absl", "_test.cc$", + full.names = TRUE, + recursive = TRUE + ) +) +unlink( + list.files( + "tools/vendor/abseil-cpp/absl", "_benchmark.cc$", + full.names = TRUE, + recursive = TRUE + ) +) +unlink("tools/vendor/abseil-cpp/absl/time/internal/cctz/testdata", recursive = TRUE) diff --git a/src/.gitignore b/src/.gitignore index e8386315..39cd3a44 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -2,3 +2,4 @@ *.so *.dll Makevars +s2/libs2static.a diff --git a/src/Makevars.in b/src/Makevars.in index 2bc496ee..5b75e25d 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -1,117 +1,10 @@ PKG_CPPFLAGS = -I../src -DSTRICT_R_HEADERS -PKG_LIBS = @libs@ +PKG_LIBS = -Ls2 -ls2static @libs@ PKG_CXXFLAGS = @cflags@ -pthread -CXX_STD = CXX11 +CXX_STD = CXX17 -ABSL_LIBS = absl/base/internal/cycleclock.o \ - absl/base/internal/low_level_alloc.o \ - absl/base/internal/raw_logging.o \ - absl/base/internal/scoped_set_env.o \ - absl/base/internal/spinlock_wait.o \ - absl/base/internal/spinlock.o \ - absl/base/internal/strerror.o \ - absl/base/internal/sysinfo.o \ - absl/base/internal/thread_identity.o \ - absl/base/internal/throw_delegate.o \ - absl/base/internal/unscaledcycleclock.o \ - absl/base/log_severity.o \ - absl/container/internal/hashtablez_sampler_force_weak_definition.o \ - absl/container/internal/hashtablez_sampler.o \ - absl/container/internal/raw_hash_set.o \ - absl/debugging/failure_signal_handler.o \ - absl/debugging/internal/address_is_readable.o \ - absl/debugging/internal/demangle.o \ - absl/debugging/internal/elf_mem_image.o \ - absl/debugging/internal/examine_stack.o \ - absl/debugging/internal/stack_consumption.o \ - absl/debugging/internal/vdso_support.o \ - absl/debugging/leak_check.o \ - absl/debugging/stacktrace.o \ - absl/debugging/symbolize.o \ - absl/numeric/int128.o \ - absl/profiling/internal/exponential_biased.o \ - absl/profiling/internal/periodic_sampler.o \ - absl/strings/ascii.o \ - absl/strings/charconv.o \ - absl/strings/cord_analysis.o \ - absl/strings/cord_buffer.o \ - absl/strings/cord.o \ - absl/strings/escaping.o \ - absl/strings/internal/charconv_bigint.o \ - absl/strings/internal/charconv_parse.o \ - absl/strings/internal/cord_internal.o \ - absl/strings/internal/cord_rep_btree_navigator.o \ - absl/strings/internal/cord_rep_btree_reader.o \ - absl/strings/internal/cord_rep_btree.o \ - absl/strings/internal/cord_rep_consume.o \ - absl/strings/internal/cord_rep_crc.o \ - absl/strings/internal/cord_rep_ring.o \ - absl/strings/internal/cordz_functions.o \ - absl/strings/internal/cordz_handle.o \ - absl/strings/internal/cordz_info.o \ - absl/strings/internal/cordz_sample_token.o \ - absl/strings/internal/escaping.o \ - absl/strings/internal/memutil.o \ - absl/strings/internal/ostringstream.o \ - absl/strings/internal/pow10_helper.o \ - absl/strings/internal/str_format/arg.o \ - absl/strings/internal/str_format/bind.o \ - absl/strings/internal/str_format/extension.o \ - absl/strings/internal/str_format/float_conversion.o \ - absl/strings/internal/str_format/output.o \ - absl/strings/internal/str_format/parser.o \ - absl/strings/internal/utf8.o \ - absl/strings/match.o \ - absl/strings/numbers.o \ - absl/strings/str_cat.o \ - absl/strings/str_replace.o \ - absl/strings/str_split.o \ - absl/strings/string_view.o \ - absl/strings/substitute.o \ - absl/synchronization/barrier.o \ - absl/synchronization/blocking_counter.o \ - absl/synchronization/internal/create_thread_identity.o \ - absl/synchronization/internal/graphcycles.o \ - absl/synchronization/internal/per_thread_sem.o \ - absl/synchronization/internal/waiter.o \ - absl/synchronization/mutex.o \ - absl/synchronization/notification.o \ - absl/time/civil_time.o \ - absl/time/clock.o \ - absl/time/duration.o \ - absl/time/format.o \ - absl/time/internal/cctz/src/civil_time_detail.o \ - absl/time/internal/cctz/src/time_zone_fixed.o \ - absl/time/internal/cctz/src/time_zone_format.o \ - absl/time/internal/cctz/src/time_zone_if.o \ - absl/time/internal/cctz/src/time_zone_impl.o \ - absl/time/internal/cctz/src/time_zone_info.o \ - absl/time/internal/cctz/src/time_zone_libc.o \ - absl/time/internal/cctz/src/time_zone_lookup.o \ - absl/time/internal/cctz/src/time_zone_posix.o \ - absl/time/internal/cctz/src/zone_info_source.o \ - absl/time/time.o \ - absl/types/bad_any_cast.o \ - absl/types/bad_optional_access.o \ - absl/types/bad_variant_access.o - -OBJECTS = $(ABSL_LIBS) \ - cpp-compat.o \ - s2-accessors.o \ - s2-bounds.o \ - s2-cell.o \ - s2-cell-union.o \ - s2-constructors-formatters.o \ - s2-predicates.o \ - s2-transformers.o \ - init.o \ - RcppExports.o \ - s2-geography.o \ - s2-lnglat.o \ - s2-matrix.o \ - wk-impl.o \ - s2geography/accessors.o \ +S2_OBJECTS = s2geography/accessors.o \ s2geography/accessors-geog.o \ s2geography/linear-referencing.o \ s2geography/distance.o \ @@ -217,3 +110,30 @@ OBJECTS = $(ABSL_LIBS) \ s2/util/math/exactfloat/exactfloat.o \ s2/util/math/mathutil.o \ s2/util/units/length-units.o + +STATLIB = s2/libs2static.a + +OBJECTS = cpp-compat.o \ + s2-accessors.o \ + s2-bounds.o \ + s2-cell.o \ + s2-cell-union.o \ + s2-constructors-formatters.o \ + s2-predicates.o \ + s2-transformers.o \ + init.o \ + RcppExports.o \ + s2-geography.o \ + s2-lnglat.o \ + s2-matrix.o \ + wk-impl.o + +$(SHLIB): $(STATLIB) + +$(STATLIB): $(S2_OBJECTS) + ar rcs $(STATLIB) $(S2_OBJECTS) + +clean: + rm -f $(SHLIB) $(STATLIB) $(OBJECTS) $(S2LIBS) + +.PHONY: clean diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt deleted file mode 100644 index 51eed486..00000000 --- a/src/Makevars.ucrt +++ /dev/null @@ -1,3 +0,0 @@ -CRT=-ucrt -include Makevars.win -CXX_STD = CXX11 diff --git a/src/Makevars.win b/src/Makevars.win index 31ed40b7..0fa5a2f8 100644 --- a/src/Makevars.win +++ b/src/Makevars.win @@ -1,113 +1,35 @@ -OPENSSL_LIBS = $(shell pkg-config --libs openssl) -# Config for legacy rtools without pkgconfig -ifeq (,$(OPENSSL_LIBS)) -OPENSSL_LIBS=-L../windows/openssl-$(VERSION)/lib${R_ARCH}${CRT} -lssl -lcrypto -lws2_32 -lgdi32 -lcrypt32 -OPENSSL_CFLAGS=-I../windows/openssl-$(VERSION)/include +# Configure Abseil. If it wasn't available via pkg-config, it was built +# by cmake in configure.win. + +ABSL_LIBS = -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -labsl_cordz_handle -labsl_crc_cord_state -labsl_crc32c -labsl_crc_internal -labsl_crc_cpu_detect -labsl_raw_hash_set -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_synchronization -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_stacktrace -labsl_symbolize -labsl_malloc_internal -labsl_time -labsl_civil_time -labsl_time_zone -labsl_hash -labsl_city -labsl_bad_optional_access -labsl_bad_variant_access -labsl_low_level_hash -labsl_str_format_internal -labsl_strings -labsl_string_view -labsl_strings_internal -labsl_int128 -labsl_throw_delegate -labsl_demangle_internal -labsl_base -labsl_spinlock_wait -labsl_debugging_internal -labsl_raw_logging_internal -labsl_log_severity + +ifeq (,$(shell pkg-config absl_base --libs 2>/dev/null)) + ABSL_CFLAGS = -I../tools/dist/include + ABSL_LIB_FLAGS = -L../tools/dist/lib $(ABSL_LIBS) -limagehlp +else + ABSL_LIB_FLAGS = $(ABSL_LIBS) endif -VERSION = 1.1.1k -PKG_CPPFLAGS = -DS2_USE_EXACTFLOAT -D_USE_MATH_DEFINES -DNDEBUG -DIS_LITTLE_ENDIAN -DOMIT_STRPTIME $(OPENSSL_CFLAGS) -I../src -PKG_LIBS = -Ls2 -ls2static $(OPENSSL_LIBS) -CXX_STD = CXX11 +# Configure openssl and finalize PKG_LIBS. If openssl is not available via +# pkg-config, it was downloaded from rwinlibs in configure.win. +ifeq (,$(shell pkg-config openssl --libs 2>/dev/null)) + OPENSSL_CFLAGS = -I../windows/openssl/include + OPENSSL_LIB_FLAGS = -L../windows/openssl/lib -lssl -lcrypto -lz -lws2_32 -lgdi32 -lcrypt32 +else + OPENSSL_CFLAGS = + OPENSSL_LIB_FLAGS = $(shell pkg-config --libs openssl) +endif -STATLIB = s2/libs2static.a +PKG_CPPFLAGS = $(ABSL_CFLAGS) $(OPENSSL_CFLAGS) -DSTRICT_R_HEADERS -DS2_USE_EXACTFLOAT -D_USE_MATH_DEFINES -DNDEBUG -DIS_LITTLE_ENDIAN -DOMIT_STRPTIME -I../src +PKG_LIBS = -Ls2 -ls2static $(ABSL_LIB_FLAGS) $(OPENSSL_LIB_FLAGS) -ABSL_LIBS = absl/base/internal/cycleclock.o \ - absl/base/internal/low_level_alloc.o \ - absl/base/internal/raw_logging.o \ - absl/base/internal/scoped_set_env.o \ - absl/base/internal/spinlock_wait.o \ - absl/base/internal/spinlock.o \ - absl/base/internal/strerror.o \ - absl/base/internal/sysinfo.o \ - absl/base/internal/thread_identity.o \ - absl/base/internal/throw_delegate.o \ - absl/base/internal/unscaledcycleclock.o \ - absl/base/log_severity.o \ - absl/container/internal/hashtablez_sampler_force_weak_definition.o \ - absl/container/internal/hashtablez_sampler.o \ - absl/container/internal/raw_hash_set.o \ - absl/debugging/failure_signal_handler.o \ - absl/debugging/internal/address_is_readable.o \ - absl/debugging/internal/demangle.o \ - absl/debugging/internal/elf_mem_image.o \ - absl/debugging/internal/examine_stack.o \ - absl/debugging/internal/stack_consumption.o \ - absl/debugging/internal/vdso_support.o \ - absl/debugging/leak_check.o \ - absl/debugging/stacktrace.o \ - absl/debugging/symbolize.o \ - absl/numeric/int128.o \ - absl/profiling/internal/exponential_biased.o \ - absl/profiling/internal/periodic_sampler.o \ - absl/strings/ascii.o \ - absl/strings/charconv.o \ - absl/strings/cord_analysis.o \ - absl/strings/cord_buffer.o \ - absl/strings/cord.o \ - absl/strings/escaping.o \ - absl/strings/internal/charconv_bigint.o \ - absl/strings/internal/charconv_parse.o \ - absl/strings/internal/cord_internal.o \ - absl/strings/internal/cord_rep_btree_navigator.o \ - absl/strings/internal/cord_rep_btree_reader.o \ - absl/strings/internal/cord_rep_btree.o \ - absl/strings/internal/cord_rep_consume.o \ - absl/strings/internal/cord_rep_crc.o \ - absl/strings/internal/cord_rep_ring.o \ - absl/strings/internal/cordz_functions.o \ - absl/strings/internal/cordz_handle.o \ - absl/strings/internal/cordz_info.o \ - absl/strings/internal/cordz_sample_token.o \ - absl/strings/internal/escaping.o \ - absl/strings/internal/memutil.o \ - absl/strings/internal/ostringstream.o \ - absl/strings/internal/pow10_helper.o \ - absl/strings/internal/str_format/arg.o \ - absl/strings/internal/str_format/bind.o \ - absl/strings/internal/str_format/extension.o \ - absl/strings/internal/str_format/float_conversion.o \ - absl/strings/internal/str_format/output.o \ - absl/strings/internal/str_format/parser.o \ - absl/strings/internal/utf8.o \ - absl/strings/match.o \ - absl/strings/numbers.o \ - absl/strings/str_cat.o \ - absl/strings/str_replace.o \ - absl/strings/str_split.o \ - absl/strings/string_view.o \ - absl/strings/substitute.o \ - absl/synchronization/barrier.o \ - absl/synchronization/blocking_counter.o \ - absl/synchronization/internal/create_thread_identity.o \ - absl/synchronization/internal/graphcycles.o \ - absl/synchronization/internal/per_thread_sem.o \ - absl/synchronization/internal/waiter.o \ - absl/synchronization/mutex.o \ - absl/synchronization/notification.o \ - absl/time/civil_time.o \ - absl/time/clock.o \ - absl/time/duration.o \ - absl/time/format.o \ - absl/time/internal/cctz/src/civil_time_detail.o \ - absl/time/internal/cctz/src/time_zone_fixed.o \ - absl/time/internal/cctz/src/time_zone_format.o \ - absl/time/internal/cctz/src/time_zone_if.o \ - absl/time/internal/cctz/src/time_zone_impl.o \ - absl/time/internal/cctz/src/time_zone_info.o \ - absl/time/internal/cctz/src/time_zone_libc.o \ - absl/time/internal/cctz/src/time_zone_lookup.o \ - absl/time/internal/cctz/src/time_zone_posix.o \ - absl/time/internal/cctz/src/zone_info_source.o \ - absl/time/time.o \ - absl/types/bad_any_cast.o \ - absl/types/bad_optional_access.o \ - absl/types/bad_variant_access.o +CXX_STD = CXX17 -S2LIBS = $(ABSL_LIBS) \ - s2geography/linear-referencing.o \ +STATLIB = s2/libs2static.a + +S2LIBS = s2geography/linear-referencing.o \ s2geography/distance.o \ s2geography/accessors.o \ s2geography/accessors-geog.o \ @@ -218,15 +140,9 @@ $(SHLIB): $(STATLIB) $(STATLIB): $(S2LIBS) -$(S2LIBS): winlibs - #all: clean -winlibs: - mkdir -p ../inst - "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" "../tools/winlibs.R" $(VERSION) - clean: rm -f $(SHLIB) $(STATLIB) $(OBJECTS) $(S2LIBS) -.PHONY: all winlibs clean +.PHONY: all clean diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 24a5ac1b..6350151d 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1344,12 +1344,12 @@ BEGIN_RCPP END_RCPP } -RcppExport SEXP c_s2_geography_writer_new(SEXP, SEXP, SEXP, SEXP); -RcppExport SEXP c_s2_handle_geography(SEXP, SEXP); -RcppExport SEXP c_s2_handle_geography_tessellated(SEXP, SEXP); -RcppExport SEXP c_s2_projection_mercator(SEXP); -RcppExport SEXP c_s2_projection_orthographic(SEXP); -RcppExport SEXP c_s2_projection_plate_carree(SEXP); +RcppExport SEXP c_s2_geography_writer_new(void *, void *, void *, void *); +RcppExport SEXP c_s2_handle_geography(void *, void *); +RcppExport SEXP c_s2_handle_geography_tessellated(void *, void *); +RcppExport SEXP c_s2_projection_mercator(void *); +RcppExport SEXP c_s2_projection_orthographic(void *); +RcppExport SEXP c_s2_projection_plate_carree(void *); RcppExport SEXP c_s2_trans_s2_lnglat_new(void); RcppExport SEXP c_s2_trans_s2_point_new(void); diff --git a/src/absl/container/internal/raw_hash_set.cc b/src/absl/container/internal/raw_hash_set.cc deleted file mode 100644 index c63a2e02..00000000 --- a/src/absl/container/internal/raw_hash_set.cc +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2018 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. - -#include "absl/container/internal/raw_hash_set.h" - -#include -#include - -#include "absl/base/config.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN -namespace container_internal { - -// A single block of empty control bytes for tables without any slots allocated. -// This enables removing a branch in the hot path of find(). -alignas(16) ABSL_CONST_INIT ABSL_DLL const ctrl_t kEmptyGroup[16] = { - ctrl_t::kSentinel, ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty, - ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty, - ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty, - ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty, ctrl_t::kEmpty}; - -#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL -constexpr size_t Group::kWidth; -#endif - -// Returns "random" seed. -inline size_t RandomSeed() { -#ifdef ABSL_HAVE_THREAD_LOCAL - static thread_local size_t counter = 0; - size_t value = ++counter; -#else // ABSL_HAVE_THREAD_LOCAL - static std::atomic counter(0); - size_t value = counter.fetch_add(1, std::memory_order_relaxed); -#endif // ABSL_HAVE_THREAD_LOCAL - return value ^ static_cast(reinterpret_cast(&counter)); -} - -bool ShouldInsertBackwards(size_t hash, const ctrl_t* ctrl) { - // To avoid problems with weak hashes and single bit tests, we use % 13. - // TODO(kfm,sbenza): revisit after we do unconditional mixing - return (H1(hash, ctrl) ^ RandomSeed()) % 13 > 6; -} - -void ConvertDeletedToEmptyAndFullToDeleted(ctrl_t* ctrl, size_t capacity) { - assert(ctrl[capacity] == ctrl_t::kSentinel); - assert(IsValidCapacity(capacity)); - for (ctrl_t* pos = ctrl; pos < ctrl + capacity; pos += Group::kWidth) { - Group{pos}.ConvertSpecialToEmptyAndFullToDeleted(pos); - } - // Copy the cloned ctrl bytes. - std::memcpy(ctrl + capacity + 1, ctrl, NumClonedBytes()); - ctrl[capacity] = ctrl_t::kSentinel; -} -// Extern template instantiotion for inline function. -template FindInfo find_first_non_full(const ctrl_t*, size_t, size_t); - -} // namespace container_internal -ABSL_NAMESPACE_END -} // namespace absl diff --git a/src/absl/memory/memory.h b/src/absl/memory/memory.h deleted file mode 100644 index d6332606..00000000 --- a/src/absl/memory/memory.h +++ /dev/null @@ -1,699 +0,0 @@ -// 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. -// -// ----------------------------------------------------------------------------- -// File: memory.h -// ----------------------------------------------------------------------------- -// -// This header file contains utility functions for managing the creation and -// conversion of smart pointers. This file is an extension to the C++ -// standard library header file. - -#ifndef ABSL_MEMORY_MEMORY_H_ -#define ABSL_MEMORY_MEMORY_H_ - -#include -#include -#include -#include -#include -#include - -#include "absl/base/macros.h" -#include "absl/meta/type_traits.h" - -namespace absl { -ABSL_NAMESPACE_BEGIN - -// ----------------------------------------------------------------------------- -// Function Template: WrapUnique() -// ----------------------------------------------------------------------------- -// -// Adopts ownership from a raw pointer and transfers it to the returned -// `std::unique_ptr`, whose type is deduced. Because of this deduction, *do not* -// specify the template type `T` when calling `WrapUnique`. -// -// Example: -// X* NewX(int, int); -// auto x = WrapUnique(NewX(1, 2)); // 'x' is std::unique_ptr. -// -// Do not call WrapUnique with an explicit type, as in -// `WrapUnique(NewX(1, 2))`. The purpose of WrapUnique is to automatically -// deduce the pointer type. If you wish to make the type explicit, just use -// `std::unique_ptr` directly. -// -// auto x = std::unique_ptr(NewX(1, 2)); -// - or - -// std::unique_ptr x(NewX(1, 2)); -// -// While `absl::WrapUnique` is useful for capturing the output of a raw -// pointer factory, prefer 'absl::make_unique(args...)' over -// 'absl::WrapUnique(new T(args...))'. -// -// auto x = WrapUnique(new X(1, 2)); // works, but nonideal. -// auto x = make_unique(1, 2); // safer, standard, avoids raw 'new'. -// -// Note that `absl::WrapUnique(p)` is valid only if `delete p` is a valid -// expression. In particular, `absl::WrapUnique()` cannot wrap pointers to -// arrays, functions or void, and it must not be used to capture pointers -// obtained from array-new expressions (even though that would compile!). -template -std::unique_ptr WrapUnique(T* ptr) { - static_assert(!std::is_array::value, "array types are unsupported"); - static_assert(std::is_object::value, "non-object types are unsupported"); - return std::unique_ptr(ptr); -} - -namespace memory_internal { - -// Traits to select proper overload and return type for `absl::make_unique<>`. -template -struct MakeUniqueResult { - using scalar = std::unique_ptr; -}; -template -struct MakeUniqueResult { - using array = std::unique_ptr; -}; -template -struct MakeUniqueResult { - using invalid = void; -}; - -} // namespace memory_internal - -// gcc 4.8 has __cplusplus at 201301 but the libstdc++ shipped with it doesn't -// define make_unique. Other supported compilers either just define __cplusplus -// as 201103 but have make_unique (msvc), or have make_unique whenever -// __cplusplus > 201103 (clang). -#if (__cplusplus > 201103L || defined(_MSC_VER)) && \ - !(defined(__GLIBCXX__) && !defined(__cpp_lib_make_unique)) -using std::make_unique; -#else -// ----------------------------------------------------------------------------- -// Function Template: make_unique() -// ----------------------------------------------------------------------------- -// -// Creates a `std::unique_ptr<>`, while avoiding issues creating temporaries -// during the construction process. `absl::make_unique<>` also avoids redundant -// type declarations, by avoiding the need to explicitly use the `new` operator. -// -// This implementation of `absl::make_unique<>` is designed for C++11 code and -// will be replaced in C++14 by the equivalent `std::make_unique<>` abstraction. -// `absl::make_unique<>` is designed to be 100% compatible with -// `std::make_unique<>` so that the eventual migration will involve a simple -// rename operation. -// -// For more background on why `std::unique_ptr(new T(a,b))` is problematic, -// see Herb Sutter's explanation on -// (Exception-Safe Function Calls)[https://herbsutter.com/gotw/_102/]. -// (In general, reviewers should treat `new T(a,b)` with scrutiny.) -// -// Example usage: -// -// auto p = make_unique(args...); // 'p' is a std::unique_ptr -// auto pa = make_unique(5); // 'pa' is a std::unique_ptr -// -// Three overloads of `absl::make_unique` are required: -// -// - For non-array T: -// -// Allocates a T with `new T(std::forward args...)`, -// forwarding all `args` to T's constructor. -// Returns a `std::unique_ptr` owning that object. -// -// - For an array of unknown bounds T[]: -// -// `absl::make_unique<>` will allocate an array T of type U[] with -// `new U[n]()` and return a `std::unique_ptr` owning that array. -// -// Note that 'U[n]()' is different from 'U[n]', and elements will be -// value-initialized. Note as well that `std::unique_ptr` will perform its -// own destruction of the array elements upon leaving scope, even though -// the array [] does not have a default destructor. -// -// NOTE: an array of unknown bounds T[] may still be (and often will be) -// initialized to have a size, and will still use this overload. E.g: -// -// auto my_array = absl::make_unique(10); -// -// - For an array of known bounds T[N]: -// -// `absl::make_unique<>` is deleted (like with `std::make_unique<>`) as -// this overload is not useful. -// -// NOTE: an array of known bounds T[N] is not considered a useful -// construction, and may cause undefined behavior in templates. E.g: -// -// auto my_array = absl::make_unique(); -// -// In those cases, of course, you can still use the overload above and -// simply initialize it to its desired size: -// -// auto my_array = absl::make_unique(10); - -// `absl::make_unique` overload for non-array types. -template -typename memory_internal::MakeUniqueResult::scalar make_unique( - Args&&... args) { - return std::unique_ptr(new T(std::forward(args)...)); -} - -// `absl::make_unique` overload for an array T[] of unknown bounds. -// The array allocation needs to use the `new T[size]` form and cannot take -// element constructor arguments. The `std::unique_ptr` will manage destructing -// these array elements. -template -typename memory_internal::MakeUniqueResult::array make_unique(size_t n) { - return std::unique_ptr(new typename absl::remove_extent_t[n]()); -} - -// `absl::make_unique` overload for an array T[N] of known bounds. -// This construction will be rejected. -template -typename memory_internal::MakeUniqueResult::invalid make_unique( - Args&&... /* args */) = delete; -#endif - -// ----------------------------------------------------------------------------- -// Function Template: RawPtr() -// ----------------------------------------------------------------------------- -// -// Extracts the raw pointer from a pointer-like value `ptr`. `absl::RawPtr` is -// useful within templates that need to handle a complement of raw pointers, -// `std::nullptr_t`, and smart pointers. -template -auto RawPtr(T&& ptr) -> decltype(std::addressof(*ptr)) { - // ptr is a forwarding reference to support Ts with non-const operators. - return (ptr != nullptr) ? std::addressof(*ptr) : nullptr; -} -inline std::nullptr_t RawPtr(std::nullptr_t) { return nullptr; } - -// ----------------------------------------------------------------------------- -// Function Template: ShareUniquePtr() -// ----------------------------------------------------------------------------- -// -// Adopts a `std::unique_ptr` rvalue and returns a `std::shared_ptr` of deduced -// type. Ownership (if any) of the held value is transferred to the returned -// shared pointer. -// -// Example: -// -// auto up = absl::make_unique(10); -// auto sp = absl::ShareUniquePtr(std::move(up)); // shared_ptr -// CHECK_EQ(*sp, 10); -// CHECK(up == nullptr); -// -// Note that this conversion is correct even when T is an array type, and more -// generally it works for *any* deleter of the `unique_ptr` (single-object -// deleter, array deleter, or any custom deleter), since the deleter is adopted -// by the shared pointer as well. The deleter is copied (unless it is a -// reference). -// -// Implements the resolution of [LWG 2415](http://wg21.link/lwg2415), by which a -// null shared pointer does not attempt to call the deleter. -template -std::shared_ptr ShareUniquePtr(std::unique_ptr&& ptr) { - return ptr ? std::shared_ptr(std::move(ptr)) : std::shared_ptr(); -} - -// ----------------------------------------------------------------------------- -// Function Template: WeakenPtr() -// ----------------------------------------------------------------------------- -// -// Creates a weak pointer associated with a given shared pointer. The returned -// value is a `std::weak_ptr` of deduced type. -// -// Example: -// -// auto sp = std::make_shared(10); -// auto wp = absl::WeakenPtr(sp); -// CHECK_EQ(sp.get(), wp.lock().get()); -// sp.reset(); -// CHECK(wp.lock() == nullptr); -// -template -std::weak_ptr WeakenPtr(const std::shared_ptr& ptr) { - return std::weak_ptr(ptr); -} - -namespace memory_internal { - -// ExtractOr::type evaluates to E if possible. Otherwise, D. -template