Skip to content
Draft
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
102 changes: 55 additions & 47 deletions cpp/cmake_modules/ThirdpartyToolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,7 @@ else()
ARROW_PROTOBUF_STRIPPED_BUILD_VERSION)
# strip the leading `v`
set_urls(PROTOBUF_SOURCE_URL
"https://github.com/protocolbuffers/protobuf/releases/download/${ARROW_PROTOBUF_BUILD_VERSION}/protobuf-all-${ARROW_PROTOBUF_STRIPPED_BUILD_VERSION}.tar.gz"
"https://github.com/protocolbuffers/protobuf/releases/download/${ARROW_PROTOBUF_BUILD_VERSION}/protobuf-${ARROW_PROTOBUF_STRIPPED_BUILD_VERSION}.tar.gz"
"${THIRDPARTY_MIRROR_URL}/protobuf-${ARROW_PROTOBUF_BUILD_VERSION}.tar.gz")
endif()

Expand Down Expand Up @@ -1864,12 +1864,63 @@ if(ARROW_WITH_THRIFT)
list(GET Thrift_VERSION_LIST 2 Thrift_VERSION_PATCH)
endif()

# ----------------------------------------------------------------------
# Abseil defined here so it can be called from build_protobuf()

function(build_absl)
list(APPEND CMAKE_MESSAGE_INDENT "ABSL: ")
message(STATUS "Building Abseil from source using FetchContent")
set(ABSL_VENDORED
TRUE
PARENT_SCOPE)

if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
string(APPEND CMAKE_CXX_FLAGS " -include stdint.h")
endif()

