diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 81524653db6..570d57bb631 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -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 @@ -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) + add_library(gRPC::gpr STATIC IMPORTED) set_target_properties(gRPC::gpr PROPERTIES IMPORTED_LOCATION "${GRPC_STATIC_LIBRARY_GPR}" diff --git a/cpp/examples/arrow/CMakeLists.txt b/cpp/examples/arrow/CMakeLists.txt index 62396b9ae9e..a38bd88333f 100644 --- a/cpp/examples/arrow/CMakeLists.txt +++ b/cpp/examples/arrow/CMakeLists.txt @@ -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 diff --git a/cpp/src/arrow/ArrowConfig.cmake.in b/cpp/src/arrow/ArrowConfig.cmake.in index 6209baeec67..44c8a66f67d 100644 --- a/cpp/src/arrow/ArrowConfig.cmake.in +++ b/cpp/src/arrow/ArrowConfig.cmake.in @@ -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") @@ -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") diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt index a895881f9e3..3e56441479b 100644 --- a/cpp/src/arrow/CMakeLists.txt +++ b/cpp/src/arrow/CMakeLists.txt @@ -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})