# Setup our dependency on Abseil.
set ( ABSL_PROPAGATE_CXX_STD ON )
if ( TARGET absl::strings )
# If Abseil is included already, skip including it.
# (https://github.com/protocolbuffers/protobuf/issues/10435)
elseif ( protobuf_ABSL_PROVIDER STREQUAL "module" )
if ( NOT ABSL_ROOT_DIR )
set ( ABSL_ROOT_DIR ${ CMAKE_CURRENT_SOURCE_DIR } /third_party/abseil-cpp )
endif ( )
if ( EXISTS "${ABSL_ROOT_DIR}/CMakeLists.txt" )
if ( protobuf_INSTALL )
# When protobuf_INSTALL is enabled and Abseil will be built as a module,
# Abseil will be installed along with protobuf for convenience.
set ( ABSL_ENABLE_INSTALL ON )
endif ( )
add_subdirectory ( ${ ABSL_ROOT_DIR } third_party/abseil-cpp )
else ( )
message ( WARNING "protobuf_ABSL_PROVIDER is \" module\ " but ABSL_ROOT_DIR is wrong" )
endif ( )
if ( protobuf_INSTALL AND NOT _protobuf_INSTALL_SUPPORTED_FROM_MODULE )
message ( WARNING "protobuf_INSTALL will be forced to FALSE because protobuf_ABSL_PROVIDER is \" module\ " and CMake version (${CMAKE_VERSION}) is less than 3.13." )
set ( protobuf_INSTALL FALSE )
endif ( )
elseif ( protobuf_ABSL_PROVIDER STREQUAL "package" )
# Use "CONFIG" as there is no built-in cmake module for absl.
find_package ( absl REQUIRED CONFIG )
endif ( )
set ( _protobuf_FIND_ABSL "if(NOT TARGET absl::strings)\n find_package(absl CONFIG)\nendif()" )
if ( BUILD_SHARED_LIBS AND MSVC )
# On MSVC Abseil is bundled into a single DLL.
set ( protobuf_ABSL_USED_TARGETS abseil_dll )
# As a workaround for https://github.com/abseil/abseil-cpp/issues/1118,
# make sure ABSL_CONSUME_DLL gets set for all subsequent builds.
add_definitions ( -DABSL_CONSUME_DLL )
else ( )
set ( protobuf_ABSL_USED_TARGETS
a b s l : : a l g o r i t h m
a b s l : : b a s e
a b s l : : b i n d _ f r o n t
a b s l : : b i t s
a b s l : : b t r e e
a b s l : : c l e a n u p
a b s l : : c o r d
a b s l : : c o r e _ h e a d e r s
a b s l : : d e b u g g i n g
a b s l : : d y n a m i c _ a n n o t a t i o n s
a b s l : : f l a g s
a b s l : : f l a t _ h a s h _ m a p
a b s l : : f l a t _ h a s h _ s e t
a b s l : : f u n c t i o n _ r e f
a b s l : : h a s h
a b s l : : l a y o u t
a b s l : : m e m o r y
a b s l : : n o d e _ h a s h _ m a p
a b s l : : n o d e _ h a s h _ s e t
a b s l : : o p t i o n a l
a b s l : : s p a n
a b s l : : s t a t u s
a b s l : : s t a t u s o r
a b s l : : s t r i n g s
a b s l : : s y n c h r o n i z a t i o n
a b s l : : t i m e
a b s l : : u t i l i t y
a b s l : : v a r i a n t
)
endif ( )