fetchcontent_declare(absl
${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
URL ${ABSL_SOURCE_URL}
URL_HASH "SHA256=${ARROW_ABSL_BUILD_SHA256_CHECKSUM}")

prepare_fetchcontent()

# We have to enable Abseil install to add Abseil targets to an export set.
# But we don't install Abseil by EXCLUDE_FROM_ALL.
set(ABSL_ENABLE_INSTALL ON)
fetchcontent_makeavailable(absl)
Comment on lines +1890 to +1891
Copy link
Member

@rok rok Jan 24, 2026

Choose a reason for hiding this comment

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

Suggested change
set(ABSL_ENABLE_INSTALL ON)
fetchcontent_makeavailable(absl)
set(ABSL_ENABLE_INSTALL OFF)
fetchcontent_makeavailable(absl)

This would prevent name collision, but pprobably cause other issues.


if(CMAKE_VERSION VERSION_LESS 3.28)
set_property(DIRECTORY ${absl_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL TRUE)
endif()

if(APPLE)
# This is due to upstream absl::cctz issue
# https://github.com/abseil/abseil-cpp/issues/283
find_library(CoreFoundation CoreFoundation)
# When ABSL_ENABLE_INSTALL is ON, the real target is "time" not "absl_time"
# Cannot use set_property on alias targets (absl::time is an alias)
set_property(TARGET time
APPEND
PROPERTY INTERFACE_LINK_LIBRARIES ${CoreFoundation})
endif()
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()

# ----------------------------------------------------------------------
# Protocol Buffers (required for ORC, Flight and Substrait libraries)

function(build_protobuf)
list(APPEND CMAKE_MESSAGE_INDENT "Protobuf: ")
message(STATUS "Building Protocol Buffers from source using FetchContent")

# Protobuf requires Abseil. Build Abseil first with OVERRIDE_FIND_PACKAGE
# so that protobuf doesn't build its own copy and we can reuse it on google-cloud-cpp
# if it's also being built.
if(NOT TARGET absl::strings)
build_absl()
endif()

set(PROTOBUF_VENDORED
TRUE
PARENT_SCOPE)
Expand All @@ -1885,8 +1936,7 @@ function(build_protobuf)
fetchcontent_declare(protobuf
${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
URL ${PROTOBUF_SOURCE_URL}
URL_HASH "SHA256=${ARROW_PROTOBUF_BUILD_SHA256_CHECKSUM}"
SOURCE_SUBDIR cmake)
URL_HASH "SHA256=${ARROW_PROTOBUF_BUILD_SHA256_CHECKSUM}")

prepare_fetchcontent()

Expand Down Expand Up @@ -3030,46 +3080,6 @@ endfunction()
# ----------------------------------------------------------------------
# Dependencies for Arrow Flight RPC

function(build_absl)
list(APPEND CMAKE_MESSAGE_INDENT "ABSL: ")
message(STATUS "Building Abseil from source using FetchContent")
set(ABSL_VENDORED
TRUE
PARENT_SCOPE)

if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
string(APPEND CMAKE_CXX_FLAGS " -include stdint.h")
endif()

fetchcontent_declare(absl
${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE
URL ${ABSL_SOURCE_URL}
URL_HASH "SHA256=${ARROW_ABSL_BUILD_SHA256_CHECKSUM}")

prepare_fetchcontent()

# We have to enable Abseil install to add Abseil targets to an export set.
# But we don't install Abseil by EXCLUDE_FROM_ALL.
set(ABSL_ENABLE_INSTALL ON)
fetchcontent_makeavailable(absl)

if(CMAKE_VERSION VERSION_LESS 3.28)
set_property(DIRECTORY ${absl_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL TRUE)
endif()

if(APPLE)
# This is due to upstream absl::cctz issue
# https://github.com/abseil/abseil-cpp/issues/283
find_library(CoreFoundation CoreFoundation)
# When ABSL_ENABLE_INSTALL is ON, the real target is "time" not "absl_time"
# Cannot use set_property on alias targets (absl::time is an alias)
set_property(TARGET time
APPEND
PROPERTY INTERFACE_LINK_LIBRARIES ${CoreFoundation})
endif()
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()

function(build_grpc)
resolve_dependency(c-ares
ARROW_CMAKE_PACKAGE_NAME
Expand Down Expand Up @@ -3145,8 +3155,7 @@ function(build_grpc)
gpr
grpc
grpc++
grpc++_reflection
upb)
grpc++_reflection)

foreach(target ${GRPC_LIBRARY_TARGETS})
if(TARGET ${target} AND NOT TARGET gRPC::${target})
Expand Down Expand Up @@ -3194,8 +3203,7 @@ function(build_grpc)
gRPC::address_sorting
gRPC::gpr
gRPC::grpc
gRPC::grpcpp_for_bundling
gRPC::upb)
gRPC::grpcpp_for_bundling)
set(ARROW_BUNDLED_STATIC_LIBS
"${ARROW_BUNDLED_STATIC_LIBS}"
PARENT_SCOPE)
Expand Down
18 changes: 9 additions & 9 deletions cpp/thirdparty/versions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
# `DEPENDENCIES` array (see the comment on top of the declaration for the
# format).

ARROW_ABSL_BUILD_VERSION=20211102.0
ARROW_ABSL_BUILD_SHA256_CHECKSUM=dcf71b9cba8dc0ca9940c4b316a0c796be8fab42b070bb6b7cab62b48f0e66c4
ARROW_ABSL_BUILD_VERSION=20250127.0
ARROW_ABSL_BUILD_SHA256_CHECKSUM=16242f394245627e508ec6bb296b433c90f8d914f73b9c026fddb905e27276e8
ARROW_AWS_C_AUTH_BUILD_VERSION=v0.9.0
ARROW_AWS_C_AUTH_BUILD_SHA256_CHECKSUM=aa6e98864fefb95c249c100da4ae7aed36ba13a8a91415791ec6fad20bec0427
ARROW_AWS_C_CAL_BUILD_VERSION=v0.9.2
Expand Down Expand Up @@ -72,10 +72,10 @@ ARROW_GFLAGS_BUILD_VERSION=v2.2.2
ARROW_GFLAGS_BUILD_SHA256_CHECKSUM=34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf
ARROW_GLOG_BUILD_VERSION=v0.5.0
ARROW_GLOG_BUILD_SHA256_CHECKSUM=eede71f28371bf39aa69b45de23b329d37214016e2055269b3b5e7cfd40b59f5
ARROW_GOOGLE_CLOUD_CPP_BUILD_VERSION=v2.22.0
ARROW_GOOGLE_CLOUD_CPP_BUILD_SHA256_CHECKSUM=0c68782e57959c82e0c81def805c01460a042c1aae0c2feee905acaa2a2dc9bf
ARROW_GRPC_BUILD_VERSION=v1.46.3
ARROW_GRPC_BUILD_SHA256_CHECKSUM=d6cbf22cb5007af71b61c6be316a79397469c58c82a942552a62e708bce60964
ARROW_GOOGLE_CLOUD_CPP_BUILD_VERSION=v2.46.0
ARROW_GOOGLE_CLOUD_CPP_BUILD_SHA256_CHECKSUM=492734e092e5150d8395797f0d269f3d1e49ba3a959db4a332d15a1f382ff7ee
ARROW_GRPC_BUILD_VERSION=v1.76.0
ARROW_GRPC_BUILD_SHA256_CHECKSUM=0af37b800953130b47c075b56683ee60bdc3eda3c37fc6004193f5b569758204
ARROW_GTEST_BUILD_VERSION=1.17.0
ARROW_GTEST_BUILD_SHA256_CHECKSUM=65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c
ARROW_JEMALLOC_BUILD_VERSION=5.3.0
Expand All @@ -92,8 +92,8 @@ ARROW_OPENTELEMETRY_PROTO_BUILD_VERSION=v1.7.0
ARROW_OPENTELEMETRY_PROTO_BUILD_SHA256_CHECKSUM=11330d850f5e24d34c4246bc8cb21fcd311e7565d219195713455a576bb11bed
ARROW_ORC_BUILD_VERSION=2.2.1
ARROW_ORC_BUILD_SHA256_CHECKSUM=52fc762332442e8b05d7182f8c035f9e04d945b9a52be22ab69f28b3f37d4500
ARROW_PROTOBUF_BUILD_VERSION=v21.3
ARROW_PROTOBUF_BUILD_SHA256_CHECKSUM=2f723218f6cb709ae4cdc4fb5ed56a5951fc5d466f0128ce4c946b8c78c8c49f
ARROW_PROTOBUF_BUILD_VERSION=v31.1
ARROW_PROTOBUF_BUILD_SHA256_CHECKSUM=12bfd76d27b9ac3d65c00966901609e020481b9474ef75c7ff4601ac06fa0b82
# Because of https://github.com/Tencent/rapidjson/pull/1323, we require
# a pre-release version of RapidJSON to build with GCC 8 without
# warnings.
Expand Down Expand Up @@ -160,7 +160,7 @@ DEPENDENCIES=(
"ARROW_OPENTELEMETRY_URL opentelemetry-cpp-${ARROW_OPENTELEMETRY_BUILD_VERSION}.tar.gz https://github.com/open-telemetry/opentelemetry-cpp/archive/refs/tags/${ARROW_OPENTELEMETRY_BUILD_VERSION}.tar.gz"
"ARROW_OPENTELEMETRY_PROTO_URL opentelemetry-proto-${ARROW_OPENTELEMETRY_PROTO_BUILD_VERSION}.tar.gz https://github.com/open-telemetry/opentelemetry-proto/archive/refs/tags/${ARROW_OPENTELEMETRY_PROTO_BUILD_VERSION}.tar.gz"
"ARROW_ORC_URL orc-${ARROW_ORC_BUILD_VERSION}.tar.gz https://www.apache.org/dyn/closer.lua/orc/orc-${ARROW_ORC_BUILD_VERSION}/orc-${ARROW_ORC_BUILD_VERSION}.tar.gz?action=download"
"ARROW_PROTOBUF_URL protobuf-${ARROW_PROTOBUF_BUILD_VERSION}.tar.gz https://github.com/google/protobuf/releases/download/${ARROW_PROTOBUF_BUILD_VERSION}/protobuf-all-${ARROW_PROTOBUF_BUILD_VERSION:1}.tar.gz"
"ARROW_PROTOBUF_URL protobuf-${ARROW_PROTOBUF_BUILD_VERSION}.tar.gz https://github.com/google/protobuf/releases/download/${ARROW_PROTOBUF_BUILD_VERSION}/protobuf-${ARROW_PROTOBUF_BUILD_VERSION:1}.tar.gz"
"ARROW_RAPIDJSON_URL rapidjson-${ARROW_RAPIDJSON_BUILD_VERSION}.tar.gz https://github.com/miloyip/rapidjson/archive/${ARROW_RAPIDJSON_BUILD_VERSION}.tar.gz"
"ARROW_RE2_URL re2-${ARROW_RE2_BUILD_VERSION}.tar.gz https://github.com/google/re2/archive/${ARROW_RE2_BUILD_VERSION}.tar.gz"
"ARROW_S2N_TLS_URL s2n-${ARROW_S2N_TLS_BUILD_VERSION}.tar.gz https://github.com/aws/s2n-tls/archive/${ARROW_S2N_TLS_BUILD_VERSION}.tar.gz"
Expand Down
Loading