You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2019/01/31 17:04:44 UTC
[arrow] branch master updated: ARROW-4431: [C++] Fixes for gRPC
vendored builds
This is an automated email from the ASF dual-hosted git repository.
wesm 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 36e26fe ARROW-4431: [C++] Fixes for gRPC vendored builds
36e26fe is described below
commit 36e26fe473ab776982a52861bbc6875431abae7c
Author: Wes McKinney <we...@apache.org>
AuthorDate: Thu Jan 31 11:04:36 2019 -0600
ARROW-4431: [C++] Fixes for gRPC vendored builds
This enables Arrow Flight to build gRPC successfully from ExternalProject both with all dependencies being built from EP or from provided packages via _HOME variables.
Author: Wes McKinney <we...@apache.org>
Closes #3527 from pitrou/grpc-vendored-fixes and squashes the following commits:
fb8fdf33c <Wes McKinney> No more verbose build in CI
d84b9190e <Wes McKinney> Restore all builds
c778bece6 <Wes McKinney> Revert vendored Boost changes
65ac53d63 <Wes McKinney> Revert Boost link order
d5b8f547d <Wes McKinney> Try removing SYSTEM
7563955c1 <Wes McKinney> Verbose build again
1880bfa59 <Wes McKinney> Fix Boost include dir
dd4f1eb5e <Wes McKinney> debugging
369f0e520 <Wes McKinney> Use verbose makefile for debugging
accaeb036 <Wes McKinney> verbose windows build for debugging
318181333 <Wes McKinney> Use BEFORE SYSTEM with vendored Boost headers
0a2f9673b <Wes McKinney> More tweaks / fixed
f2db99a74 <Wes McKinney> Change Boost library include order
ad994b16d <Wes McKinney> Fix brotli library locations after refactor
73405450e <Wes McKinney> Fix Brotli headers copy step
3140b3c6d <Wes McKinney> Quote thirdparty install prefixes, verbose thirdparty build in MSVC
024a2dca6 <Wes McKinney> Fixes for gRPC vendored builds
---
.travis.yml | 1 +
ci/cpp-msvc-build-main.bat | 2 +
cpp/cmake_modules/ThirdpartyToolchain.cmake | 369 ++++++++++++++++++----------
cpp/src/arrow/flight/CMakeLists.txt | 4 +-
cpp/src/arrow/flight/perf-server.cc | 2 +
cpp/src/arrow/memory_pool.cc | 2 +-
cpp/thirdparty/versions.txt | 4 +-
7 files changed, 254 insertions(+), 130 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 26d3892..c037cd5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -188,6 +188,7 @@ matrix:
- ARROW_TRAVIS_GANDIVA=1
- ARROW_TRAVIS_GANDIVA_JAVA=1
- ARROW_TRAVIS_OPTIONAL_INSTALL=1
+ - ARROW_TRAVIS_VERBOSE=0
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
# ARROW-3803: The Xcode 8.3 image has Boost libraries in /usr/local/lib
# which can get loaded before the toolchain Boost libraries. These seem to
diff --git a/ci/cpp-msvc-build-main.bat b/ci/cpp-msvc-build-main.bat
index c36c6bd..ccd64e3 100644
--- a/ci/cpp-msvc-build-main.bat
+++ b/ci/cpp-msvc-build-main.bat
@@ -51,6 +51,8 @@ cmake -G "%GENERATOR%" %CMAKE_ARGS% ^
-DARROW_BUILD_STATIC=OFF ^
-DARROW_BUILD_TESTS=ON ^
-DARROW_BUILD_EXAMPLES=ON ^
+ -DARROW_BUILD_EXAMPLES=ON ^
+ -DARROW_VERBOSE_THIRDPARTY_BUILD=ON ^
-DARROW_CXXFLAGS="%ARROW_CXXFLAGS%" ^
-DCMAKE_CXX_FLAGS_RELEASE="/MD %CMAKE_CXX_FLAGS_RELEASE%" ^
-DARROW_PARQUET=ON ^
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 606b476..ce5073f 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -17,6 +17,8 @@
add_custom_target(toolchain)
+set(THIRDPARTY_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_thirdparty")
+
# ----------------------------------------------------------------------
# Toolchain linkage options
@@ -151,6 +153,18 @@ else()
set(ARROW_WITH_THRIFT OFF)
endif()
+if (ARROW_FLIGHT)
+ set(ARROW_WITH_GRPC ON)
+endif()
+
+if (ARROW_FLIGHT OR ARROW_IPC)
+ set(ARROW_WITH_RAPIDJSON ON)
+endif()
+
+if (ARROW_ORC OR ARROW_FLIGHT OR ARROW_GANDIVA)
+ set(ARROW_WITH_PROTOBUF ON)
+endif()
+
# ----------------------------------------------------------------------
# Versions and URLs for toolchain builds, which also can be used to configure
# offline builds
@@ -191,6 +205,12 @@ else()
set(BROTLI_SOURCE_URL "https://github.com/google/brotli/archive/${BROTLI_VERSION}.tar.gz")
endif()
+if (DEFINED ENV{ARROW_CARES_URL})
+ set(CARES_SOURCE_URL "$ENV{ARROW_CARES_URL}")
+else()
+ set(CARES_SOURCE_URL "https://c-ares.haxx.se/download/c-ares-${CARES_VERSION}.tar.gz")
+endif()
+
if (DEFINED ENV{ARROW_DOUBLE_CONVERSION_URL})
set(DOUBLE_CONVERSION_SOURCE_URL "$ENV{ARROW_DOUBLE_CONVERSION_URL}")
else()
@@ -487,7 +507,7 @@ else()
endif()
endif()
-message(STATUS "Boost include dir: " ${Boost_INCLUDE_DIRS})
+message(STATUS "Boost include dir: " ${Boost_INCLUDE_DIR})
message(STATUS "Boost libraries: " ${Boost_LIBRARIES})
if (NOT ARROW_BOOST_HEADER_ONLY)
@@ -512,17 +532,17 @@ include_directories(SYSTEM ${Boost_INCLUDE_DIR})
# Google double-conversion
if("${DOUBLE_CONVERSION_HOME}" STREQUAL "")
- set(DOUBLE_CONVERSION_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/double-conversion_ep/src/double-conversion_ep")
- set(DOUBLE_CONVERSION_HOME "${DOUBLE_CONVERSION_PREFIX}")
- set(DOUBLE_CONVERSION_INCLUDE_DIR "${DOUBLE_CONVERSION_PREFIX}/include")
- set(DOUBLE_CONVERSION_STATIC_LIB "${DOUBLE_CONVERSION_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}double-conversion${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(DOUBLE_CONVERSION_HOME "${THIRDPARTY_PREFIX}")
+ set(DOUBLE_CONVERSION_INCLUDE_DIR "${THIRDPARTY_PREFIX}/include")
+ set(DOUBLE_CONVERSION_STATIC_LIB "${THIRDPARTY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}double-conversion${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(DOUBLE_CONVERSION_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${DOUBLE_CONVERSION_PREFIX})
+ set(DOUBLE_CONVERSION_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ "-DCMAKE_INSTALL_PREFIX=${THIRDPARTY_PREFIX}")
ExternalProject_Add(double-conversion_ep
${EP_LOG_OPTIONS}
- INSTALL_DIR ${DOUBLE_CONVERSION_PREFIX}
+ INSTALL_DIR ${THIRDPARTY_PREFIX}
URL ${DOUBLE_CONVERSION_SOURCE_URL}
CMAKE_ARGS ${DOUBLE_CONVERSION_CMAKE_ARGS}
BUILD_BYPRODUCTS "${DOUBLE_CONVERSION_STATIC_LIB}")
@@ -552,12 +572,20 @@ message(STATUS "double-conversion static library: ${DOUBLE_CONVERSION_STATIC_LIB
# ----------------------------------------------------------------------
# gflags
-if(ARROW_BUILD_TESTS OR
- ARROW_BUILD_BENCHMARKS OR
- (ARROW_USE_GLOG AND GLOG_HOME))
+if (ARROW_BUILD_TESTS OR
+ ARROW_BUILD_BENCHMARKS OR
+ (ARROW_USE_GLOG AND GLOG_HOME) OR
+ (ARROW_WITH_GRPC AND NOT GRPC_HOME))
+ set(ARROW_NEED_GFLAGS 1)
+else()
+ set(ARROW_NEED_GFLAGS 0)
+endif()
+
+if(ARROW_NEED_GFLAGS)
# gflags (formerly Googleflags) command line parsing
if("${GFLAGS_HOME}" STREQUAL "")
- set(GFLAGS_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gflags_ep-prefix/src/gflags_ep")
+ set(GFLAGS_CMAKE_CXX_FLAGS ${EP_CXX_FLAGS})
+ set(GFLAGS_PREFIX "${THIRDPARTY_PREFIX}")
set(GFLAGS_HOME "${GFLAGS_PREFIX}")
set(GFLAGS_INCLUDE_DIR "${GFLAGS_PREFIX}/include")
if(MSVC)
@@ -567,7 +595,7 @@ if(ARROW_BUILD_TESTS OR
endif()
set(GFLAGS_VENDORED 1)
set(GFLAGS_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${GFLAGS_PREFIX}
+ "-DCMAKE_INSTALL_PREFIX=${GFLAGS_PREFIX}"
-DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON
-DBUILD_PACKAGING=OFF
@@ -615,7 +643,7 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
-Wno-ignored-attributes)
endif()
- set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/googletest_ep-prefix/src/googletest_ep")
+ set(GTEST_PREFIX "${THIRDPARTY_PREFIX}")
set(GTEST_INCLUDE_DIR "${GTEST_PREFIX}/include")
set(GTEST_STATIC_LIB
"${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
@@ -623,8 +651,8 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
"${GTEST_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(GTEST_VENDORED 1)
set(GTEST_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${GTEST_PREFIX}
- -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS})
+ "-DCMAKE_INSTALL_PREFIX=${GTEST_PREFIX}"
+ -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS})
if (MSVC AND NOT ARROW_USE_STATIC_CRT)
set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS} -Dgtest_force_shared_crt=ON)
endif()
@@ -679,14 +707,14 @@ if(ARROW_BUILD_BENCHMARKS)
set(GBENCHMARK_CMAKE_CXX_FLAGS "${GBENCHMARK_CMAKE_CXX_FLAGS} -stdlib=libc++")
endif()
- set(GBENCHMARK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gbenchmark_ep/src/gbenchmark_ep-install")
+ set(GBENCHMARK_PREFIX "${THIRDPARTY_PREFIX}")
set(GBENCHMARK_INCLUDE_DIR "${GBENCHMARK_PREFIX}/include")
set(GBENCHMARK_STATIC_LIB "${GBENCHMARK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}benchmark${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(GBENCHMARK_VENDORED 1)
set(GBENCHMARK_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${GBENCHMARK_PREFIX}
- -DBENCHMARK_ENABLE_TESTING=OFF
- -DCMAKE_CXX_FLAGS=${GBENCHMARK_CMAKE_CXX_FLAGS})
+ "-DCMAKE_INSTALL_PREFIX=${GBENCHMARK_PREFIX}"
+ -DBENCHMARK_ENABLE_TESTING=OFF
+ -DCMAKE_CXX_FLAGS=${GBENCHMARK_CMAKE_CXX_FLAGS})
if (APPLE)
set(GBENCHMARK_CMAKE_ARGS ${GBENCHMARK_CMAKE_ARGS} "-DBENCHMARK_USE_LIBCXX=ON")
endif()
@@ -712,21 +740,24 @@ if(ARROW_BUILD_BENCHMARKS)
endif()
endif()
-if (ARROW_IPC)
+if (ARROW_WITH_RAPIDJSON)
# RapidJSON, header only dependency
if("${RAPIDJSON_HOME}" STREQUAL "")
+ set(RAPIDJSON_HOME "${THIRDPARTY_PREFIX}")
+ set(RAPIDJSON_CMAKE_ARGS
+ -DRAPIDJSON_BUILD_DOC=OFF
+ -DRAPIDJSON_BUILD_EXAMPLES=OFF
+ -DRAPIDJSON_BUILD_TESTS=OFF
+ "-DCMAKE_INSTALL_PREFIX=${THIRDPARTY_PREFIX}")
+
ExternalProject_Add(rapidjson_ep
+ ${EP_LOG_OPTIONS}
PREFIX "${CMAKE_BINARY_DIR}"
URL ${RAPIDJSON_SOURCE_URL}
URL_MD5 ${RAPIDJSON_SOURCE_MD5}
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- BUILD_IN_SOURCE 1
- ${EP_LOG_OPTIONS}
- INSTALL_COMMAND "")
+ CMAKE_ARGS ${RAPIDJSON_CMAKE_ARGS})
- ExternalProject_Get_Property(rapidjson_ep SOURCE_DIR)
- set(RAPIDJSON_INCLUDE_DIR "${SOURCE_DIR}/include")
+ set(RAPIDJSON_INCLUDE_DIR "${RAPIDJSON_HOME}/include")
set(RAPIDJSON_VENDORED 1)
add_dependencies(toolchain rapidjson_ep)
else()
@@ -738,8 +769,9 @@ if (ARROW_IPC)
## Flatbuffers
if("${FLATBUFFERS_HOME}" STREQUAL "")
- set(FLATBUFFERS_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/flatbuffers_ep-prefix/src/flatbuffers_ep-install")
set(FLATBUFFERS_CMAKE_CXX_FLAGS ${EP_CXX_FLAGS})
+ set(FLATBUFFERS_PREFIX "${THIRDPARTY_PREFIX}")
+
if (MSVC)
set(FLATBUFFERS_CMAKE_CXX_FLAGS "/EHsc")
endif()
@@ -747,10 +779,10 @@ if (ARROW_IPC)
# RELEASE build is required for `flatc` to be installed.
set(FLATBUFFERS_BUILD_TYPE RELEASE)
set(FLATBUFFERS_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_BUILD_TYPE=${FLATBUFFERS_BUILD_TYPE}
- -DCMAKE_INSTALL_PREFIX=${FLATBUFFERS_PREFIX}
- -DCMAKE_CXX_FLAGS=${FLATBUFFERS_CMAKE_CXX_FLAGS}
- -DFLATBUFFERS_BUILD_TESTS=OFF)
+ -DCMAKE_BUILD_TYPE=${FLATBUFFERS_BUILD_TYPE}
+ -DCMAKE_INSTALL_PREFIX=${FLATBUFFERS_PREFIX}
+ -DCMAKE_CXX_FLAGS=${FLATBUFFERS_CMAKE_CXX_FLAGS}
+ -DFLATBUFFERS_BUILD_TESTS=OFF)
ExternalProject_Add(flatbuffers_ep
URL ${FLATBUFFERS_SOURCE_URL}
@@ -785,7 +817,7 @@ if (ARROW_JEMALLOC)
# find_package(jemalloc)
set(ARROW_JEMALLOC_USE_SHARED OFF)
- set(JEMALLOC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src/jemalloc_ep/dist/")
+ set(JEMALLOC_PREFIX "${THIRDPARTY_PREFIX}")
set(JEMALLOC_HOME "${JEMALLOC_PREFIX}")
set(JEMALLOC_INCLUDE_DIR "${JEMALLOC_PREFIX}/include")
set(JEMALLOC_SHARED_LIB "${JEMALLOC_PREFIX}/lib/libjemalloc${CMAKE_SHARED_LIBRARY_SUFFIX}")
@@ -804,7 +836,8 @@ if (ARROW_JEMALLOC)
# Don't use the include directory directly so that we can point to a path
# that is unique to our codebase.
- include_directories(SYSTEM "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src/")
+ include_directories(SYSTEM "${CMAKE_CURRENT_BINARY_DIR}")
+
ADD_THIRDPARTY_LIB(jemalloc
STATIC_LIB ${JEMALLOC_STATIC_LIB}
SHARED_LIB ${JEMALLOC_SHARED_LIB}
@@ -865,7 +898,7 @@ if (ARROW_WITH_ZLIB)
ADD_THIRDPARTY_LIB(zlib SHARED_LIB ${ZLIB_SHARED_LIB})
set(ZLIB_LIBRARY zlib_shared)
else()
- set(ZLIB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep/src/zlib_ep-install")
+ set(ZLIB_PREFIX "${THIRDPARTY_PREFIX}")
set(ZLIB_HOME "${ZLIB_PREFIX}")
set(ZLIB_INCLUDE_DIR "${ZLIB_PREFIX}/include")
if (MSVC)
@@ -879,8 +912,8 @@ if (ARROW_WITH_ZLIB)
endif()
set(ZLIB_STATIC_LIB "${ZLIB_PREFIX}/lib/${ZLIB_STATIC_LIB_NAME}")
set(ZLIB_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${ZLIB_PREFIX}
- -DBUILD_SHARED_LIBS=OFF)
+ "-DCMAKE_INSTALL_PREFIX=${ZLIB_PREFIX}"
+ -DBUILD_SHARED_LIBS=OFF)
ADD_THIRDPARTY_LIB(zlib
STATIC_LIB ${ZLIB_STATIC_LIB})
set(ZLIB_LIBRARY zlib_static)
@@ -901,7 +934,7 @@ if (ARROW_WITH_SNAPPY)
# Snappy
if("${SNAPPY_HOME}" STREQUAL "")
- set(SNAPPY_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/snappy_ep/src/snappy_ep-install")
+ set(SNAPPY_PREFIX "${THIRDPARTY_PREFIX}")
set(SNAPPY_HOME "${SNAPPY_PREFIX}")
set(SNAPPY_INCLUDE_DIR "${SNAPPY_PREFIX}/include")
if (MSVC)
@@ -921,9 +954,9 @@ if (ARROW_WITH_SNAPPY)
if (WIN32)
set(SNAPPY_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_AR=${CMAKE_AR}
- -DCMAKE_RANLIB=${CMAKE_RANLIB}
- -DCMAKE_INSTALL_PREFIX=${SNAPPY_PREFIX})
+ -DCMAKE_AR=${CMAKE_AR}
+ -DCMAKE_RANLIB=${CMAKE_RANLIB}
+ "-DCMAKE_INSTALL_PREFIX=${SNAPPY_PREFIX}")
set(SNAPPY_UPDATE_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/cmake_modules/SnappyCMakeLists.txt
./CMakeLists.txt &&
@@ -969,7 +1002,7 @@ if (ARROW_WITH_BROTLI)
# Brotli
if("${BROTLI_HOME}" STREQUAL "")
- set(BROTLI_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/brotli_ep/src/brotli_ep-install")
+ set(BROTLI_PREFIX "${THIRDPARTY_PREFIX}")
set(BROTLI_HOME "${BROTLI_PREFIX}")
set(BROTLI_INCLUDE_DIR "${BROTLI_PREFIX}/include")
if (MSVC)
@@ -977,13 +1010,13 @@ if (ARROW_WITH_BROTLI)
else()
set(BROTLI_LIB_DIR lib)
endif()
- set(BROTLI_STATIC_LIBRARY_ENC "${BROTLI_PREFIX}/${BROTLI_LIB_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(BROTLI_STATIC_LIBRARY_DEC "${BROTLI_PREFIX}/${BROTLI_LIB_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(BROTLI_STATIC_LIBRARY_COMMON "${BROTLI_PREFIX}/${BROTLI_LIB_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(BROTLI_STATIC_LIBRARY_ENC "${BROTLI_PREFIX}/${BROTLI_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(BROTLI_STATIC_LIBRARY_DEC "${BROTLI_PREFIX}/${BROTLI_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(BROTLI_STATIC_LIBRARY_COMMON "${BROTLI_PREFIX}/${BROTLI_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(BROTLI_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}
- -DCMAKE_INSTALL_LIBDIR=lib/${CMAKE_LIBRARY_ARCHITECTURE}
- -DBUILD_SHARED_LIBS=OFF)
+ "-DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}"
+ -DCMAKE_INSTALL_LIBDIR=lib
+ -DBUILD_SHARED_LIBS=OFF)
ExternalProject_Add(brotli_ep
URL ${BROTLI_SOURCE_URL}
@@ -996,7 +1029,7 @@ if (ARROW_WITH_BROTLI)
ExternalProject_Get_Property(brotli_ep SOURCE_DIR)
ExternalProject_Add_Step(brotli_ep headers_copy
- COMMAND xcopy /E /I include ..\\..\\..\\brotli_ep\\src\\brotli_ep-install\\include /Y
+ COMMAND xcopy /E /I include ..\\..\\..\\arrow_thirdparty\\include /Y
DEPENDEES build
WORKING_DIRECTORY ${SOURCE_DIR})
endif()
@@ -1094,16 +1127,16 @@ if (ARROW_WITH_ZSTD)
# ZSTD
if("${ZSTD_HOME}" STREQUAL "")
- set(ZSTD_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zstd_ep-install")
+ set(ZSTD_PREFIX "${THIRDPARTY_PREFIX}")
set(ZSTD_INCLUDE_DIR "${ZSTD_PREFIX}/include")
set(ZSTD_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
- -DCMAKE_INSTALL_PREFIX=${ZSTD_PREFIX}
- -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
- -DZSTD_BUILD_PROGRAMS=off
- -DZSTD_BUILD_SHARED=off
- -DZSTD_BUILD_STATIC=on
- -DZSTD_MULTITHREAD_SUPPORT=off)
+ "-DCMAKE_INSTALL_PREFIX=${ZSTD_PREFIX}"
+ -DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
+ -DZSTD_BUILD_PROGRAMS=off
+ -DZSTD_BUILD_SHARED=off
+ -DZSTD_BUILD_STATIC=on
+ -DZSTD_MULTITHREAD_SUPPORT=off)
if (MSVC)
set(ZSTD_STATIC_LIB "${ZSTD_PREFIX}/${CMAKE_INSTALL_LIBDIR}/zstd_static.lib")
@@ -1154,13 +1187,13 @@ endif()
if (ARROW_GANDIVA)
# re2
if ("${RE2_HOME}" STREQUAL "")
- set (RE2_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/re2_ep-install")
+ set (RE2_PREFIX "${THIRDPARTY_PREFIX}")
set (RE2_HOME "${RE2_PREFIX}")
set (RE2_INCLUDE_DIR "${RE2_PREFIX}/include")
set (RE2_STATIC_LIB "${RE2_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}re2${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(RE2_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${RE2_PREFIX})
+ "-DCMAKE_INSTALL_PREFIX=${RE2_PREFIX}")
ExternalProject_Add(re2_ep
${EP_LOG_OPTIONS}
@@ -1192,10 +1225,10 @@ endif ()
# ----------------------------------------------------------------------
# Protocol Buffers (required for ORC and Flight and Gandiva libraries)
-if (ARROW_ORC OR ARROW_FLIGHT OR ARROW_GANDIVA)
+if (ARROW_WITH_PROTOBUF)
# protobuf
if ("${PROTOBUF_HOME}" STREQUAL "")
- set (PROTOBUF_PREFIX "${THIRDPARTY_DIR}/protobuf_ep-install")
+ set (PROTOBUF_PREFIX "${THIRDPARTY_PREFIX}")
set (PROTOBUF_HOME "${PROTOBUF_PREFIX}")
set (PROTOBUF_INCLUDE_DIR "${PROTOBUF_PREFIX}/include")
set (PROTOBUF_STATIC_LIB "${PROTOBUF_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}protobuf${CMAKE_STATIC_LIBRARY_SUFFIX}")
@@ -1240,53 +1273,135 @@ endif()
# ----------------------------------------------------------------------
# Dependencies for Arrow Flight RPC
-if (ARROW_FLIGHT)
+if (ARROW_WITH_GRPC)
+ if ("${CARES_HOME}" STREQUAL "")
+ set(CARES_VENDORED 1)
+ set(CARES_PREFIX "${THIRDPARTY_PREFIX}")
+ set(CARES_HOME "${CARES_PREFIX}")
+ set(CARES_INCLUDE_DIR "${CARES_PREFIX}/include")
+
+ # If you set -DCARES_SHARED=ON then the build system names the library
+ # libcares_static.a
+ set(CARES_STATIC_LIB "${CARES_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}cares${CMAKE_STATIC_LIBRARY_SUFFIX}")
+
+ set(CARES_CMAKE_ARGS
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCARES_STATIC=ON
+ -DCARES_SHARED=OFF
+ "-DCMAKE_C_FLAGS=${EP_C_FLAGS}"
+ "-DCMAKE_INSTALL_PREFIX=${CARES_PREFIX}")
+
+ ExternalProject_Add(cares_ep
+ ${EP_LOG_OPTIONS}
+ URL ${CARES_SOURCE_URL}
+ CMAKE_ARGS ${CARES_CMAKE_ARGS}
+ BUILD_BYPRODUCTS "${CARES_STATIC_LIB}")
+ else()
+ set(CARES_VENDORED 0)
+ find_package(c-ares REQUIRED
+ PATHS ${CARES_HOME}
+ NO_DEFAULT_PATH)
+ if(TARGET c-ares::cares)
+ get_property(CARES_STATIC_LIB TARGET c-ares::cares_static PROPERTY LOCATION)
+ endif()
+ endif()
+ message(STATUS "c-ares library: ${CARES_STATIC_LIB}")
+
+ add_custom_target(grpc)
+
if ("${GRPC_HOME}" STREQUAL "")
set(GRPC_VENDORED 1)
set(GRPC_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/grpc_ep-prefix/src/grpc_ep-build")
- set(GRPC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/grpc_ep/src/grpc_ep-install")
+ set(GRPC_PREFIX "${THIRDPARTY_PREFIX}")
set(GRPC_HOME "${GRPC_PREFIX}")
set(GRPC_INCLUDE_DIR "${GRPC_PREFIX}/include")
- set(GRPC_STATIC_LIBRARY_GPR "${GRPC_BUILD_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gpr${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GRPC_STATIC_LIBRARY_GRPC "${GRPC_BUILD_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}grpc${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GRPC_STATIC_LIBRARY_GRPCPP "${GRPC_BUILD_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}grpc++${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GRPC_STATIC_LIBRARY_ADDRESS_SORTING "${GRPC_BUILD_DIR}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}address_sorting${CMAKE_STATIC_LIBRARY_SUFFIX}")
- set(GRPC_STATIC_LIBRARY_CARES "${GRPC_BUILD_DIR}/${CMAKE_CFG_INTDIR}/third_party/cares/cares/lib/${CMAKE_STATIC_LIBRARY_PREFIX}cares${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(GRPC_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${GRPC_PREFIX}
- -DBUILD_SHARED_LIBS=OFF)
+ "-DCMAKE_INSTALL_PREFIX=${GRPC_PREFIX}"
+ -DBUILD_SHARED_LIBS=OFF)
+
+ set(GRPC_STATIC_LIBRARY_GPR "${GRPC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gpr${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GRPC_STATIC_LIBRARY_GRPC "${GRPC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}grpc${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GRPC_STATIC_LIBRARY_GRPCPP "${GRPC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}grpc++${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GRPC_STATIC_LIBRARY_ADDRESS_SORTING "${GRPC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}address_sorting${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GRPC_CPP_PLUGIN "${GRPC_PREFIX}/bin/grpc_cpp_plugin")
+
+ set(GRPC_CMAKE_PREFIX "${THIRDPARTY_PREFIX}")
+
+ add_custom_target(grpc_dependencies)
+
+ if (CARES_VENDORED)
+ add_dependencies(grpc_dependencies cares_ep)
+ else()
+ set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${CARES_HOME}")
+ endif()
+
+ if (GFLAGS_VENDORED)
+ add_dependencies(grpc_dependencies gflags_ep)
+ else()
+ set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GFLAGS_HOME}")
+ endif()
+
+ if (PROTOBUF_VENDORED)
+ add_dependencies(grpc_dependencies protobuf_ep)
+ else()
+ set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${PROTOBUF_HOME}")
+ endif()
+
+ # ZLIB is never vendored
+ if(NOT "${ZLIB_HOME}" STREQUAL "")
+ set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${ZLIB_HOME}")
+ endif()
+
+ if (RAPIDJSON_VENDORED)
+ add_dependencies(grpc_dependencies rapidjson_ep)
+ endif()
+ # Yuck, see https://stackoverflow.com/a/45433229/776560
+ string(REPLACE ";" "|" GRPC_PREFIX_PATH_ALT_SEP "${GRPC_CMAKE_PREFIX}")
+
+ set(GRPC_CMAKE_ARGS
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_PREFIX_PATH="${GRPC_PREFIX_PATH_ALT_SEP}"
+ "-DgRPC_CARES_PROVIDER=package"
+ "-DgRPC_GFLAGS_PROVIDER=package"
+ "-DgRPC_PROTOBUF_PROVIDER=package"
+ "-DgRPC_SSL_PROVIDER=package"
+ "-DgRPC_ZLIB_PROVIDER=package"
+ "-DCMAKE_CXX_FLAGS=${EP_CXX_FLAGS}"
+ "-DCMAKE_C_FLAGS=${EP_C_FLAGS}"
+ "-DCMAKE_INSTALL_PREFIX=${GRPC_PREFIX}"
+ -DCMAKE_INSTALL_LIBDIR=lib
+ -DBUILD_SHARED_LIBS=OFF)
+
+ # XXX the gRPC git checkout is huge and takes a long time
+ # Ideally, we should be able to use the tarballs, but they don't contain
+ # vendored dependencies such as c-ares...
ExternalProject_Add(grpc_ep
- GIT_REPOSITORY "https://github.com/grpc/grpc"
- GIT_TAG ${GRPC_VERSION}
- BUILD_BYPRODUCTS "${GRPC_STATIC_LIBRARY_GPR}" "${GRPC_STATIC_LIBRARY_GRPC}" "${GRPC_STATIC_LIBRARY_GRPCPP}"
- ${GRPC_BUILD_BYPRODUCTS}
- ${EP_LOG_OPTIONS}
+ URL ${GRPC_SOURCE_URL}
+ LIST_SEPARATOR |
+ BUILD_BYPRODUCTS
+ ${GRPC_STATIC_LIBRARY_GPR}
+ ${GRPC_STATIC_LIBRARY_GRPC}
+ ${GRPC_STATIC_LIBRARY_GRPCPP}
+ ${GRPC_STATIC_LIBRARY_ADDRESS_SORTING}
+ ${GRPC_CPP_PLUGIN}
CMAKE_ARGS ${GRPC_CMAKE_ARGS}
${EP_LOG_OPTIONS})
+ add_dependencies(grpc_ep grpc_dependencies)
+
set(GPR_STATIC_LIB "${GRPC_STATIC_LIBRARY_GPR}")
set(GRPC_STATIC_LIB "${GRPC_STATIC_LIBRARY_GRPC}")
set(GRPCPP_STATIC_LIB "${GRPC_STATIC_LIBRARY_GRPCPP}")
set(GRPC_ADDRESS_SORTING_STATIC_LIB "${GRPC_STATIC_LIBRARY_ADDRESS_SORTING}")
- # XXX(wesm): relying on vendored c-ares provided by gRPC for the time being
- set(CARES_STATIC_LIB "${GRPC_STATIC_LIBRARY_CARES}")
- set(GRPC_CPP_PLUGIN "${GRPC_BUILD_DIR}/${CMAKE_CFG_INTDIR}/grpc_cpp_plugin")
+
+ add_dependencies(grpc grpc_ep)
+ add_dependencies(toolchain grpc)
else()
find_package(gRPC REQUIRED)
set(GRPC_VENDORED 0)
endif()
- # If we built gRPC ourselves, we should use its c-ares.
- if ("${CARES_STATIC_LIB}" STREQUAL "")
- if (NOT "${CARES_HOME}" STREQUAL "")
- set(CARES_STATIC_LIB "${CARES_HOME}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}cares_static${CMAKE_STATIC_LIBRARY_SUFFIX}")
- elseif (c-ares_FOUND)
- get_property(CARES_STATIC_LIB TARGET c-ares::cares_static PROPERTY LOCATION)
- endif()
- endif()
- message(STATUS "Found the c-ares library: ${CARES_STATIC_LIB}")
-
if ("${GRPC_CPP_PLUGIN}" STREQUAL "")
message(SEND_ERROR "Please set GRPC_CPP_PLUGIN.")
endif()
@@ -1315,7 +1430,7 @@ endif()
if (ARROW_ORC)
# orc
if ("${ORC_HOME}" STREQUAL "")
- set(ORC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/orc_ep-install")
+ set(ORC_PREFIX "${THIRDPARTY_PREFIX}")
set(ORC_HOME "${ORC_PREFIX}")
set(ORC_INCLUDE_DIR "${ORC_PREFIX}/include")
set(ORC_STATIC_LIB "${ORC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}orc${CMAKE_STATIC_LIBRARY_SUFFIX}")
@@ -1333,18 +1448,18 @@ if (ARROW_ORC)
# ${LZ4_HOME}/include, which forces us to specify the include directory
# manually as well.
set (ORC_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${ORC_PREFIX}
- -DCMAKE_CXX_FLAGS=${ORC_CMAKE_CXX_FLAGS}
- -DBUILD_LIBHDFSPP=OFF
- -DBUILD_JAVA=OFF
- -DBUILD_TOOLS=OFF
- -DBUILD_CPP_TESTS=OFF
- -DINSTALL_VENDORED_LIBS=OFF
- -DPROTOBUF_HOME=${PROTOBUF_HOME}
- -DLZ4_HOME=${LZ4_HOME}
- -DLZ4_INCLUDE_DIR=${LZ4_INCLUDE_DIR}
- -DSNAPPY_HOME=${SNAPPY_HOME}
- -DZLIB_HOME=${ZLIB_HOME})
+ "-DCMAKE_INSTALL_PREFIX=${ORC_PREFIX}"
+ -DCMAKE_CXX_FLAGS=${ORC_CMAKE_CXX_FLAGS}
+ -DBUILD_LIBHDFSPP=OFF
+ -DBUILD_JAVA=OFF
+ -DBUILD_TOOLS=OFF
+ -DBUILD_CPP_TESTS=OFF
+ -DINSTALL_VENDORED_LIBS=OFF
+ -DPROTOBUF_HOME=${PROTOBUF_HOME}
+ -DLZ4_HOME=${LZ4_HOME}
+ -DLZ4_INCLUDE_DIR=${LZ4_INCLUDE_DIR}
+ -DSNAPPY_HOME=${SNAPPY_HOME}
+ -DZLIB_HOME=${ZLIB_HOME})
ExternalProject_Add(orc_ep
URL ${ORC_SOURCE_URL}
@@ -1390,25 +1505,25 @@ if (ARROW_WITH_THRIFT)
find_package(Thrift)
if (NOT THRIFT_FOUND)
- set(THRIFT_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/thrift_ep/src/thrift_ep-install")
+ set(THRIFT_PREFIX "${THIRDPARTY_PREFIX}")
set(THRIFT_HOME "${THRIFT_PREFIX}")
set(THRIFT_INCLUDE_DIR "${THRIFT_PREFIX}/include")
set(THRIFT_COMPILER "${THRIFT_PREFIX}/bin/thrift")
set(THRIFT_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${THRIFT_PREFIX}
- -DCMAKE_INSTALL_RPATH=${THRIFT_PREFIX}/lib
- -DBUILD_SHARED_LIBS=OFF
- -DBUILD_TESTING=OFF
- -DBUILD_EXAMPLES=OFF
- -DBUILD_TUTORIALS=OFF
- -DWITH_QT4=OFF
- -DWITH_C_GLIB=OFF
- -DWITH_JAVA=OFF
- -DWITH_PYTHON=OFF
- -DWITH_HASKELL=OFF
- -DWITH_CPP=ON
- -DWITH_STATIC_LIB=ON
- -DWITH_LIBEVENT=OFF)
+ "-DCMAKE_INSTALL_PREFIX=${THRIFT_PREFIX}"
+ -DCMAKE_INSTALL_RPATH=${THRIFT_PREFIX}/lib
+ -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_TESTING=OFF
+ -DBUILD_EXAMPLES=OFF
+ -DBUILD_TUTORIALS=OFF
+ -DWITH_QT4=OFF
+ -DWITH_C_GLIB=OFF
+ -DWITH_JAVA=OFF
+ -DWITH_PYTHON=OFF
+ -DWITH_HASKELL=OFF
+ -DWITH_CPP=ON
+ -DWITH_STATIC_LIB=ON
+ -DWITH_LIBEVENT=OFF)
# Thrift also uses boost. Forward important boost settings if there were ones passed.
if (DEFINED BOOST_ROOT)
@@ -1444,7 +1559,7 @@ if (NOT THRIFT_FOUND)
if (MSVC)
set(WINFLEXBISON_VERSION 2.4.9)
- set(WINFLEXBISON_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/winflexbison_ep/src/winflexbison_ep-install")
+ set(WINFLEXBISON_PREFIX "${THIRDPARTY_PREFIX}")
ExternalProject_Add(winflexbison_ep
URL https://github.com/lexxmark/winflexbison/releases/download/v.${WINFLEXBISON_VERSION}/win_flex_bison-${WINFLEXBISON_VERSION}.zip
URL_HASH MD5=a2e979ea9928fbf8567e995e9c0df765
@@ -1524,9 +1639,9 @@ endif() # ARROW_HIVESERVER2
if (ARROW_USE_GLOG)
if("${GLOG_HOME}" STREQUAL "")
- set(GLOG_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/glog_ep-prefix/src/glog_ep")
- set(GLOG_INCLUDE_DIR "${GLOG_BUILD_DIR}/include")
- set(GLOG_STATIC_LIB "${GLOG_BUILD_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}glog${CMAKE_STATIC_LIBRARY_SUFFIX}")
+ set(GLOG_PREFIX "${THIRDPARTY_PREFIX}")
+ set(GLOG_INCLUDE_DIR "${GLOG_PREFIX}/include")
+ set(GLOG_STATIC_LIB "${GLOG_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}glog${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(GLOG_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
set(GLOG_CMAKE_C_FLAGS "${EP_C_FLAGS} -fPIC")
if (Threads::Threads)
@@ -1542,13 +1657,13 @@ if (ARROW_USE_GLOG)
endif()
set(GLOG_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS}
- -DCMAKE_INSTALL_PREFIX=${GLOG_BUILD_DIR}
- -DBUILD_SHARED_LIBS=OFF
- -DBUILD_TESTING=OFF
- -DWITH_GFLAGS=OFF
- -DCMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}=${GLOG_CMAKE_CXX_FLAGS}
- -DCMAKE_C_FLAGS_${UPPERCASE_BUILD_TYPE}=${GLOG_CMAKE_C_FLAGS}
- -DCMAKE_CXX_FLAGS=${GLOG_CMAKE_CXX_FLAGS})
+ "-DCMAKE_INSTALL_PREFIX=${GLOG_PREFIX}"
+ -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_TESTING=OFF
+ -DWITH_GFLAGS=OFF
+ -DCMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}=${GLOG_CMAKE_CXX_FLAGS}
+ -DCMAKE_C_FLAGS_${UPPERCASE_BUILD_TYPE}=${GLOG_CMAKE_C_FLAGS}
+ -DCMAKE_CXX_FLAGS=${GLOG_CMAKE_CXX_FLAGS})
message(STATUS "Glog version: ${GLOG_VERSION}")
ExternalProject_Add(glog_ep
URL ${GLOG_SOURCE_URL}
diff --git a/cpp/src/arrow/flight/CMakeLists.txt b/cpp/src/arrow/flight/CMakeLists.txt
index f59ea3c5..b8b4d8d 100644
--- a/cpp/src/arrow/flight/CMakeLists.txt
+++ b/cpp/src/arrow/flight/CMakeLists.txt
@@ -45,7 +45,7 @@ set(FLIGHT_GENERATED_PROTO_FILES
"${CMAKE_CURRENT_BINARY_DIR}/Flight.grpc.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/Flight.grpc.pb.h")
-set(PROTO_DEPENDS ${FLIGHT_PROTO} ${PROTOBUF_LIBRARY})
+set(PROTO_DEPENDS ${FLIGHT_PROTO} ${PROTOBUF_LIBRARY} grpc)
add_custom_command(
OUTPUT ${FLIGHT_GENERATED_PROTO_FILES}
@@ -127,6 +127,7 @@ if (ARROW_BUILD_BENCHMARKS)
perf.pb.cc)
target_link_libraries(flight-perf-server
arrow_flight_static
+ arrow_testing_static
${ARROW_FLIGHT_STATIC_LINK_LIBS}
gflags_static
${GTEST_LIBRARY})
@@ -136,6 +137,7 @@ if (ARROW_BUILD_BENCHMARKS)
perf.pb.cc)
target_link_libraries(flight-benchmark
arrow_flight_static
+ arrow_testing_static
${ARROW_FLIGHT_STATIC_LINK_LIBS}
gflags_static
${GTEST_LIBRARY})
diff --git a/cpp/src/arrow/flight/perf-server.cc b/cpp/src/arrow/flight/perf-server.cc
index ce2ec7b..add5442 100644
--- a/cpp/src/arrow/flight/perf-server.cc
+++ b/cpp/src/arrow/flight/perf-server.cc
@@ -69,6 +69,8 @@ class PerfDataStream : public FlightDataStream {
batch_ = RecordBatch::Make(schema, batch_length_, arrays_);
}
+ std::shared_ptr<Schema> schema() override { return schema_; }
+
Status Next(IpcPayload* payload) override {
if (records_sent_ >= total_records_) {
// Signal that iteration is over
diff --git a/cpp/src/arrow/memory_pool.cc b/cpp/src/arrow/memory_pool.cc
index 3e0366a..103771b 100644
--- a/cpp/src/arrow/memory_pool.cc
+++ b/cpp/src/arrow/memory_pool.cc
@@ -32,7 +32,7 @@
// Needed to support jemalloc 3 and 4
#define JEMALLOC_MANGLE
// Explicitly link to our version of jemalloc
-#include "jemalloc_ep/dist/include/jemalloc/jemalloc.h"
+#include "arrow_thirdparty/include/jemalloc/jemalloc.h"
#endif
namespace arrow {
diff --git a/cpp/thirdparty/versions.txt b/cpp/thirdparty/versions.txt
index a2393b6..00cd31e 100644
--- a/cpp/thirdparty/versions.txt
+++ b/cpp/thirdparty/versions.txt
@@ -25,12 +25,13 @@
BOOST_VERSION=1.67.0
BROTLI_VERSION=v0.6.0
+CARES_VERSION=1.15.0
DOUBLE_CONVERSION_VERSION=v3.1.1
FLATBUFFERS_VERSION=02a7807dd8d26f5668ffbbec0360dc107bbfabd5
GBENCHMARK_VERSION=v1.4.1
GFLAGS_VERSION=v2.2.0
GLOG_VERSION=v0.3.5
-GRPC_VERSION=v1.14.1
+GRPC_VERSION=v1.18.0
GTEST_VERSION=1.8.0
JEMALLOC_VERSION=17c897976c60b0e6e4f4a365c751027244dada7a
LZ4_VERSION=v1.7.5
@@ -50,6 +51,7 @@ ZSTD_VERSION=v1.3.7
DEPENDENCIES=(
"ARROW_BOOST_URL boost-${BOOST_VERSION}.tar.gz https://dl.bintray.com/boostorg/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION//./_}.tar.gz"
"ARROW_BROTLI_URL brotli-${BROTLI_VERSION}.tar.gz https://github.com/google/brotli/archive/${BROTLI_VERSION}.tar.gz"
+ "ARROW_CARES_URL cares-${CARES_VERSION}.tar.gz https://c-ares.haxx.se/download/c-ares-$CARES_VERSION.tar.gz"
"ARROW_DOUBLE_CONVERSION_URL double-conversion-${DOUBLE_CONVERSION_VERSION}.tar.gz https://github.com/google/double-conversion/archive/${DOUBLE_CONVERSION_VERSION}.tar.gz"
"ARROW_FLATBUFFERS_URL flatbuffers-${FLATBUFFERS_VERSION}.tar.gz https://github.com/google/flatbuffers/archive/${FLATBUFFERS_VERSION}.tar.gz"
"ARROW_GBENCHMARK_URL gbenchmark-${GBENCHMARK_VERSION}.tar.gz https://github.com/google/benchmark/archive/${GBENCHMARK_VERSION}.tar.gz"