This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 6a3fb97a9a ARROW-17193: [C++] Add support for finding system Abseil 
(#13731)
6a3fb97a9a is described below

commit 6a3fb97a9a5ebd0316af050fec5cb4157d35f296
Author: Sutou Kouhei <[email protected]>
AuthorDate: Fri Aug 5 13:53:17 2022 +0900

    ARROW-17193: [C++] Add support for finding system Abseil (#13731)
    
    Authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Sutou Kouhei <[email protected]>
---
 ci/docker/debian-10-cpp.dockerfile          |    3 +-
 ci/docker/debian-11-cpp.dockerfile          |    3 +-
 ci/docker/fedora-35-cpp.dockerfile          |    3 +-
 ci/docker/ubuntu-20.04-cpp.dockerfile       |    4 +-
 ci/docker/ubuntu-22.04-cpp.dockerfile       |    4 +-
 ci/scripts/cpp_build.sh                     |    1 +
 cpp/cmake_modules/ThirdpartyToolchain.cmake | 1899 ++++++++++++++-------------
 7 files changed, 973 insertions(+), 944 deletions(-)

diff --git a/ci/docker/debian-10-cpp.dockerfile 
b/ci/docker/debian-10-cpp.dockerfile
index aae789164b..a0872928c5 100644
--- a/ci/docker/debian-10-cpp.dockerfile
+++ b/ci/docker/debian-10-cpp.dockerfile
@@ -76,7 +76,8 @@ RUN apt-get update -y -q && \
 COPY ci/scripts/install_minio.sh /arrow/ci/scripts/
 RUN /arrow/ci/scripts/install_minio.sh latest /usr/local
 
-ENV ARROW_BUILD_TESTS=ON \
+ENV absl_SOURCE=BUNDLED \
+    ARROW_BUILD_TESTS=ON \
     ARROW_DATASET=ON \
     ARROW_DEPENDENCY_SOURCE=SYSTEM \
     ARROW_FLIGHT=ON \
diff --git a/ci/docker/debian-11-cpp.dockerfile 
b/ci/docker/debian-11-cpp.dockerfile
index 790a22dcd8..a403df2368 100644
--- a/ci/docker/debian-11-cpp.dockerfile
+++ b/ci/docker/debian-11-cpp.dockerfile
@@ -78,7 +78,8 @@ RUN /arrow/ci/scripts/install_minio.sh latest /usr/local
 COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/
 RUN /arrow/ci/scripts/install_gcs_testbench.sh default
 
-ENV ARROW_BUILD_TESTS=ON \
+ENV absl_SOURCE=BUNDLED \
+    ARROW_BUILD_TESTS=ON \
     ARROW_DATASET=ON \
     ARROW_DEPENDENCY_SOURCE=SYSTEM \
     ARROW_FLIGHT=ON \
diff --git a/ci/docker/fedora-35-cpp.dockerfile 
b/ci/docker/fedora-35-cpp.dockerfile
index cbe9ee7539..ce9c8857c8 100644
--- a/ci/docker/fedora-35-cpp.dockerfile
+++ b/ci/docker/fedora-35-cpp.dockerfile
@@ -71,7 +71,8 @@ RUN /arrow/ci/scripts/install_minio.sh latest /usr/local
 COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/
 RUN /arrow/ci/scripts/install_gcs_testbench.sh default
 
-ENV ARROW_BUILD_TESTS=ON \
+ENV absl_SOURCE=BUNDLED \
+    ARROW_BUILD_TESTS=ON \
     ARROW_DEPENDENCY_SOURCE=SYSTEM \
     ARROW_DATASET=ON \
     ARROW_FLIGHT=ON \
diff --git a/ci/docker/ubuntu-20.04-cpp.dockerfile 
b/ci/docker/ubuntu-20.04-cpp.dockerfile
index 24d5f8e5da..dd36aff84c 100644
--- a/ci/docker/ubuntu-20.04-cpp.dockerfile
+++ b/ci/docker/ubuntu-20.04-cpp.dockerfile
@@ -119,13 +119,15 @@ RUN /arrow/ci/scripts/install_ceph.sh
 # Prioritize system packages and local installation
 # The following dependencies will be downloaded due to missing/invalid packages
 # provided by the distribution:
+# - Abseil is not packaged
 # - libc-ares-dev does not install CMake config files
 # - flatbuffer is not packaged
 # - libgtest-dev only provide sources
 # - libprotobuf-dev only provide sources
 # ARROW-17051: this build uses static Protobuf, so we must also use
 # static Arrow to run Flight/Flight SQL tests
-ENV ARROW_BUILD_STATIC=ON \
+ENV absl_SOURCE=BUNDLED \
+    ARROW_BUILD_STATIC=ON \
     ARROW_BUILD_TESTS=ON \
     ARROW_DEPENDENCY_SOURCE=SYSTEM \
     ARROW_DATASET=ON \
diff --git a/ci/docker/ubuntu-22.04-cpp.dockerfile 
b/ci/docker/ubuntu-22.04-cpp.dockerfile
index c2019df153..05aca53151 100644
--- a/ci/docker/ubuntu-22.04-cpp.dockerfile
+++ b/ci/docker/ubuntu-22.04-cpp.dockerfile
@@ -146,13 +146,15 @@ RUN /arrow/ci/scripts/install_gcs_testbench.sh default
 # Prioritize system packages and local installation
 # The following dependencies will be downloaded due to missing/invalid packages
 # provided by the distribution:
+# - Abseil is old
 # - libc-ares-dev does not install CMake config files
 # - flatbuffer is not packaged
 # - libgtest-dev only provide sources
 # - libprotobuf-dev only provide sources
 # ARROW-17051: this build uses static Protobuf, so we must also use
 # static Arrow to run Flight/Flight SQL tests
-ENV ARROW_BUILD_STATIC=ON \
+ENV absl_SOURCE=BUNDLED \
+    ARROW_BUILD_STATIC=ON \
     ARROW_BUILD_TESTS=ON \
     ARROW_DEPENDENCY_SOURCE=SYSTEM \
     ARROW_DATASET=ON \
diff --git a/ci/scripts/cpp_build.sh b/ci/scripts/cpp_build.sh
index bac8acaade..738f3d2647 100755
--- a/ci/scripts/cpp_build.sh
+++ b/ci/scripts/cpp_build.sh
@@ -69,6 +69,7 @@ mkdir -p ${build_dir}
 pushd ${build_dir}
 
 cmake \
+  -Dabsl_SOURCE=${absl_SOURCE:-} \
   -DARROW_BOOST_USE_SHARED=${ARROW_BOOST_USE_SHARED:-ON} \
   -DARROW_BUILD_BENCHMARKS_REFERENCE=${ARROW_BUILD_BENCHMARKS:-OFF} \
   -DARROW_BUILD_BENCHMARKS=${ARROW_BUILD_BENCHMARKS:-OFF} \
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake 
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 5d1da18b77..9fd5a5df8a 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -50,6 +50,7 @@ endif()
 # Resolve the dependencies
 
 set(ARROW_THIRDPARTY_DEPENDENCIES
+    absl
     AWSSDK
     benchmark
     Boost
@@ -152,7 +153,9 @@ foreach(DEPENDENCY ${ARROW_THIRDPARTY_DEPENDENCIES})
 endforeach()
 
 macro(build_dependency DEPENDENCY_NAME)
-  if("${DEPENDENCY_NAME}" STREQUAL "AWSSDK")
+  if("${DEPENDENCY_NAME}" STREQUAL "absl")
+    build_absl()
+  elseif("${DEPENDENCY_NAME}" STREQUAL "AWSSDK")
     build_awssdk()
   elseif("${DEPENDENCY_NAME}" STREQUAL "benchmark")
     build_benchmark()
@@ -2656,948 +2659,966 @@ endmacro()
 # ----------------------------------------------------------------------
 # Dependencies for Arrow Flight RPC
 
-macro(resolve_dependency_absl)
-  # Choose one of built absl::* targets
-  if(NOT TARGET absl::algorithm)
-    message(STATUS "Building Abseil-cpp from source")
-    set(ABSL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/absl_ep-install")
-    set(ABSL_INCLUDE_DIR "${ABSL_PREFIX}/include")
-    set(ABSL_CMAKE_ARGS
-        "${EP_COMMON_CMAKE_ARGS}" -DABSL_RUN_TESTS=OFF 
-DCMAKE_INSTALL_LIBDIR=lib
-        "-DCMAKE_INSTALL_PREFIX=${ABSL_PREFIX}")
-    set(ABSL_BUILD_BYPRODUCTS)
-    set(ABSL_LIBRARIES)
-
-    # Abseil produces the following libraries, each is fairly small, but there
-    # are (as you can see), many of them. We need to add the libraries first,
-    # and then describe how they depend on each other. The list can be
-    # refreshed using:
-    #   ls -1 $PREFIX/lib/libabsl_*.a | sed -e 's/.*libabsl_//' -e 's/.a$//'
-    set(_ABSL_LIBS
-        bad_any_cast_impl
-        bad_optional_access
-        bad_variant_access
-        base
-        city
-        civil_time
-        cord
-        cord_internal
-        cordz_functions
-        cordz_handle
-        cordz_info
-        cordz_sample_token
-        debugging_internal
-        demangle_internal
-        examine_stack
-        exponential_biased
-        failure_signal_handler
-        flags
-        flags_commandlineflag
-        flags_commandlineflag_internal
-        flags_config
-        flags_internal
-        flags_marshalling
-        flags_parse
-        flags_private_handle_accessor
-        flags_program_name
-        flags_reflection
-        flags_usage
-        flags_usage_internal
-        graphcycles_internal
-        hash
-        hashtablez_sampler
-        int128
-        leak_check
-        leak_check_disable
-        log_severity
-        low_level_hash
-        malloc_internal
-        periodic_sampler
-        random_distributions
-        random_internal_distribution_test_util
-        random_internal_platform
-        random_internal_pool_urbg
-        random_internal_randen
-        random_internal_randen_hwaes
-        random_internal_randen_hwaes_impl
-        random_internal_randen_slow
-        random_internal_seed_material
-        random_seed_gen_exception
-        random_seed_sequences
-        raw_hash_set
-        raw_logging_internal
-        scoped_set_env
-        spinlock_wait
-        stacktrace
-        status
-        statusor
-        str_format_internal
-        strerror
-        strings
-        strings_internal
-        symbolize
-        synchronization
-        throw_delegate
-        time
-        time_zone
-        wyhash)
-    # Abseil creates a number of header-only targets, which are needed to 
resolve dependencies.
-    # The list can be refreshed using:
-    #   comm -13 <(ls -l $PREFIX/lib/libabsl_*.a | sed -e 's/.*libabsl_//' -e 
's/.a$//' | sort -u) \
-    #            <(ls -1 $PREFIX/lib/pkgconfig/absl_*.pc | sed -e 
's/.*absl_//' -e 's/.pc$//' | sort -u)
-    set(_ABSL_INTERFACE_LIBS
-        algorithm
-        algorithm_container
-        any
-        atomic_hook
-        bad_any_cast
-        base_internal
-        bind_front
-        bits
-        btree
-        cleanup
-        cleanup_internal
-        compare
-        compressed_tuple
-        config
-        container_common
-        container_memory
-        cordz_statistics
-        cordz_update_scope
-        cordz_update_tracker
-        core_headers
-        counting_allocator
-        debugging
-        dynamic_annotations
-        endian
-        errno_saver
-        fast_type_id
-        fixed_array
-        flags_path_util
-        flat_hash_map
-        flat_hash_set
-        function_ref
-        hash_function_defaults
-        hash_policy_traits
-        hashtable_debug
-        hashtable_debug_hooks
-        have_sse
-        inlined_vector
-        inlined_vector_internal
-        kernel_timeout_internal
-        layout
-        memory
-        meta
-        node_hash_map
-        node_hash_policy
-        node_hash_set
-        numeric
-        numeric_representation
-        optional
-        pretty_function
-        random_bit_gen_ref
-        random_internal_distribution_caller
-        random_internal_fast_uniform_bits
-        random_internal_fastmath
-        random_internal_generate_real
-        random_internal_iostream_state_saver
-        random_internal_mock_helpers
-        random_internal_nonsecure_base
-        random_internal_pcg_engine
-        random_internal_randen_engine
-        random_internal_salted_seed_seq
-        random_internal_traits
-        random_internal_uniform_helper
-        random_internal_wide_multiply
-        random_random
-        raw_hash_map
-        sample_recorder
-        span
-        str_format
-        type_traits
-        utility
-        variant)
-
-    foreach(_ABSL_LIB ${_ABSL_LIBS})
-      set(_ABSL_STATIC_LIBRARY
-          
"${ABSL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}absl_${_ABSL_LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}"
-      )
-      add_library(absl::${_ABSL_LIB} STATIC IMPORTED)
-      set_target_properties(absl::${_ABSL_LIB}
-                            PROPERTIES IMPORTED_LOCATION 
${_ABSL_STATIC_LIBRARY}
-                                       INTERFACE_INCLUDE_DIRECTORIES
-                                       "${ABSL_INCLUDE_DIR}")
-      list(APPEND ABSL_BUILD_BYPRODUCTS ${_ABSL_STATIC_LIBRARY})
-    endforeach()
-    foreach(_ABSL_LIB ${_ABSL_INTERFACE_LIBS})
-      add_library(absl::${_ABSL_LIB} INTERFACE IMPORTED)
-      set_target_properties(absl::${_ABSL_LIB} PROPERTIES 
INTERFACE_INCLUDE_DIRECTORIES
-                                                          
"${ABSL_INCLUDE_DIR}")
-    endforeach()
+macro(ensure_absl)
+  if(NOT absl_FOUND)
+    if(${absl_SOURCE} STREQUAL "AUTO")
+      # We can't use resolve_dependency(absl 20211102) to use Abseil
+      # 20211102 or later because Abseil's CMake package uses "EXACT"
+      # version match strategy. Our CMake configuration will work with
+      # Abseil LTS 20211102 or later. So we want to accept Abseil LTS
+      # 20211102 or later. We need to update
+      # ARROW_ABSL_REQUIRED_LTS_VERSIONS list when new Abseil LTS is
+      # released.
+      set(ARROW_ABSL_REQUIRED_LTS_VERSIONS 20211102 20220623)
+      foreach(_VERSION ${ARROW_ABSL_REQUIRED_LTS_VERSIONS})
+        find_package(absl ${_VERSION})
+        if(absl_FOUND)
+          break()
+        endif()
+      endforeach()
+      # If we can't find Abseil LTS 20211102 or later, we use bundled
+      # Abseil.
+      if(NOT absl_FOUND)
+        set(absl_SOURCE "BUNDLED")
+      endif()
+    endif()
+    resolve_dependency(absl)
+  endif()
+endmacro()
 
-    # Extracted the dependency information using the Abseil pkg-config files:
-    #   grep Requires $PREFIX/lib/pkgconfig/absl_*.pc | \
-    #   sed -e 's;.*/absl_;set_property(TARGET absl::;' \
-    #       -e 's/.pc:Requires:/ PROPERTY INTERFACE_LINK_LIBRARIES /' \
-    #       -E -e 's/ = 20[0-9]{6},?//g' \
-    #       -e 's/absl_/absl::/g' \
-    #       -e 's/$/)/'  | \
-    #   grep -v 'INTERFACE_LINK_LIBRARIES[ ]*)'
-    set_property(TARGET absl::algorithm PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
-    set_property(TARGET absl::algorithm_container
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::algorithm 
absl::core_headers
-                          absl::meta)
-    set_property(TARGET absl::any
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bad_any_cast
-                          absl::config
-                          absl::core_headers
-                          absl::fast_type_id
-                          absl::type_traits
-                          absl::utility)
-    set_property(TARGET absl::atomic_hook PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
-                                                   absl::core_headers)
-    set_property(TARGET absl::bad_any_cast PROPERTY INTERFACE_LINK_LIBRARIES
-                                                    absl::bad_any_cast_impl 
absl::config)
-    set_property(TARGET absl::bad_any_cast_impl
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::bad_optional_access
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::bad_variant_access
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::base
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::atomic_hook
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::dynamic_annotations
-                          absl::log_severity
-                          absl::raw_logging_internal
-                          absl::spinlock_wait
-                          absl::type_traits)
-    set_property(TARGET absl::base_internal PROPERTY INTERFACE_LINK_LIBRARIES
-                                                     absl::config 
absl::type_traits)
-    set_property(TARGET absl::bind_front
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal
-                          absl::compressed_tuple)
-    set_property(TARGET absl::bits PROPERTY INTERFACE_LINK_LIBRARIES 
absl::core_headers)
-    set_property(TARGET absl::btree
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::container_common
-                          absl::compare
-                          absl::compressed_tuple
-                          absl::container_memory
-                          absl::cord
-                          absl::core_headers
-                          absl::layout
-                          absl::memory
-                          absl::strings
-                          absl::throw_delegate
-                          absl::type_traits
-                          absl::utility)
-    set_property(TARGET absl::city PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
-                                            absl::core_headers absl::endian)
-    set_property(TARGET absl::cleanup
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::cleanup_internal 
absl::config
-                          absl::core_headers)
-    set_property(TARGET absl::cleanup_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::core_headers
-                          absl::utility)
-    set_property(TARGET absl::compare PROPERTY INTERFACE_LINK_LIBRARIES
-                                               absl::core_headers 
absl::type_traits)
-    set_property(TARGET absl::compressed_tuple PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                        absl::utility)
-    set_property(TARGET absl::container_common PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                        absl::type_traits)
-    set_property(TARGET absl::container_memory
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::memory
-                          absl::type_traits
-                          absl::utility)
-    set_property(TARGET absl::cord
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::config
-                          absl::cord_internal
-                          absl::cordz_functions
-                          absl::cordz_info
-                          absl::cordz_update_scope
-                          absl::cordz_update_tracker
-                          absl::core_headers
-                          absl::endian
-                          absl::fixed_array
-                          absl::function_ref
-                          absl::inlined_vector
-                          absl::optional
-                          absl::raw_logging_internal
-                          absl::strings
-                          absl::type_traits)
-    set_property(TARGET absl::cord_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base_internal
-                          absl::compressed_tuple
-                          absl::config
-                          absl::core_headers
-                          absl::endian
-                          absl::inlined_vector
-                          absl::layout
-                          absl::raw_logging_internal
-                          absl::strings
-                          absl::throw_delegate
-                          absl::type_traits)
-    set_property(TARGET absl::cordz_functions
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::exponential_biased
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::cordz_handle
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::config
-                          absl::raw_logging_internal
-                          absl::synchronization)
-    set_property(TARGET absl::cordz_info
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::config
-                          absl::cord_internal
-                          absl::cordz_functions
-                          absl::cordz_handle
-                          absl::cordz_statistics
-                          absl::cordz_update_tracker
-                          absl::core_headers
-                          absl::inlined_vector
-                          absl::span
-                          absl::raw_logging_internal
-                          absl::stacktrace
-                          absl::synchronization)
-    set_property(TARGET absl::cordz_sample_token
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::cordz_handle
-                          absl::cordz_info)
-    set_property(TARGET absl::cordz_statistics
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::cordz_update_tracker
-                          absl::synchronization)
-    set_property(TARGET absl::cordz_update_scope
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::cord_internal
-                          absl::cordz_info
-                          absl::cordz_update_tracker
-                          absl::core_headers)
-    set_property(TARGET absl::cordz_update_tracker PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                            absl::config)
-    set_property(TARGET absl::core_headers PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
-    set_property(TARGET absl::counting_allocator PROPERTY 
INTERFACE_LINK_LIBRARIES
+macro(build_absl)
+  message(STATUS "Building Abseil-cpp from source")
+  set(absl_FOUND TRUE)
+  set(absl_VERSION ${ARROW_ABSL_BUILD_VERSION})
+  set(ABSL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/absl_ep-install")
+  set(ABSL_INCLUDE_DIR "${ABSL_PREFIX}/include")
+  set(ABSL_CMAKE_ARGS "${EP_COMMON_CMAKE_ARGS}" -DABSL_RUN_TESTS=OFF
+                      -DCMAKE_INSTALL_LIBDIR=lib 
"-DCMAKE_INSTALL_PREFIX=${ABSL_PREFIX}")
+  set(ABSL_BUILD_BYPRODUCTS)
+  set(ABSL_LIBRARIES)
+
+  # Abseil produces the following libraries, each is fairly small, but there
+  # are (as you can see), many of them. We need to add the libraries first,
+  # and then describe how they depend on each other. The list can be
+  # refreshed using:
+  #   ls -1 $PREFIX/lib/libabsl_*.a | sed -e 's/.*libabsl_//' -e 's/.a$//'
+  set(_ABSL_LIBS
+      bad_any_cast_impl
+      bad_optional_access
+      bad_variant_access
+      base
+      city
+      civil_time
+      cord
+      cord_internal
+      cordz_functions
+      cordz_handle
+      cordz_info
+      cordz_sample_token
+      debugging_internal
+      demangle_internal
+      examine_stack
+      exponential_biased
+      failure_signal_handler
+      flags
+      flags_commandlineflag
+      flags_commandlineflag_internal
+      flags_config
+      flags_internal
+      flags_marshalling
+      flags_parse
+      flags_private_handle_accessor
+      flags_program_name
+      flags_reflection
+      flags_usage
+      flags_usage_internal
+      graphcycles_internal
+      hash
+      hashtablez_sampler
+      int128
+      leak_check
+      leak_check_disable
+      log_severity
+      low_level_hash
+      malloc_internal
+      periodic_sampler
+      random_distributions
+      random_internal_distribution_test_util
+      random_internal_platform
+      random_internal_pool_urbg
+      random_internal_randen
+      random_internal_randen_hwaes
+      random_internal_randen_hwaes_impl
+      random_internal_randen_slow
+      random_internal_seed_material
+      random_seed_gen_exception
+      random_seed_sequences
+      raw_hash_set
+      raw_logging_internal
+      scoped_set_env
+      spinlock_wait
+      stacktrace
+      status
+      statusor
+      str_format_internal
+      strerror
+      strings
+      strings_internal
+      symbolize
+      synchronization
+      throw_delegate
+      time
+      time_zone
+      wyhash)
+  # Abseil creates a number of header-only targets, which are needed to 
resolve dependencies.
+  # The list can be refreshed using:
+  #   comm -13 <(ls -l $PREFIX/lib/libabsl_*.a | sed -e 's/.*libabsl_//' -e 
's/.a$//' | sort -u) \
+  #            <(ls -1 $PREFIX/lib/pkgconfig/absl_*.pc | sed -e 's/.*absl_//' 
-e 's/.pc$//' | sort -u)
+  set(_ABSL_INTERFACE_LIBS
+      algorithm
+      algorithm_container
+      any
+      atomic_hook
+      bad_any_cast
+      base_internal
+      bind_front
+      bits
+      btree
+      cleanup
+      cleanup_internal
+      compare
+      compressed_tuple
+      config
+      container_common
+      container_memory
+      cordz_statistics
+      cordz_update_scope
+      cordz_update_tracker
+      core_headers
+      counting_allocator
+      debugging
+      dynamic_annotations
+      endian
+      errno_saver
+      fast_type_id
+      fixed_array
+      flags_path_util
+      flat_hash_map
+      flat_hash_set
+      function_ref
+      hash_function_defaults
+      hash_policy_traits
+      hashtable_debug
+      hashtable_debug_hooks
+      have_sse
+      inlined_vector
+      inlined_vector_internal
+      kernel_timeout_internal
+      layout
+      memory
+      meta
+      node_hash_map
+      node_hash_policy
+      node_hash_set
+      numeric
+      numeric_representation
+      optional
+      pretty_function
+      random_bit_gen_ref
+      random_internal_distribution_caller
+      random_internal_fast_uniform_bits
+      random_internal_fastmath
+      random_internal_generate_real
+      random_internal_iostream_state_saver
+      random_internal_mock_helpers
+      random_internal_nonsecure_base
+      random_internal_pcg_engine
+      random_internal_randen_engine
+      random_internal_salted_seed_seq
+      random_internal_traits
+      random_internal_uniform_helper
+      random_internal_wide_multiply
+      random_random
+      raw_hash_map
+      sample_recorder
+      span
+      str_format
+      type_traits
+      utility
+      variant)
+
+  foreach(_ABSL_LIB ${_ABSL_LIBS})
+    set(_ABSL_STATIC_LIBRARY
+        
"${ABSL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}absl_${_ABSL_LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}"
+    )
+    add_library(absl::${_ABSL_LIB} STATIC IMPORTED)
+    set_target_properties(absl::${_ABSL_LIB}
+                          PROPERTIES IMPORTED_LOCATION ${_ABSL_STATIC_LIBRARY}
+                                     INTERFACE_INCLUDE_DIRECTORIES 
"${ABSL_INCLUDE_DIR}")
+    list(APPEND ABSL_BUILD_BYPRODUCTS ${_ABSL_STATIC_LIBRARY})
+  endforeach()
+  foreach(_ABSL_LIB ${_ABSL_INTERFACE_LIBS})
+    add_library(absl::${_ABSL_LIB} INTERFACE IMPORTED)
+    set_target_properties(absl::${_ABSL_LIB} PROPERTIES 
INTERFACE_INCLUDE_DIRECTORIES
+                                                        "${ABSL_INCLUDE_DIR}")
+  endforeach()
+
+  # Extracted the dependency information using the Abseil pkg-config files:
+  #   grep Requires $PREFIX/lib/pkgconfig/absl_*.pc | \
+  #   sed -e 's;.*/absl_;set_property(TARGET absl::;' \
+  #       -e 's/.pc:Requires:/ PROPERTY INTERFACE_LINK_LIBRARIES /' \
+  #       -E -e 's/ = 20[0-9]{6},?//g' \
+  #       -e 's/absl_/absl::/g' \
+  #       -e 's/$/)/'  | \
+  #   grep -v 'INTERFACE_LINK_LIBRARIES[ ]*)'
+  set_property(TARGET absl::algorithm PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
+  set_property(TARGET absl::algorithm_container
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::algorithm 
absl::core_headers
+                        absl::meta)
+  set_property(TARGET absl::any
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bad_any_cast
+                        absl::config
+                        absl::core_headers
+                        absl::fast_type_id
+                        absl::type_traits
+                        absl::utility)
+  set_property(TARGET absl::atomic_hook PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                                 absl::core_headers)
+  set_property(TARGET absl::bad_any_cast PROPERTY INTERFACE_LINK_LIBRARIES
+                                                  absl::bad_any_cast_impl 
absl::config)
+  set_property(TARGET absl::bad_any_cast_impl
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::raw_logging_internal)
+  set_property(TARGET absl::bad_optional_access
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::raw_logging_internal)
+  set_property(TARGET absl::bad_variant_access
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::raw_logging_internal)
+  set_property(TARGET absl::base
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::atomic_hook
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::dynamic_annotations
+                        absl::log_severity
+                        absl::raw_logging_internal
+                        absl::spinlock_wait
+                        absl::type_traits)
+  set_property(TARGET absl::base_internal PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                                   absl::type_traits)
+  set_property(TARGET absl::bind_front
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal
+                        absl::compressed_tuple)
+  set_property(TARGET absl::bits PROPERTY INTERFACE_LINK_LIBRARIES 
absl::core_headers)
+  set_property(TARGET absl::btree
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::container_common
+                        absl::compare
+                        absl::compressed_tuple
+                        absl::container_memory
+                        absl::cord
+                        absl::core_headers
+                        absl::layout
+                        absl::memory
+                        absl::strings
+                        absl::throw_delegate
+                        absl::type_traits
+                        absl::utility)
+  set_property(TARGET absl::city PROPERTY INTERFACE_LINK_LIBRARIES absl::config
+                                          absl::core_headers absl::endian)
+  set_property(TARGET absl::cleanup
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::cleanup_internal 
absl::config
+                        absl::core_headers)
+  set_property(TARGET absl::cleanup_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::core_headers
+                        absl::utility)
+  set_property(TARGET absl::compare PROPERTY INTERFACE_LINK_LIBRARIES 
absl::core_headers
+                                             absl::type_traits)
+  set_property(TARGET absl::compressed_tuple PROPERTY INTERFACE_LINK_LIBRARIES
+                                                      absl::utility)
+  set_property(TARGET absl::container_common PROPERTY INTERFACE_LINK_LIBRARIES
+                                                      absl::type_traits)
+  set_property(TARGET absl::container_memory
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::memory
+                        absl::type_traits
+                        absl::utility)
+  set_property(TARGET absl::cord
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::config
+                        absl::cord_internal
+                        absl::cordz_functions
+                        absl::cordz_info
+                        absl::cordz_update_scope
+                        absl::cordz_update_tracker
+                        absl::core_headers
+                        absl::endian
+                        absl::fixed_array
+                        absl::function_ref
+                        absl::inlined_vector
+                        absl::optional
+                        absl::raw_logging_internal
+                        absl::strings
+                        absl::type_traits)
+  set_property(TARGET absl::cord_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base_internal
+                        absl::compressed_tuple
+                        absl::config
+                        absl::core_headers
+                        absl::endian
+                        absl::inlined_vector
+                        absl::layout
+                        absl::raw_logging_internal
+                        absl::strings
+                        absl::throw_delegate
+                        absl::type_traits)
+  set_property(TARGET absl::cordz_functions
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::exponential_biased
+                        absl::raw_logging_internal)
+  set_property(TARGET absl::cordz_handle
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::config
+                        absl::raw_logging_internal
+                        absl::synchronization)
+  set_property(TARGET absl::cordz_info
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::config
+                        absl::cord_internal
+                        absl::cordz_functions
+                        absl::cordz_handle
+                        absl::cordz_statistics
+                        absl::cordz_update_tracker
+                        absl::core_headers
+                        absl::inlined_vector
+                        absl::span
+                        absl::raw_logging_internal
+                        absl::stacktrace
+                        absl::synchronization)
+  set_property(TARGET absl::cordz_sample_token
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::cordz_handle
+                        absl::cordz_info)
+  set_property(TARGET absl::cordz_statistics
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::cordz_update_tracker
+                        absl::synchronization)
+  set_property(TARGET absl::cordz_update_scope
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::cord_internal
+                        absl::cordz_info
+                        absl::cordz_update_tracker
+                        absl::core_headers)
+  set_property(TARGET absl::cordz_update_tracker PROPERTY 
INTERFACE_LINK_LIBRARIES
                                                           absl::config)
-    set_property(TARGET absl::debugging PROPERTY INTERFACE_LINK_LIBRARIES
-                                                 absl::stacktrace 
absl::leak_check)
-    set_property(TARGET absl::debugging_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::core_headers
-                          absl::config
-                          absl::dynamic_annotations
-                          absl::errno_saver
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::demangle_internal PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                         absl::base 
absl::core_headers)
-    set_property(TARGET absl::dynamic_annotations PROPERTY 
INTERFACE_LINK_LIBRARIES
+  set_property(TARGET absl::core_headers PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
+  set_property(TARGET absl::counting_allocator PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                        absl::config)
+  set_property(TARGET absl::debugging PROPERTY INTERFACE_LINK_LIBRARIES 
absl::stacktrace
+                                               absl::leak_check)
+  set_property(TARGET absl::debugging_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::core_headers
+                        absl::config
+                        absl::dynamic_annotations
+                        absl::errno_saver
+                        absl::raw_logging_internal)
+  set_property(TARGET absl::demangle_internal PROPERTY INTERFACE_LINK_LIBRARIES
+                                                       absl::base 
absl::core_headers)
+  set_property(TARGET absl::dynamic_annotations PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                         absl::config)
+  set_property(TARGET absl::endian PROPERTY INTERFACE_LINK_LIBRARIES absl::base
+                                            absl::config absl::core_headers)
+  set_property(TARGET absl::errno_saver PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
+  set_property(TARGET absl::examine_stack
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::stacktrace
+                        absl::symbolize
+                        absl::config
+                        absl::core_headers
+                        absl::raw_logging_internal)
+  set_property(TARGET absl::exponential_biased PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                        absl::config 
absl::core_headers)
+  set_property(TARGET absl::failure_signal_handler
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::examine_stack
+                        absl::stacktrace
+                        absl::base
+                        absl::config
+                        absl::core_headers
+                        absl::errno_saver
+                        absl::raw_logging_internal)
+  set_property(TARGET absl::fast_type_id PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
+  set_property(TARGET absl::fixed_array
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::compressed_tuple
+                        absl::algorithm
+                        absl::config
+                        absl::core_headers
+                        absl::dynamic_annotations
+                        absl::throw_delegate
+                        absl::memory)
+  set_property(TARGET absl::flags
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::flags_commandlineflag
+                        absl::flags_config
+                        absl::flags_internal
+                        absl::flags_reflection
+                        absl::base
+                        absl::core_headers
+                        absl::strings)
+  set_property(TARGET absl::flags_commandlineflag
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::fast_type_id
+                        absl::flags_commandlineflag_internal
+                        absl::optional
+                        absl::strings)
+  set_property(TARGET absl::flags_commandlineflag_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::fast_type_id)
+  set_property(TARGET absl::flags_config
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::flags_path_util
+                        absl::flags_program_name
+                        absl::core_headers
+                        absl::strings
+                        absl::synchronization)
+  set_property(TARGET absl::flags_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::config
+                        absl::flags_commandlineflag
+                        absl::flags_commandlineflag_internal
+                        absl::flags_config
+                        absl::flags_marshalling
+                        absl::synchronization
+                        absl::meta
+                        absl::utility)
+  set_property(TARGET absl::flags_marshalling
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::log_severity
+                        absl::strings
+                        absl::str_format)
+  set_property(TARGET absl::flags_parse
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::flags_config
+                        absl::flags
+                        absl::flags_commandlineflag
+                        absl::flags_commandlineflag_internal
+                        absl::flags_internal
+                        absl::flags_private_handle_accessor
+                        absl::flags_program_name
+                        absl::flags_reflection
+                        absl::flags_usage
+                        absl::strings
+                        absl::synchronization)
+  set_property(TARGET absl::flags_path_util PROPERTY INTERFACE_LINK_LIBRARIES
+                                                     absl::config 
absl::strings)
+  set_property(TARGET absl::flags_private_handle_accessor
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::flags_commandlineflag
+                        absl::flags_commandlineflag_internal
+                        absl::strings)
+  set_property(TARGET absl::flags_program_name
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::flags_path_util
+                        absl::strings
+                        absl::synchronization)
+  set_property(TARGET absl::flags_reflection
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::flags_commandlineflag
+                        absl::flags_private_handle_accessor
+                        absl::flags_config
+                        absl::strings
+                        absl::synchronization
+                        absl::flat_hash_map)
+  set_property(TARGET absl::flags_usage
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::flags_usage_internal
+                        absl::strings
+                        absl::synchronization)
+  set_property(TARGET absl::flags_usage_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::flags_config
+                        absl::flags
+                        absl::flags_commandlineflag
+                        absl::flags_internal
+                        absl::flags_path_util
+                        absl::flags_private_handle_accessor
+                        absl::flags_program_name
+                        absl::flags_reflection
+                        absl::flat_hash_map
+                        absl::strings
+                        absl::synchronization)
+  set_property(TARGET absl::flat_hash_map
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::container_memory
+                        absl::hash_function_defaults
+                        absl::raw_hash_map
+                        absl::algorithm_container
+                        absl::memory)
+  set_property(TARGET absl::flat_hash_set
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::container_memory
+                        absl::hash_function_defaults
+                        absl::raw_hash_set
+                        absl::algorithm_container
+                        absl::core_headers
+                        absl::memory)
+  set_property(TARGET absl::function_ref
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::core_headers
+                        absl::meta)
+  set_property(TARGET absl::graphcycles_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::malloc_internal
+                        absl::raw_logging_internal)
+  set_property(TARGET absl::hash
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::city
+                        absl::config
+                        absl::core_headers
+                        absl::endian
+                        absl::fixed_array
+                        absl::meta
+                        absl::int128
+                        absl::strings
+                        absl::optional
+                        absl::variant
+                        absl::utility
+                        absl::low_level_hash)
+  set_property(TARGET absl::hash_function_defaults
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::cord
+                        absl::hash
+                        absl::strings)
+  set_property(TARGET absl::hash_policy_traits PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                        absl::meta)
+  set_property(TARGET absl::hashtable_debug PROPERTY INTERFACE_LINK_LIBRARIES
+                                                     
absl::hashtable_debug_hooks)
+  set_property(TARGET absl::hashtable_debug_hooks PROPERTY 
INTERFACE_LINK_LIBRARIES
                                                            absl::config)
-    set_property(TARGET absl::endian PROPERTY INTERFACE_LINK_LIBRARIES 
absl::base
-                                              absl::config absl::core_headers)
-    set_property(TARGET absl::errno_saver PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
-    set_property(TARGET absl::examine_stack
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::stacktrace
-                          absl::symbolize
-                          absl::config
-                          absl::core_headers
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::exponential_biased PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                          absl::config 
absl::core_headers)
-    set_property(TARGET absl::failure_signal_handler
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::examine_stack
-                          absl::stacktrace
-                          absl::base
-                          absl::config
-                          absl::core_headers
-                          absl::errno_saver
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::fast_type_id PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
-    set_property(TARGET absl::fixed_array
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::compressed_tuple
-                          absl::algorithm
-                          absl::config
-                          absl::core_headers
-                          absl::dynamic_annotations
-                          absl::throw_delegate
-                          absl::memory)
-    set_property(TARGET absl::flags
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::flags_commandlineflag
-                          absl::flags_config
-                          absl::flags_internal
-                          absl::flags_reflection
-                          absl::base
-                          absl::core_headers
-                          absl::strings)
-    set_property(TARGET absl::flags_commandlineflag
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::fast_type_id
-                          absl::flags_commandlineflag_internal
-                          absl::optional
-                          absl::strings)
-    set_property(TARGET absl::flags_commandlineflag_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config 
absl::fast_type_id)
-    set_property(TARGET absl::flags_config
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::flags_path_util
-                          absl::flags_program_name
-                          absl::core_headers
-                          absl::strings
-                          absl::synchronization)
-    set_property(TARGET absl::flags_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::config
-                          absl::flags_commandlineflag
-                          absl::flags_commandlineflag_internal
-                          absl::flags_config
-                          absl::flags_marshalling
-                          absl::synchronization
-                          absl::meta
-                          absl::utility)
-    set_property(TARGET absl::flags_marshalling
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::log_severity
-                          absl::strings
-                          absl::str_format)
-    set_property(TARGET absl::flags_parse
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::flags_config
-                          absl::flags
-                          absl::flags_commandlineflag
-                          absl::flags_commandlineflag_internal
-                          absl::flags_internal
-                          absl::flags_private_handle_accessor
-                          absl::flags_program_name
-                          absl::flags_reflection
-                          absl::flags_usage
-                          absl::strings
-                          absl::synchronization)
-    set_property(TARGET absl::flags_path_util PROPERTY INTERFACE_LINK_LIBRARIES
-                                                       absl::config 
absl::strings)
-    set_property(TARGET absl::flags_private_handle_accessor
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::flags_commandlineflag
-                          absl::flags_commandlineflag_internal
-                          absl::strings)
-    set_property(TARGET absl::flags_program_name
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::flags_path_util
-                          absl::strings
-                          absl::synchronization)
-    set_property(TARGET absl::flags_reflection
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::flags_commandlineflag
-                          absl::flags_private_handle_accessor
-                          absl::flags_config
-                          absl::strings
-                          absl::synchronization
-                          absl::flat_hash_map)
-    set_property(TARGET absl::flags_usage
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::flags_usage_internal
-                          absl::strings
-                          absl::synchronization)
-    set_property(TARGET absl::flags_usage_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::flags_config
-                          absl::flags
-                          absl::flags_commandlineflag
-                          absl::flags_internal
-                          absl::flags_path_util
-                          absl::flags_private_handle_accessor
-                          absl::flags_program_name
-                          absl::flags_reflection
-                          absl::flat_hash_map
-                          absl::strings
-                          absl::synchronization)
-    set_property(TARGET absl::flat_hash_map
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::container_memory
-                          absl::hash_function_defaults
-                          absl::raw_hash_map
-                          absl::algorithm_container
-                          absl::memory)
-    set_property(TARGET absl::flat_hash_set
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::container_memory
-                          absl::hash_function_defaults
-                          absl::raw_hash_set
-                          absl::algorithm_container
-                          absl::core_headers
-                          absl::memory)
-    set_property(TARGET absl::function_ref
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::core_headers
-                          absl::meta)
-    set_property(TARGET absl::graphcycles_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::malloc_internal
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::hash
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::city
-                          absl::config
-                          absl::core_headers
-                          absl::endian
-                          absl::fixed_array
-                          absl::meta
-                          absl::int128
-                          absl::strings
-                          absl::optional
-                          absl::variant
-                          absl::utility
-                          absl::low_level_hash)
-    set_property(TARGET absl::hash_function_defaults
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::cord
-                          absl::hash
-                          absl::strings)
-    set_property(TARGET absl::hash_policy_traits PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                          absl::meta)
-    set_property(TARGET absl::hashtable_debug PROPERTY INTERFACE_LINK_LIBRARIES
-                                                       
absl::hashtable_debug_hooks)
-    set_property(TARGET absl::hashtable_debug_hooks PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                             absl::config)
-    set_property(TARGET absl::hashtablez_sampler
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::exponential_biased
-                          absl::have_sse
-                          absl::sample_recorder
-                          absl::synchronization)
-    set_property(TARGET absl::inlined_vector
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::algorithm
-                          absl::core_headers
-                          absl::inlined_vector_internal
-                          absl::throw_delegate
-                          absl::memory)
-    set_property(TARGET absl::inlined_vector_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::compressed_tuple
-                          absl::core_headers
-                          absl::memory
-                          absl::span
-                          absl::type_traits)
-    set_property(TARGET absl::int128 PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
-                                              absl::core_headers absl::bits)
-    set_property(TARGET absl::kernel_timeout_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers
-                          absl::raw_logging_internal absl::time)
-    set_property(TARGET absl::layout
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::meta
-                          absl::strings
-                          absl::span
-                          absl::utility)
-    set_property(TARGET absl::leak_check PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+  set_property(TARGET absl::hashtablez_sampler
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::exponential_biased
+                        absl::have_sse
+                        absl::sample_recorder
+                        absl::synchronization)
+  set_property(TARGET absl::inlined_vector
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::algorithm
+                        absl::core_headers
+                        absl::inlined_vector_internal
+                        absl::throw_delegate
+                        absl::memory)
+  set_property(TARGET absl::inlined_vector_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::compressed_tuple
+                        absl::core_headers
+                        absl::memory
+                        absl::span
+                        absl::type_traits)
+  set_property(TARGET absl::int128 PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                            absl::core_headers absl::bits)
+  set_property(TARGET absl::kernel_timeout_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers
+                        absl::raw_logging_internal absl::time)
+  set_property(TARGET absl::layout
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::meta
+                        absl::strings
+                        absl::span
+                        absl::utility)
+  set_property(TARGET absl::leak_check PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                                absl::core_headers)
+  set_property(TARGET absl::log_severity PROPERTY INTERFACE_LINK_LIBRARIES
                                                   absl::core_headers)
-    set_property(TARGET absl::log_severity PROPERTY INTERFACE_LINK_LIBRARIES
-                                                    absl::core_headers)
-    set_property(TARGET absl::low_level_hash
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bits
-                          absl::config
-                          absl::endian
-                          absl::int128)
-    set_property(TARGET absl::malloc_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::dynamic_annotations
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::memory PROPERTY INTERFACE_LINK_LIBRARIES 
absl::core_headers
-                                              absl::meta)
-    set_property(TARGET absl::meta PROPERTY INTERFACE_LINK_LIBRARIES 
absl::type_traits)
-    set_property(TARGET absl::node_hash_map
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::container_memory
-                          absl::hash_function_defaults
-                          absl::node_hash_policy
-                          absl::raw_hash_map
-                          absl::algorithm_container
-                          absl::memory)
-    set_property(TARGET absl::node_hash_policy PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                        absl::config)
-    set_property(TARGET absl::node_hash_set
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::hash_function_defaults
-                          absl::node_hash_policy
-                          absl::raw_hash_set
-                          absl::algorithm_container
-                          absl::memory)
-    set_property(TARGET absl::numeric PROPERTY INTERFACE_LINK_LIBRARIES 
absl::int128)
-    set_property(TARGET absl::numeric_representation PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                              absl::config)
-    set_property(TARGET absl::optional
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bad_optional_access
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::memory
-                          absl::type_traits
-                          absl::utility)
-    set_property(TARGET absl::periodic_sampler
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers
-                          absl::exponential_biased)
-    set_property(TARGET absl::random_bit_gen_ref
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::core_headers
-                          absl::random_internal_distribution_caller
-                          absl::random_internal_fast_uniform_bits
-                          absl::type_traits)
-    set_property(TARGET absl::random_distributions
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::random_internal_generate_real
-                          absl::random_internal_distribution_caller
-                          absl::random_internal_fast_uniform_bits
-                          absl::random_internal_fastmath
-                          absl::random_internal_iostream_state_saver
-                          absl::random_internal_traits
-                          absl::random_internal_uniform_helper
-                          absl::random_internal_wide_multiply
-                          absl::strings
-                          absl::type_traits)
-    set_property(TARGET absl::random_internal_distribution_caller
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::utility
-                          absl::fast_type_id)
-    set_property(TARGET absl::random_internal_distribution_test_util
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::raw_logging_internal
-                          absl::strings
-                          absl::str_format
-                          absl::span)
-    set_property(TARGET absl::random_internal_fast_uniform_bits
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config)
-    set_property(TARGET absl::random_internal_fastmath PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                                absl::bits)
-    set_property(TARGET absl::random_internal_generate_real
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bits
-                          absl::random_internal_fastmath
-                          absl::random_internal_traits
-                          absl::type_traits)
-    set_property(TARGET absl::random_internal_iostream_state_saver
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::int128 
absl::type_traits)
-    set_property(TARGET absl::random_internal_mock_helpers
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::fast_type_id 
absl::optional)
-    set_property(TARGET absl::random_internal_nonsecure_base
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::core_headers
-                          absl::optional
-                          absl::random_internal_pool_urbg
-                          absl::random_internal_salted_seed_seq
-                          absl::random_internal_seed_material
-                          absl::span
-                          absl::type_traits)
-    set_property(TARGET absl::random_internal_pcg_engine
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::int128
-                          absl::random_internal_fastmath
-                          absl::random_internal_iostream_state_saver
-                          absl::type_traits)
-    set_property(TARGET absl::random_internal_platform PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                                absl::config)
-    set_property(TARGET absl::random_internal_pool_urbg
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::config
-                          absl::core_headers
-                          absl::endian
-                          absl::random_internal_randen
-                          absl::random_internal_seed_material
-                          absl::random_internal_traits
-                          absl::random_seed_gen_exception
-                          absl::raw_logging_internal
-                          absl::span)
-    set_property(TARGET absl::random_internal_randen
-                 PROPERTY INTERFACE_LINK_LIBRARIES 
absl::random_internal_platform
-                          absl::random_internal_randen_hwaes
-                          absl::random_internal_randen_slow)
-    set_property(TARGET absl::random_internal_randen_engine
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::endian
-                          absl::random_internal_iostream_state_saver
-                          absl::random_internal_randen
-                          absl::raw_logging_internal
-                          absl::type_traits)
-    set_property(TARGET absl::random_internal_randen_hwaes
-                 PROPERTY INTERFACE_LINK_LIBRARIES 
absl::random_internal_platform
-                          absl::random_internal_randen_hwaes_impl absl::config)
-    set_property(TARGET absl::random_internal_randen_hwaes_impl
-                 PROPERTY INTERFACE_LINK_LIBRARIES 
absl::random_internal_platform
-                          absl::config)
-    set_property(TARGET absl::random_internal_randen_slow
-                 PROPERTY INTERFACE_LINK_LIBRARIES 
absl::random_internal_platform
-                          absl::config)
-    set_property(TARGET absl::random_internal_salted_seed_seq
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::inlined_vector
-                          absl::optional
-                          absl::span
-                          absl::random_internal_seed_material
-                          absl::type_traits)
-    set_property(TARGET absl::random_internal_seed_material
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::core_headers
-                          absl::optional
-                          absl::random_internal_fast_uniform_bits
-                          absl::raw_logging_internal
-                          absl::span
-                          absl::strings)
-    set_property(TARGET absl::random_internal_traits PROPERTY 
INTERFACE_LINK_LIBRARIES
+  set_property(TARGET absl::low_level_hash
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bits
+                        absl::config
+                        absl::endian
+                        absl::int128)
+  set_property(TARGET absl::malloc_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::dynamic_annotations
+                        absl::raw_logging_internal)
+  set_property(TARGET absl::memory PROPERTY INTERFACE_LINK_LIBRARIES 
absl::core_headers
+                                            absl::meta)
+  set_property(TARGET absl::meta PROPERTY INTERFACE_LINK_LIBRARIES 
absl::type_traits)
+  set_property(TARGET absl::node_hash_map
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::container_memory
+                        absl::hash_function_defaults
+                        absl::node_hash_policy
+                        absl::raw_hash_map
+                        absl::algorithm_container
+                        absl::memory)
+  set_property(TARGET absl::node_hash_policy PROPERTY INTERFACE_LINK_LIBRARIES
+                                                      absl::config)
+  set_property(TARGET absl::node_hash_set
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::hash_function_defaults
+                        absl::node_hash_policy
+                        absl::raw_hash_set
+                        absl::algorithm_container
+                        absl::memory)
+  set_property(TARGET absl::numeric PROPERTY INTERFACE_LINK_LIBRARIES 
absl::int128)
+  set_property(TARGET absl::numeric_representation PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                            absl::config)
+  set_property(TARGET absl::optional
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bad_optional_access
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::memory
+                        absl::type_traits
+                        absl::utility)
+  set_property(TARGET absl::periodic_sampler
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers
+                        absl::exponential_biased)
+  set_property(TARGET absl::random_bit_gen_ref
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::core_headers
+                        absl::random_internal_distribution_caller
+                        absl::random_internal_fast_uniform_bits
+                        absl::type_traits)
+  set_property(TARGET absl::random_distributions
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::random_internal_generate_real
+                        absl::random_internal_distribution_caller
+                        absl::random_internal_fast_uniform_bits
+                        absl::random_internal_fastmath
+                        absl::random_internal_iostream_state_saver
+                        absl::random_internal_traits
+                        absl::random_internal_uniform_helper
+                        absl::random_internal_wide_multiply
+                        absl::strings
+                        absl::type_traits)
+  set_property(TARGET absl::random_internal_distribution_caller
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::utility
+                        absl::fast_type_id)
+  set_property(TARGET absl::random_internal_distribution_test_util
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::raw_logging_internal
+                        absl::strings
+                        absl::str_format
+                        absl::span)
+  set_property(TARGET absl::random_internal_fast_uniform_bits
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config)
+  set_property(TARGET absl::random_internal_fastmath PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                              absl::bits)
+  set_property(TARGET absl::random_internal_generate_real
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bits
+                        absl::random_internal_fastmath
+                        absl::random_internal_traits
+                        absl::type_traits)
+  set_property(TARGET absl::random_internal_iostream_state_saver
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::int128 
absl::type_traits)
+  set_property(TARGET absl::random_internal_mock_helpers
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::fast_type_id 
absl::optional)
+  set_property(TARGET absl::random_internal_nonsecure_base
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::core_headers
+                        absl::optional
+                        absl::random_internal_pool_urbg
+                        absl::random_internal_salted_seed_seq
+                        absl::random_internal_seed_material
+                        absl::span
+                        absl::type_traits)
+  set_property(TARGET absl::random_internal_pcg_engine
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::int128
+                        absl::random_internal_fastmath
+                        absl::random_internal_iostream_state_saver
+                        absl::type_traits)
+  set_property(TARGET absl::random_internal_platform PROPERTY 
INTERFACE_LINK_LIBRARIES
                                                               absl::config)
-    set_property(TARGET absl::random_internal_uniform_helper
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config
-                          absl::random_internal_traits absl::type_traits)
-    set_property(TARGET absl::random_internal_wide_multiply
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::bits absl::config 
absl::int128)
-    set_property(TARGET absl::random_random
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::random_distributions
-                          absl::random_internal_nonsecure_base
-                          absl::random_internal_pcg_engine
-                          absl::random_internal_pool_urbg
-                          absl::random_internal_randen_engine
-                          absl::random_seed_sequences)
-    set_property(TARGET absl::random_seed_gen_exception PROPERTY 
INTERFACE_LINK_LIBRARIES
-                                                                 absl::config)
-    set_property(TARGET absl::random_seed_sequences
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::inlined_vector
-                          absl::random_internal_nonsecure_base
-                          absl::random_internal_pool_urbg
-                          absl::random_internal_salted_seed_seq
-                          absl::random_internal_seed_material
-                          absl::random_seed_gen_exception
-                          absl::span)
-    set_property(TARGET absl::raw_hash_map
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::container_memory
-                          absl::raw_hash_set absl::throw_delegate)
-    set_property(TARGET absl::raw_hash_set
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bits
-                          absl::compressed_tuple
-                          absl::config
-                          absl::container_common
-                          absl::container_memory
-                          absl::core_headers
-                          absl::endian
-                          absl::hash_policy_traits
-                          absl::hashtable_debug_hooks
-                          absl::have_sse
-                          absl::memory
-                          absl::meta
-                          absl::optional
-                          absl::utility
-                          absl::hashtablez_sampler)
-    set_property(TARGET absl::raw_logging_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::atomic_hook
-                          absl::config
-                          absl::core_headers
-                          absl::log_severity)
-    set_property(TARGET absl::sample_recorder PROPERTY INTERFACE_LINK_LIBRARIES
-                                                       absl::base 
absl::synchronization)
-    set_property(TARGET absl::scoped_set_env
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config
-                          absl::raw_logging_internal)
-    set_property(TARGET absl::span
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::algorithm
-                          absl::core_headers
-                          absl::throw_delegate
-                          absl::type_traits)
-    set_property(TARGET absl::spinlock_wait
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::core_headers
-                          absl::errno_saver)
-    set_property(TARGET absl::stacktrace
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::debugging_internal 
absl::config
-                          absl::core_headers)
-    set_property(TARGET absl::status
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::atomic_hook
-                          absl::config
-                          absl::core_headers
-                          absl::function_ref
-                          absl::raw_logging_internal
-                          absl::inlined_vector
-                          absl::stacktrace
-                          absl::symbolize
-                          absl::strings
-                          absl::cord
-                          absl::str_format
-                          absl::optional)
-    set_property(TARGET absl::statusor
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::status
-                          absl::core_headers
-                          absl::raw_logging_internal
-                          absl::type_traits
-                          absl::strings
-                          absl::utility
-                          absl::variant)
-    set_property(TARGET absl::str_format PROPERTY INTERFACE_LINK_LIBRARIES
-                                                  absl::str_format_internal)
-    set_property(TARGET absl::str_format_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bits
-                          absl::strings
-                          absl::config
-                          absl::core_headers
-                          absl::numeric_representation
-                          absl::type_traits
-                          absl::int128
-                          absl::span)
-    set_property(TARGET absl::strerror PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
-                                                absl::core_headers 
absl::errno_saver)
-    set_property(TARGET absl::strings
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::strings_internal
-                          absl::base
-                          absl::bits
-                          absl::config
-                          absl::core_headers
-                          absl::endian
-                          absl::int128
-                          absl::memory
-                          absl::raw_logging_internal
-                          absl::throw_delegate
-                          absl::type_traits)
-    set_property(TARGET absl::strings_internal
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::config
-                          absl::core_headers
-                          absl::endian
-                          absl::raw_logging_internal
-                          absl::type_traits)
-    set_property(TARGET absl::symbolize
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::debugging_internal
-                          absl::demangle_internal
-                          absl::base
-                          absl::config
-                          absl::core_headers
-                          absl::dynamic_annotations
-                          absl::malloc_internal
-                          absl::raw_logging_internal
-                          absl::strings)
-    set_property(TARGET absl::synchronization
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::graphcycles_internal
-                          absl::kernel_timeout_internal
-                          absl::atomic_hook
-                          absl::base
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::dynamic_annotations
-                          absl::malloc_internal
-                          absl::raw_logging_internal
-                          absl::stacktrace
-                          absl::symbolize
-                          absl::time)
-    set_property(TARGET absl::throw_delegate
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::config
-                          absl::raw_logging_internal)
+  set_property(TARGET absl::random_internal_pool_urbg
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::config
+                        absl::core_headers
+                        absl::endian
+                        absl::random_internal_randen
+                        absl::random_internal_seed_material
+                        absl::random_internal_traits
+                        absl::random_seed_gen_exception
+                        absl::raw_logging_internal
+                        absl::span)
+  set_property(TARGET absl::random_internal_randen
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform
+                        absl::random_internal_randen_hwaes
+                        absl::random_internal_randen_slow)
+  set_property(TARGET absl::random_internal_randen_engine
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::endian
+                        absl::random_internal_iostream_state_saver
+                        absl::random_internal_randen
+                        absl::raw_logging_internal
+                        absl::type_traits)
+  set_property(TARGET absl::random_internal_randen_hwaes
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform
+                        absl::random_internal_randen_hwaes_impl absl::config)
+  set_property(TARGET absl::random_internal_randen_hwaes_impl
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform
+                        absl::config)
+  set_property(TARGET absl::random_internal_randen_slow
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform
+                        absl::config)
+  set_property(TARGET absl::random_internal_salted_seed_seq
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::inlined_vector
+                        absl::optional
+                        absl::span
+                        absl::random_internal_seed_material
+                        absl::type_traits)
+  set_property(TARGET absl::random_internal_seed_material
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::core_headers
+                        absl::optional
+                        absl::random_internal_fast_uniform_bits
+                        absl::raw_logging_internal
+                        absl::span
+                        absl::strings)
+  set_property(TARGET absl::random_internal_traits PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                            absl::config)
+  set_property(TARGET absl::random_internal_uniform_helper
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::config
+                        absl::random_internal_traits absl::type_traits)
+  set_property(TARGET absl::random_internal_wide_multiply
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::bits absl::config 
absl::int128)
+  set_property(TARGET absl::random_random
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::random_distributions
+                        absl::random_internal_nonsecure_base
+                        absl::random_internal_pcg_engine
+                        absl::random_internal_pool_urbg
+                        absl::random_internal_randen_engine
+                        absl::random_seed_sequences)
+  set_property(TARGET absl::random_seed_gen_exception PROPERTY 
INTERFACE_LINK_LIBRARIES
+                                                               absl::config)
+  set_property(TARGET absl::random_seed_sequences
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::inlined_vector
+                        absl::random_internal_nonsecure_base
+                        absl::random_internal_pool_urbg
+                        absl::random_internal_salted_seed_seq
+                        absl::random_internal_seed_material
+                        absl::random_seed_gen_exception
+                        absl::span)
+  set_property(TARGET absl::raw_hash_map
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::container_memory
+                        absl::raw_hash_set absl::throw_delegate)
+  set_property(TARGET absl::raw_hash_set
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bits
+                        absl::compressed_tuple
+                        absl::config
+                        absl::container_common
+                        absl::container_memory
+                        absl::core_headers
+                        absl::endian
+                        absl::hash_policy_traits
+                        absl::hashtable_debug_hooks
+                        absl::have_sse
+                        absl::memory
+                        absl::meta
+                        absl::optional
+                        absl::utility
+                        absl::hashtablez_sampler)
+  set_property(TARGET absl::raw_logging_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::atomic_hook
+                        absl::config
+                        absl::core_headers
+                        absl::log_severity)
+  set_property(TARGET absl::sample_recorder PROPERTY INTERFACE_LINK_LIBRARIES 
absl::base
+                                                     absl::synchronization)
+  set_property(TARGET absl::scoped_set_env PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                                    absl::raw_logging_internal)
+  set_property(TARGET absl::span
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::algorithm
+                        absl::core_headers
+                        absl::throw_delegate
+                        absl::type_traits)
+  set_property(TARGET absl::spinlock_wait
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::core_headers
+                        absl::errno_saver)
+  set_property(TARGET absl::stacktrace
+               PROPERTY INTERFACE_LINK_LIBRARIES absl::debugging_internal 
absl::config
+                        absl::core_headers)
+  set_property(TARGET absl::status
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::atomic_hook
+                        absl::config
+                        absl::core_headers
+                        absl::function_ref
+                        absl::raw_logging_internal
+                        absl::inlined_vector
+                        absl::stacktrace
+                        absl::symbolize
+                        absl::strings
+                        absl::cord
+                        absl::str_format
+                        absl::optional)
+  set_property(TARGET absl::statusor
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::status
+                        absl::core_headers
+                        absl::raw_logging_internal
+                        absl::type_traits
+                        absl::strings
+                        absl::utility
+                        absl::variant)
+  set_property(TARGET absl::str_format PROPERTY INTERFACE_LINK_LIBRARIES
+                                                absl::str_format_internal)
+  set_property(TARGET absl::str_format_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bits
+                        absl::strings
+                        absl::config
+                        absl::core_headers
+                        absl::numeric_representation
+                        absl::type_traits
+                        absl::int128
+                        absl::span)
+  set_property(TARGET absl::strerror PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                              absl::core_headers 
absl::errno_saver)
+  set_property(TARGET absl::strings
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::strings_internal
+                        absl::base
+                        absl::bits
+                        absl::config
+                        absl::core_headers
+                        absl::endian
+                        absl::int128
+                        absl::memory
+                        absl::raw_logging_internal
+                        absl::throw_delegate
+                        absl::type_traits)
+  set_property(TARGET absl::strings_internal
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::config
+                        absl::core_headers
+                        absl::endian
+                        absl::raw_logging_internal
+                        absl::type_traits)
+  set_property(TARGET absl::symbolize
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::debugging_internal
+                        absl::demangle_internal
+                        absl::base
+                        absl::config
+                        absl::core_headers
+                        absl::dynamic_annotations
+                        absl::malloc_internal
+                        absl::raw_logging_internal
+                        absl::strings)
+  set_property(TARGET absl::synchronization
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::graphcycles_internal
+                        absl::kernel_timeout_internal
+                        absl::atomic_hook
+                        absl::base
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::dynamic_annotations
+                        absl::malloc_internal
+                        absl::raw_logging_internal
+                        absl::stacktrace
+                        absl::symbolize
+                        absl::time)
+  set_property(TARGET absl::throw_delegate PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                                    absl::raw_logging_internal)
+  set_property(TARGET absl::time
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::base
+                        absl::civil_time
+                        absl::core_headers
+                        absl::int128
+                        absl::raw_logging_internal
+                        absl::strings
+                        absl::time_zone)
+  set_property(TARGET absl::type_traits PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
+  set_property(TARGET absl::utility PROPERTY INTERFACE_LINK_LIBRARIES 
absl::base_internal
+                                             absl::config absl::type_traits)
+  set_property(TARGET absl::variant
+               PROPERTY INTERFACE_LINK_LIBRARIES
+                        absl::bad_variant_access
+                        absl::base_internal
+                        absl::config
+                        absl::core_headers
+                        absl::type_traits
+                        absl::utility)
+  set_property(TARGET absl::wyhash PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
+                                            absl::endian absl::int128)
+
+  if(APPLE)
+    # This is due to upstream absl::cctz issue
+    # https://github.com/abseil/abseil-cpp/issues/283
+    find_library(CoreFoundation CoreFoundation)
     set_property(TARGET absl::time
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::base
-                          absl::civil_time
-                          absl::core_headers
-                          absl::int128
-                          absl::raw_logging_internal
-                          absl::strings
-                          absl::time_zone)
-    set_property(TARGET absl::type_traits PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config)
-    set_property(TARGET absl::utility
-                 PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal 
absl::config
-                          absl::type_traits)
-    set_property(TARGET absl::variant
-                 PROPERTY INTERFACE_LINK_LIBRARIES
-                          absl::bad_variant_access
-                          absl::base_internal
-                          absl::config
-                          absl::core_headers
-                          absl::type_traits
-                          absl::utility)
-    set_property(TARGET absl::wyhash PROPERTY INTERFACE_LINK_LIBRARIES 
absl::config
-                                              absl::endian absl::int128)
-
-    if(APPLE)
-      # This is due to upstream absl::cctz issue
-      # https://github.com/abseil/abseil-cpp/issues/283
-      find_library(CoreFoundation CoreFoundation)
-      set_property(TARGET absl::time
-                   APPEND
-                   PROPERTY INTERFACE_LINK_LIBRARIES ${CoreFoundation})
-    endif()
+                 APPEND
+                 PROPERTY INTERFACE_LINK_LIBRARIES ${CoreFoundation})
+  endif()
 
-    externalproject_add(absl_ep
-                        ${EP_LOG_OPTIONS}
-                        URL ${ABSL_SOURCE_URL}
-                        URL_HASH "SHA256=${ARROW_ABSL_BUILD_SHA256_CHECKSUM}"
-                        CMAKE_ARGS ${ABSL_CMAKE_ARGS}
-                        BUILD_BYPRODUCTS ${ABSL_BUILD_BYPRODUCTS})
+  externalproject_add(absl_ep
+                      ${EP_LOG_OPTIONS}
+                      URL ${ABSL_SOURCE_URL}
+                      URL_HASH "SHA256=${ARROW_ABSL_BUILD_SHA256_CHECKSUM}"
+                      CMAKE_ARGS ${ABSL_CMAKE_ARGS}
+                      BUILD_BYPRODUCTS ${ABSL_BUILD_BYPRODUCTS})
 
-    # Work around https://gitlab.kitware.com/cmake/cmake/issues/15052
-    file(MAKE_DIRECTORY ${ABSL_INCLUDE_DIR})
+  # Work around https://gitlab.kitware.com/cmake/cmake/issues/15052
+  file(MAKE_DIRECTORY ${ABSL_INCLUDE_DIR})
 
-    set(ABSL_VENDORED TRUE)
-  endif()
+  set(ABSL_VENDORED TRUE)
 endmacro()
 
 macro(build_grpc)
@@ -3606,9 +3627,7 @@ macro(build_grpc)
                      TRUE
                      PC_PACKAGE_NAMES
                      libcares)
-
-  # First need Abseil
-  resolve_dependency_absl()
+  ensure_absl()
 
   message(STATUS "Building gRPC from source")
 
@@ -3890,12 +3909,14 @@ macro(build_grpc)
 
   list(APPEND
        ARROW_BUNDLED_STATIC_LIBS
-       ${GRPC_GPR_ABSL_LIBRARIES}
        gRPC::address_sorting
        gRPC::gpr
        gRPC::grpc
        gRPC::grpcpp_for_bundling
        gRPC::upb)
+  if(ABS_VENDORED)
+    list(APPEND ARROW_BUNDLED_STATIC_LIBS ${GRPC_GPR_ABSL_LIBRARIES})
+  endif()
 endmacro()
 
 if(ARROW_WITH_GRPC)
@@ -4012,7 +4033,7 @@ macro(build_google_cloud_cpp_storage)
   message(STATUS "Only building the google-cloud-cpp::storage component")
 
   # List of dependencies taken from 
https://github.com/googleapis/google-cloud-cpp/blob/master/doc/packaging.md
-  resolve_dependency_absl()
+  ensure_absl()
   build_crc32c_once()
 
   # Curl is required on all platforms, but building it internally might also 
trip over S3's copy.

Reply via email to