Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 26 additions & 3 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3412,6 +3412,14 @@ macro(build_absl_once)
absl::raw_logging_internal
absl::strings
absl::time_zone)
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()
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
Expand Down Expand Up @@ -3584,13 +3592,28 @@ macro(build_grpc)
INTERFACE_INCLUDE_DIRECTORIES "${GRPC_INCLUDE_DIR}")

set(GRPC_GPR_ABSL_LIBRARIES
absl::bad_optional_access
absl::base
absl::statusor
absl::status
absl::cord
absl::debugging_internal
absl::demangle_internal
absl::graphcycles_internal
absl::int128
absl::malloc_internal
absl::raw_logging_internal
absl::spinlock_wait
absl::stacktrace
absl::status
absl::statusor
absl::strings
absl::strings_internal
absl::str_format_internal
absl::symbolize
absl::synchronization
absl::time)
absl::throw_delegate
absl::time
absl::time_zone)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we create a one-linear(?) to collect this list like https://github.com/apache/arrow/blob/master/cpp/cmake_modules/ThirdpartyToolchain.cmake#L2659-L2667 ?

It may be better that we have a shell script that generates the list and include it from this file:

# cpp/build-support/list-grpc-absl-libraries.sh
...
echo "set(GRPC_GPR_ABSL_LIBRARIES absl::...)"
$ cpp/build-support/list-grpc-absl-libraries.sh > cpp/cmake_modules/gRPCVariables.cmake
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 66d04acae..36565fdbf 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -3475,14 +3475,7 @@ macro(build_grpc)
                         PROPERTIES IMPORTED_LOCATION "${GRPC_STATIC_LIBRARY_UPB}"
                                    INTERFACE_INCLUDE_DIRECTORIES "${GRPC_INCLUDE_DIR}")
 
-  set(GRPC_GPR_ABSL_LIBRARIES
-      absl::base
-      absl::statusor
-      absl::status
-      absl::cord
-      absl::strings
-      absl::synchronization
-      absl::time)
+  include(gRPCVariables)
   add_library(gRPC::gpr STATIC IMPORTED)
   set_target_properties(gRPC::gpr
                         PROPERTIES IMPORTED_LOCATION "${GRPC_STATIC_LIBRARY_GPR}"


add_library(gRPC::gpr STATIC IMPORTED)
set_target_properties(gRPC::gpr
PROPERTIES IMPORTED_LOCATION "${GRPC_STATIC_LIBRARY_GPR}"
Expand Down
8 changes: 6 additions & 2 deletions cpp/examples/arrow/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,12 @@ if(ARROW_FLIGHT)
message(FATAL_ERROR "Statically built gRPC requires ARROW_BUILD_STATIC=ON")
else()
set(FLIGHT_EXAMPLES_LINK_LIBS arrow_flight_static)
set(GRPC_REFLECTION_LINK_LIBS -Wl,--whole-archive gRPC::grpc++_reflection
-Wl,--no-whole-archive)
if(APPLE)
set(GRPC_REFLECTION_LINK_LIBS -Wl,-force_load gRPC::grpc++_reflection)
else()
set(GRPC_REFLECTION_LINK_LIBS -Wl,--whole-archive gRPC::grpc++_reflection
-Wl,--no-whole-archive)
endif()
endif()

set(FLIGHT_EXAMPLE_GENERATED_PROTO_FILES
Expand Down
10 changes: 6 additions & 4 deletions cpp/src/arrow/ArrowConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ set(ARROW_LIBRARY_PATH_SUFFIXES "@ARROW_LIBRARY_PATH_SUFFIXES@")
set(ARROW_INCLUDE_PATH_SUFFIXES "@ARROW_INCLUDE_PATH_SUFFIXES@")
set(ARROW_SYSTEM_DEPENDENCIES "@ARROW_SYSTEM_DEPENDENCIES@")
set(ARROW_BUNDLED_STATIC_LIBS "@ARROW_BUNDLED_STATIC_LIBS@")
set(ARROW_STATIC_INSTALL_INTERFACE_LIBS "@ARROW_STATIC_INSTALL_INTERFACE_LIBS@")

include("${CMAKE_CURRENT_LIST_DIR}/ArrowOptions.cmake")

Expand Down Expand Up @@ -79,11 +80,12 @@ if(NOT (TARGET arrow_shared OR TARGET arrow_static))
PROPERTIES
IMPORTED_LOCATION
"${arrow_lib_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}arrow_bundled_dependencies${CMAKE_STATIC_LIBRARY_SUFFIX}"
)

INTERFACE_LINK_LIBRARIES
"${ARROW_STATIC_INSTALL_INTERFACE_LIBS}"
)
get_property(arrow_static_interface_link_libraries
TARGET arrow_static
PROPERTY INTERFACE_LINK_LIBRARIES)
TARGET arrow_static
PROPERTY INTERFACE_LINK_LIBRARIES)
set_target_properties(
arrow_static PROPERTIES INTERFACE_LINK_LIBRARIES
"${arrow_static_interface_link_libraries};arrow_bundled_dependencies")
Expand Down
5 changes: 2 additions & 3 deletions cpp/src/arrow/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -563,10 +563,9 @@ add_arrow_lib(arrow
${ARROW_SHARED_PRIVATE_LINK_LIBS}
STATIC_LINK_LIBS
${ARROW_STATIC_LINK_LIBS}
${ARROW_STATIC_INSTALL_INTERFACE_LIBS}
SHARED_INSTALL_INTERFACE_LIBS
${ARROW_SHARED_INSTALL_INTERFACE_LIBS}
STATIC_INSTALL_INTERFACE_LIBS
${ARROW_STATIC_INSTALL_INTERFACE_LIBS})
${ARROW_SHARED_INSTALL_INTERFACE_LIBS})

add_dependencies(arrow ${ARROW_LIBRARIES})

Expand Down