|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include(ProcessorCount) |
|
processorcount(NPROC) |
|
|
|
|
|
|
|
|
|
|
|
set(ARROW_BUNDLED_STATIC_LIBS) |
|
|
|
|
|
|
|
set(ARROW_SYSTEM_DEPENDENCIES) |
|
set(ARROW_FLIGHT_SYSTEM_DEPENDENCIES) |
|
set(ARROW_TESTING_SYSTEM_DEPENDENCIES) |
|
set(PARQUET_SYSTEM_DEPENDENCIES) |
|
|
|
|
|
|
|
|
|
set(ARROW_RE2_LINKAGE |
|
"static" |
|
CACHE STRING "How to link the re2 library. static|shared (default static)") |
|
|
|
|
|
|
|
|
|
set(ARROW_THIRDPARTY_DEPENDENCIES |
|
absl |
|
AWSSDK |
|
Azure |
|
benchmark |
|
Boost |
|
Brotli |
|
BZip2 |
|
c-ares |
|
gflags |
|
glog |
|
google_cloud_cpp_storage |
|
gRPC |
|
GTest |
|
jemalloc |
|
LLVM |
|
lz4 |
|
nlohmann_json |
|
opentelemetry-cpp |
|
orc |
|
re2 |
|
Protobuf |
|
RapidJSON |
|
Snappy |
|
Substrait |
|
Thrift |
|
ucx |
|
utf8proc |
|
xsimd |
|
ZLIB |
|
zstd) |
|
|
|
|
|
|
|
|
|
|
|
if("${Boost_SOURCE}" STREQUAL "" AND NOT "${BOOST_SOURCE}" STREQUAL "") |
|
set(Boost_SOURCE ${BOOST_SOURCE}) |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
if("${re2_SOURCE}" STREQUAL "" AND NOT "${RE2_SOURCE}" STREQUAL "") |
|
set(re2_SOURCE ${RE2_SOURCE}) |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
if("${orc_SOURCE}" STREQUAL "" AND NOT "${ORC_SOURCE}" STREQUAL "") |
|
set(orc_SOURCE ${ORC_SOURCE}) |
|
endif() |
|
|
|
|
|
|
|
if("${re2_ROOT}" STREQUAL "" AND NOT "${RE2_ROOT}" STREQUAL "") |
|
set(re2_ROOT ${RE2_ROOT}) |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
if("${lz4_SOURCE}" STREQUAL "" AND NOT "${Lz4_SOURCE}" STREQUAL "") |
|
set(lz4_SOURCE ${Lz4_SOURCE}) |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
if("${glog_SOURCE}" STREQUAL "" AND NOT "${GLOG_SOURCE}" STREQUAL "") |
|
set(glog_SOURCE ${GLOG_SOURCE}) |
|
endif() |
|
|
|
|
|
if("${jemalloc_SOURCE}" STREQUAL "") |
|
set(jemalloc_SOURCE "BUNDLED") |
|
endif() |
|
|
|
message(STATUS "Using ${ARROW_DEPENDENCY_SOURCE} approach to find dependencies") |
|
|
|
if(ARROW_DEPENDENCY_SOURCE STREQUAL "CONDA") |
|
if(MSVC) |
|
set(ARROW_PACKAGE_PREFIX "$ENV{CONDA_PREFIX}/Library") |
|
else() |
|
set(ARROW_PACKAGE_PREFIX $ENV{CONDA_PREFIX}) |
|
endif() |
|
set(ARROW_ACTUAL_DEPENDENCY_SOURCE "SYSTEM") |
|
|
|
|
|
if("${GTest_SOURCE}" STREQUAL "") |
|
set(GTest_SOURCE "AUTO") |
|
endif() |
|
message(STATUS "Using CONDA_PREFIX for ARROW_PACKAGE_PREFIX: ${ARROW_PACKAGE_PREFIX}") |
|
else() |
|
set(ARROW_ACTUAL_DEPENDENCY_SOURCE "${ARROW_DEPENDENCY_SOURCE}") |
|
endif() |
|
|
|
if(ARROW_PACKAGE_PREFIX) |
|
message(STATUS "Setting (unset) dependency *_ROOT variables: ${ARROW_PACKAGE_PREFIX}") |
|
set(ENV{PKG_CONFIG_PATH} "${ARROW_PACKAGE_PREFIX}/lib/pkgconfig/") |
|
|
|
if(NOT ENV{BOOST_ROOT}) |
|
set(ENV{BOOST_ROOT} ${ARROW_PACKAGE_PREFIX}) |
|
endif() |
|
if(NOT ENV{Boost_ROOT}) |
|
set(ENV{Boost_ROOT} ${ARROW_PACKAGE_PREFIX}) |
|
endif() |
|
if(NOT DEFINED OPENSSL_ROOT_DIR) |
|
set(OPENSSL_ROOT_DIR ${ARROW_PACKAGE_PREFIX}) |
|
endif() |
|
endif() |
|
|
|
|
|
foreach(DEPENDENCY ${ARROW_THIRDPARTY_DEPENDENCIES}) |
|
if("${${DEPENDENCY}_SOURCE}" STREQUAL "") |
|
set(${DEPENDENCY}_SOURCE ${ARROW_ACTUAL_DEPENDENCY_SOURCE}) |
|
|
|
if(NOT ${DEPENDENCY}_ROOT AND ARROW_PACKAGE_PREFIX) |
|
set(${DEPENDENCY}_ROOT ${ARROW_PACKAGE_PREFIX}) |
|
endif() |
|
endif() |
|
endforeach() |
|
|
|
macro(build_dependency DEPENDENCY_NAME) |
|
if("${DEPENDENCY_NAME}" STREQUAL "absl") |
|
build_absl() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "AWSSDK") |
|
build_awssdk() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Azure") |
|
build_azure_sdk() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "benchmark") |
|
build_benchmark() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Boost") |
|
build_boost() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Brotli") |
|
build_brotli() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "BZip2") |
|
build_bzip2() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "c-ares") |
|
build_cares() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "gflags") |
|
build_gflags() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "glog") |
|
build_glog() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "google_cloud_cpp_storage") |
|
build_google_cloud_cpp_storage() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "gRPC") |
|
build_grpc() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "GTest") |
|
build_gtest() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "jemalloc") |
|
build_jemalloc() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "lz4") |
|
build_lz4() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "nlohmann_json") |
|
build_nlohmann_json() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "opentelemetry-cpp") |
|
build_opentelemetry() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "orc") |
|
build_orc() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Protobuf") |
|
build_protobuf() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "RapidJSON") |
|
build_rapidjson() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "re2") |
|
build_re2() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Snappy") |
|
build_snappy() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Substrait") |
|
build_substrait() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "Thrift") |
|
build_thrift() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "ucx") |
|
build_ucx() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "utf8proc") |
|
build_utf8proc() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "xsimd") |
|
build_xsimd() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "ZLIB") |
|
build_zlib() |
|
elseif("${DEPENDENCY_NAME}" STREQUAL "zstd") |
|
build_zstd() |
|
else() |
|
message(FATAL_ERROR "Unknown thirdparty dependency to build: ${DEPENDENCY_NAME}") |
|
endif() |
|
endmacro() |
|
|
|
function(provide_cmake_module MODULE_NAME ARROW_CMAKE_PACKAGE_NAME) |
|
set(module "${CMAKE_SOURCE_DIR}/cmake_modules/${MODULE_NAME}.cmake") |
|
if(EXISTS "${module}") |
|
message(STATUS "Providing CMake module for ${MODULE_NAME} as part of ${ARROW_CMAKE_PACKAGE_NAME} CMake package" |
|
) |
|
install(FILES "${module}" |
|
DESTINATION "${ARROW_CMAKE_DIR}/${ARROW_CMAKE_PACKAGE_NAME}") |
|
endif() |
|
endfunction() |
|
|
|
|
|
|
|
function(provide_find_module PACKAGE_NAME ARROW_CMAKE_PACKAGE_NAME) |
|
provide_cmake_module("Find${PACKAGE_NAME}" ${ARROW_CMAKE_PACKAGE_NAME}) |
|
endfunction() |
|
|
|
macro(resolve_dependency DEPENDENCY_NAME) |
|
set(options) |
|
set(one_value_args |
|
ARROW_CMAKE_PACKAGE_NAME |
|
ARROW_PC_PACKAGE_NAME |
|
FORCE_ANY_NEWER_VERSION |
|
HAVE_ALT |
|
IS_RUNTIME_DEPENDENCY |
|
REQUIRED_VERSION |
|
USE_CONFIG) |
|
set(multi_value_args COMPONENTS PC_PACKAGE_NAMES) |
|
cmake_parse_arguments(ARG |
|
"${options}" |
|
"${one_value_args}" |
|
"${multi_value_args}" |
|
${ARGN}) |
|
if(ARG_UNPARSED_ARGUMENTS) |
|
message(SEND_ERROR "Error: unrecognized arguments: ${ARG_UNPARSED_ARGUMENTS}") |
|
endif() |
|
if("${ARG_IS_RUNTIME_DEPENDENCY}" STREQUAL "") |
|
set(ARG_IS_RUNTIME_DEPENDENCY TRUE) |
|
endif() |
|
|
|
if(ARG_HAVE_ALT) |
|
set(PACKAGE_NAME "${DEPENDENCY_NAME}Alt") |
|
else() |
|
set(PACKAGE_NAME ${DEPENDENCY_NAME}) |
|
endif() |
|
set(FIND_PACKAGE_ARGUMENTS ${PACKAGE_NAME}) |
|
if(ARG_REQUIRED_VERSION AND NOT ARG_FORCE_ANY_NEWER_VERSION) |
|
list(APPEND FIND_PACKAGE_ARGUMENTS ${ARG_REQUIRED_VERSION}) |
|
endif() |
|
if(ARG_USE_CONFIG) |
|
list(APPEND FIND_PACKAGE_ARGUMENTS CONFIG) |
|
endif() |
|
if(ARG_COMPONENTS) |
|
list(APPEND FIND_PACKAGE_ARGUMENTS COMPONENTS ${ARG_COMPONENTS}) |
|
endif() |
|
if(${DEPENDENCY_NAME}_SOURCE STREQUAL "AUTO") |
|
find_package(${FIND_PACKAGE_ARGUMENTS}) |
|
set(COMPATIBLE ${${PACKAGE_NAME}_FOUND}) |
|
if(COMPATIBLE |
|
AND ARG_FORCE_ANY_NEWER_VERSION |
|
AND ARG_REQUIRED_VERSION) |
|
if(${${PACKAGE_NAME}_VERSION} VERSION_LESS ${ARG_REQUIRED_VERSION}) |
|
message(DEBUG "Couldn't find ${DEPENDENCY_NAME} >= ${ARG_REQUIRED_VERSION}") |
|
set(COMPATIBLE FALSE) |
|
endif() |
|
endif() |
|
if(COMPATIBLE) |
|
set(${DEPENDENCY_NAME}_SOURCE "SYSTEM") |
|
else() |
|
build_dependency(${DEPENDENCY_NAME}) |
|
set(${DEPENDENCY_NAME}_SOURCE "BUNDLED") |
|
endif() |
|
elseif(${DEPENDENCY_NAME}_SOURCE STREQUAL "BUNDLED") |
|
build_dependency(${DEPENDENCY_NAME}) |
|
elseif(${DEPENDENCY_NAME}_SOURCE STREQUAL "SYSTEM") |
|
find_package(${FIND_PACKAGE_ARGUMENTS} REQUIRED) |
|
if(ARG_FORCE_ANY_NEWER_VERSION AND ARG_REQUIRED_VERSION) |
|
if(${${PACKAGE_NAME}_VERSION} VERSION_LESS ${ARG_REQUIRED_VERSION}) |
|
message(FATAL_ERROR "Couldn't find ${DEPENDENCY_NAME} >= ${ARG_REQUIRED_VERSION}") |
|
endif() |
|
endif() |
|
endif() |
|
if(${DEPENDENCY_NAME}_SOURCE STREQUAL "SYSTEM" AND ARG_IS_RUNTIME_DEPENDENCY) |
|
if(NOT ARG_ARROW_CMAKE_PACKAGE_NAME) |
|
set(ARG_ARROW_CMAKE_PACKAGE_NAME "Arrow") |
|
endif() |
|
|
|
string(REGEX REPLACE "([A-Z])" "_\\1" ARG_ARROW_CMAKE_PACKAGE_NAME_SNAKE |
|
${ARG_ARROW_CMAKE_PACKAGE_NAME}) |
|
|
|
string(SUBSTRING ${ARG_ARROW_CMAKE_PACKAGE_NAME_SNAKE} 1 -1 |
|
ARG_ARROW_CMAKE_PACKAGE_NAME_SNAKE) |
|
|
|
string(TOUPPER ${ARG_ARROW_CMAKE_PACKAGE_NAME_SNAKE} |
|
ARG_ARROW_CMAKE_PACKAGE_NAME_UPPER_SNAKE) |
|
provide_find_module(${PACKAGE_NAME} ${ARG_ARROW_CMAKE_PACKAGE_NAME}) |
|
list(APPEND ${ARG_ARROW_CMAKE_PACKAGE_NAME_UPPER_SNAKE}_SYSTEM_DEPENDENCIES |
|
${PACKAGE_NAME}) |
|
if(NOT ARG_ARROW_PC_PACKAGE_NAME) |
|
set(ARG_ARROW_PC_PACKAGE_NAME "arrow") |
|
endif() |
|
|
|
string(REPLACE "-" "_" ARG_ARROW_PC_PACKAGE_NAME_SNAKE ${ARG_ARROW_PC_PACKAGE_NAME}) |
|
|
|
string(TOUPPER ${ARG_ARROW_PC_PACKAGE_NAME_SNAKE} |
|
ARG_ARROW_PC_PACKAGE_NAME_UPPER_SNAKE) |
|
if(ARROW_BUILD_STATIC) |
|
find_package(PkgConfig QUIET) |
|
foreach(ARG_PC_PACKAGE_NAME ${ARG_PC_PACKAGE_NAMES}) |
|
pkg_check_modules(${ARG_PC_PACKAGE_NAME}_PC |
|
${ARG_PC_PACKAGE_NAME} |
|
NO_CMAKE_PATH |
|
NO_CMAKE_ENVIRONMENT_PATH |
|
QUIET) |
|
set(RESOLVE_DEPENDENCY_PC_PACKAGE |
|
"pkg-config package for ${ARG_PC_PACKAGE_NAME} ") |
|
string(APPEND RESOLVE_DEPENDENCY_PC_PACKAGE |
|
"that is used by ${ARG_ARROW_PC_PACKAGE_NAME} for static link") |
|
if(${${ARG_PC_PACKAGE_NAME}_PC_FOUND}) |
|
message(STATUS "Using ${RESOLVE_DEPENDENCY_PC_PACKAGE}") |
|
string(APPEND ${ARG_ARROW_PC_PACKAGE_NAME_UPPER_SNAKE}_PC_REQUIRES_PRIVATE |
|
" ${ARG_PC_PACKAGE_NAME}") |
|
else() |
|
message(STATUS "${RESOLVE_DEPENDENCY_PC_PACKAGE} isn't found") |
|
endif() |
|
endforeach() |
|
endif() |
|
endif() |
|
endmacro() |
|
|
|
|
|
|
|
|
|
set(THIRDPARTY_DIR "${arrow_SOURCE_DIR}/thirdparty") |
|
|
|
add_library(arrow::flatbuffers INTERFACE IMPORTED) |
|
target_include_directories(arrow::flatbuffers |
|
INTERFACE "${THIRDPARTY_DIR}/flatbuffers/include") |
|
|
|
|
|
|
|
|
|
if(PARQUET_REQUIRE_ENCRYPTION) |
|
set(ARROW_JSON ON) |
|
endif() |
|
|
|
if(ARROW_WITH_OPENTELEMETRY) |
|
set(ARROW_WITH_NLOHMANN_JSON ON) |
|
set(ARROW_WITH_PROTOBUF ON) |
|
endif() |
|
|
|
if(ARROW_THRIFT) |
|
set(ARROW_WITH_ZLIB ON) |
|
endif() |
|
|
|
if(ARROW_PARQUET) |
|
set(ARROW_WITH_THRIFT ON) |
|
endif() |
|
|
|
if(ARROW_FLIGHT) |
|
set(ARROW_WITH_GRPC ON) |
|
endif() |
|
|
|
if(ARROW_WITH_GRPC) |
|
set(ARROW_WITH_RE2 ON) |
|
set(ARROW_WITH_ZLIB ON) |
|
endif() |
|
|
|
if(ARROW_GCS) |
|
set(ARROW_WITH_GOOGLE_CLOUD_CPP ON) |
|
set(ARROW_WITH_NLOHMANN_JSON ON) |
|
set(ARROW_WITH_ZLIB ON) |
|
endif() |
|
|
|
if(ARROW_AZURE) |
|
set(ARROW_WITH_AZURE_SDK ON) |
|
endif() |
|
|
|
if(ARROW_JSON) |
|
set(ARROW_WITH_RAPIDJSON ON) |
|
endif() |
|
|
|
if(ARROW_ORC OR ARROW_FLIGHT) |
|
set(ARROW_WITH_PROTOBUF ON) |
|
endif() |
|
|
|
if(ARROW_SUBSTRAIT) |
|
set(ARROW_WITH_PROTOBUF ON) |
|
endif() |
|
|
|
if(ARROW_S3) |
|
set(ARROW_WITH_ZLIB ON) |
|
endif() |
|
|
|
if((NOT ARROW_COMPUTE) AND (NOT ARROW_GANDIVA)) |
|
set(ARROW_WITH_UTF8PROC OFF) |
|
endif() |
|
|
|
if((NOT ARROW_COMPUTE) |
|
AND (NOT ARROW_GANDIVA) |
|
AND (NOT ARROW_WITH_GRPC)) |
|
set(ARROW_WITH_RE2 OFF) |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
macro(set_urls URLS) |
|
set(${URLS} ${ARGN}) |
|
endmacro() |
|
|
|
|
|
file(STRINGS "${THIRDPARTY_DIR}/versions.txt" TOOLCHAIN_VERSIONS_TXT) |
|
foreach(_VERSION_ENTRY ${TOOLCHAIN_VERSIONS_TXT}) |
|
|
|
if(NOT ((_VERSION_ENTRY MATCHES "^[^#][A-Za-z0-9-_]+_VERSION=") |
|
OR (_VERSION_ENTRY MATCHES "^[^#][A-Za-z0-9-_]+_CHECKSUM="))) |
|
continue() |
|
endif() |
|
|
|
string(REGEX MATCH "^[^=]*" _VARIABLE_NAME ${_VERSION_ENTRY}) |
|
string(REPLACE "${_VARIABLE_NAME}=" "" _VARIABLE_VALUE ${_VERSION_ENTRY}) |
|
|
|
|
|
if(_VARIABLE_VALUE STREQUAL "") |
|
continue() |
|
endif() |
|
|
|
|
|
message(STATUS "${_VARIABLE_NAME}: ${_VARIABLE_VALUE}") |
|
|
|
set(${_VARIABLE_NAME} ${_VARIABLE_VALUE}) |
|
endforeach() |
|
|
|
set(THIRDPARTY_MIRROR_URL "https://apache.jfrog.io/artifactory/arrow/thirdparty/7.0.0") |
|
|
|
if(DEFINED ENV{ARROW_ABSL_URL}) |
|
set(ABSL_SOURCE_URL "$ENV{ARROW_ABSL_URL}") |
|
else() |
|
set_urls(ABSL_SOURCE_URL |
|
"https://github.com/abseil/abseil-cpp/archive/${ARROW_ABSL_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_AUTH_URL}) |
|
set(AWS_C_AUTH_SOURCE_URL "$ENV{ARROW_AWS_C_AUTH_URL}") |
|
else() |
|
set_urls(AWS_C_AUTH_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-auth/archive/${ARROW_AWS_C_AUTH_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_CAL_URL}) |
|
set(AWS_C_CAL_SOURCE_URL "$ENV{ARROW_AWS_C_CAL_URL}") |
|
else() |
|
set_urls(AWS_C_CAL_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-cal/archive/${ARROW_AWS_C_CAL_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_COMMON_URL}) |
|
set(AWS_C_COMMON_SOURCE_URL "$ENV{ARROW_AWS_C_COMMON_URL}") |
|
else() |
|
set_urls(AWS_C_COMMON_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-common/archive/${ARROW_AWS_C_COMMON_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_COMPRESSION_URL}) |
|
set(AWS_C_COMPRESSION_SOURCE_URL "$ENV{ARROW_AWS_C_COMPRESSION_URL}") |
|
else() |
|
set_urls(AWS_C_COMPRESSION_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-compression/archive/${ARROW_AWS_C_COMPRESSION_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_EVENT_STREAM_URL}) |
|
set(AWS_C_EVENT_STREAM_SOURCE_URL "$ENV{ARROW_AWS_C_EVENT_STREAM_URL}") |
|
else() |
|
set_urls(AWS_C_EVENT_STREAM_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-event-stream/archive/${ARROW_AWS_C_EVENT_STREAM_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_HTTP_URL}) |
|
set(AWS_C_HTTP_SOURCE_URL "$ENV{ARROW_AWS_C_HTTP_URL}") |
|
else() |
|
set_urls(AWS_C_HTTP_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-http/archive/${ARROW_AWS_C_HTTP_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_IO_URL}) |
|
set(AWS_C_IO_SOURCE_URL "$ENV{ARROW_AWS_C_IO_URL}") |
|
else() |
|
set_urls(AWS_C_IO_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-io/archive/${ARROW_AWS_C_IO_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_MQTT_URL}) |
|
set(AWS_C_MQTT_SOURCE_URL "$ENV{ARROW_AWS_C_MQTT_URL}") |
|
else() |
|
set_urls(AWS_C_MQTT_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-mqtt/archive/${ARROW_AWS_C_MQTT_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_S3_URL}) |
|
set(AWS_C_S3_SOURCE_URL "$ENV{ARROW_AWS_C_S3_URL}") |
|
else() |
|
set_urls(AWS_C_S3_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-s3/archive/${ARROW_AWS_C_S3_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_C_SDKUTILS_URL}) |
|
set(AWS_C_SDKUTILS_SOURCE_URL "$ENV{ARROW_AWS_C_SDKUTILS_URL}") |
|
else() |
|
set_urls(AWS_C_SDKUTILS_SOURCE_URL |
|
"https://github.com/awslabs/aws-c-sdkutils/archive/${ARROW_AWS_C_SDKUTILS_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_CHECKSUMS_URL}) |
|
set(AWS_CHECKSUMS_SOURCE_URL "$ENV{ARROW_AWS_CHECKSUMS_URL}") |
|
else() |
|
set_urls(AWS_CHECKSUMS_SOURCE_URL |
|
"https://github.com/awslabs/aws-checksums/archive/${ARROW_AWS_CHECKSUMS_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_CRT_CPP_URL}) |
|
set(AWS_CRT_CPP_SOURCE_URL "$ENV{ARROW_AWS_CRT_CPP_URL}") |
|
else() |
|
set_urls(AWS_CRT_CPP_SOURCE_URL |
|
"https://github.com/awslabs/aws-crt-cpp/archive/${ARROW_AWS_CRT_CPP_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWS_LC_URL}) |
|
set(AWS_LC_SOURCE_URL "$ENV{ARROW_AWS_LC_URL}") |
|
else() |
|
set_urls(AWS_LC_SOURCE_URL |
|
"https://github.com/awslabs/aws-lc/archive/${ARROW_AWS_LC_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AWSSDK_URL}) |
|
set(AWSSDK_SOURCE_URL "$ENV{ARROW_AWSSDK_URL}") |
|
else() |
|
set_urls(AWSSDK_SOURCE_URL |
|
"https://github.com/aws/aws-sdk-cpp/archive/${ARROW_AWSSDK_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/aws-sdk-cpp-${ARROW_AWSSDK_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_AZURE_SDK_URL}) |
|
set(ARROW_AZURE_SDK_URL "$ENV{ARROW_AZURE_SDK_URL}") |
|
else() |
|
set_urls(ARROW_AZURE_SDK_URL |
|
"https://github.com/Azure/azure-sdk-for-cpp/archive/${ARROW_AZURE_SDK_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_BOOST_URL}) |
|
set(BOOST_SOURCE_URL "$ENV{ARROW_BOOST_URL}") |
|
else() |
|
string(REPLACE "." "_" ARROW_BOOST_BUILD_VERSION_UNDERSCORES |
|
${ARROW_BOOST_BUILD_VERSION}) |
|
set_urls(BOOST_SOURCE_URL |
|
|
|
|
|
|
|
|
|
|
|
"${THIRDPARTY_MIRROR_URL}/boost_${ARROW_BOOST_BUILD_VERSION_UNDERSCORES}.tar.gz" |
|
"https://boostorg.jfrog.io/artifactory/main/release/${ARROW_BOOST_BUILD_VERSION}/source/boost_${ARROW_BOOST_BUILD_VERSION_UNDERSCORES}.tar.gz" |
|
"https://sourceforge.net/projects/boost/files/boost/${ARROW_BOOST_BUILD_VERSION}/boost_${ARROW_BOOST_BUILD_VERSION_UNDERSCORES}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_BROTLI_URL}) |
|
set(BROTLI_SOURCE_URL "$ENV{ARROW_BROTLI_URL}") |
|
else() |
|
set_urls(BROTLI_SOURCE_URL |
|
"https://github.com/google/brotli/archive/${ARROW_BROTLI_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/brotli-${ARROW_BROTLI_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_BZIP2_URL}) |
|
set(ARROW_BZIP2_SOURCE_URL "$ENV{ARROW_BZIP2_URL}") |
|
else() |
|
set_urls(ARROW_BZIP2_SOURCE_URL |
|
"https://sourceware.org/pub/bzip2/bzip2-${ARROW_BZIP2_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/bzip2-${ARROW_BZIP2_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_CARES_URL}) |
|
set(CARES_SOURCE_URL "$ENV{ARROW_CARES_URL}") |
|
else() |
|
string(REPLACE "." "_" ARROW_CARES_BUILD_VERSION_UNDERSCORES |
|
${ARROW_CARES_BUILD_VERSION}) |
|
set_urls(CARES_SOURCE_URL |
|
"https://github.com/c-ares/c-ares/releases/download/cares-${ARROW_CARES_BUILD_VERSION_UNDERSCORES}/c-ares-${ARROW_CARES_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/cares-${ARROW_CARES_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_CRC32C_URL}) |
|
set(CRC32C_SOURCE_URL "$ENV{ARROW_CRC32C_URL}") |
|
else() |
|
set_urls(CRC32C_SOURCE_URL |
|
"https://github.com/google/crc32c/archive/${ARROW_CRC32C_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_GBENCHMARK_URL}) |
|
set(GBENCHMARK_SOURCE_URL "$ENV{ARROW_GBENCHMARK_URL}") |
|
else() |
|
set_urls(GBENCHMARK_SOURCE_URL |
|
"https://github.com/google/benchmark/archive/${ARROW_GBENCHMARK_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/gbenchmark-${ARROW_GBENCHMARK_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_GFLAGS_URL}) |
|
set(GFLAGS_SOURCE_URL "$ENV{ARROW_GFLAGS_URL}") |
|
else() |
|
set_urls(GFLAGS_SOURCE_URL |
|
"https://github.com/gflags/gflags/archive/${ARROW_GFLAGS_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/gflags-${ARROW_GFLAGS_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_GLOG_URL}) |
|
set(GLOG_SOURCE_URL "$ENV{ARROW_GLOG_URL}") |
|
else() |
|
set_urls(GLOG_SOURCE_URL |
|
"https://github.com/google/glog/archive/${ARROW_GLOG_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/glog-${ARROW_GLOG_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_GOOGLE_CLOUD_CPP_URL}) |
|
set(google_cloud_cpp_storage_SOURCE_URL "$ENV{ARROW_GOOGLE_CLOUD_CPP_URL}") |
|
else() |
|
set_urls(google_cloud_cpp_storage_SOURCE_URL |
|
"https://github.com/googleapis/google-cloud-cpp/archive/${ARROW_GOOGLE_CLOUD_CPP_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/google-cloud-cpp-${ARROW_GOOGLE_CLOUD_CPP_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_GRPC_URL}) |
|
set(GRPC_SOURCE_URL "$ENV{ARROW_GRPC_URL}") |
|
else() |
|
set_urls(GRPC_SOURCE_URL |
|
"https://github.com/grpc/grpc/archive/${ARROW_GRPC_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/grpc-${ARROW_GRPC_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_GTEST_URL}) |
|
set(GTEST_SOURCE_URL "$ENV{ARROW_GTEST_URL}") |
|
else() |
|
set_urls(GTEST_SOURCE_URL |
|
"https://github.com/google/googletest/archive/release-${ARROW_GTEST_BUILD_VERSION}.tar.gz" |
|
"https://chromium.googlesource.com/external/github.com/google/googletest/+archive/release-${ARROW_GTEST_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/gtest-${ARROW_GTEST_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_JEMALLOC_URL}) |
|
set(JEMALLOC_SOURCE_URL "$ENV{ARROW_JEMALLOC_URL}") |
|
else() |
|
set_urls(JEMALLOC_SOURCE_URL |
|
"https://github.com/jemalloc/jemalloc/releases/download/${ARROW_JEMALLOC_BUILD_VERSION}/jemalloc-${ARROW_JEMALLOC_BUILD_VERSION}.tar.bz2" |
|
"${THIRDPARTY_MIRROR_URL}/jemalloc-${ARROW_JEMALLOC_BUILD_VERSION}.tar.bz2") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_MIMALLOC_URL}) |
|
set(MIMALLOC_SOURCE_URL "$ENV{ARROW_MIMALLOC_URL}") |
|
else() |
|
set_urls(MIMALLOC_SOURCE_URL |
|
"https://github.com/microsoft/mimalloc/archive/${ARROW_MIMALLOC_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/mimalloc-${ARROW_MIMALLOC_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_NLOHMANN_JSON_URL}) |
|
set(NLOHMANN_JSON_SOURCE_URL "$ENV{ARROW_NLOHMANN_JSON_URL}") |
|
else() |
|
set_urls(NLOHMANN_JSON_SOURCE_URL |
|
"https://github.com/nlohmann/json/archive/${ARROW_NLOHMANN_JSON_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_LZ4_URL}) |
|
set(LZ4_SOURCE_URL "$ENV{ARROW_LZ4_URL}") |
|
else() |
|
set_urls(LZ4_SOURCE_URL |
|
"https://github.com/lz4/lz4/archive/${ARROW_LZ4_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/lz4-${ARROW_LZ4_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_ORC_URL}) |
|
set(ORC_SOURCE_URL "$ENV{ARROW_ORC_URL}") |
|
else() |
|
set_urls(ORC_SOURCE_URL |
|
"https://www.apache.org/dyn/closer.cgi?action=download&filename=/orc/orc-${ARROW_ORC_BUILD_VERSION}/orc-${ARROW_ORC_BUILD_VERSION}.tar.gz" |
|
"https://downloads.apache.org/orc/orc-${ARROW_ORC_BUILD_VERSION}/orc-${ARROW_ORC_BUILD_VERSION}.tar.gz" |
|
"https://github.com/apache/orc/archive/rel/release-${ARROW_ORC_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_OPENTELEMETRY_URL}) |
|
set(OPENTELEMETRY_SOURCE_URL "$ENV{ARROW_OPENTELEMETRY_URL}") |
|
else() |
|
|
|
set_urls(OPENTELEMETRY_SOURCE_URL |
|
"https://github.com/open-telemetry/opentelemetry-cpp/archive/refs/tags/${ARROW_OPENTELEMETRY_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_OPENTELEMETRY_PROTO_URL}) |
|
set(OPENTELEMETRY_PROTO_SOURCE_URL "$ENV{ARROW_OPENTELEMETRY_PROTO_URL}") |
|
else() |
|
|
|
|
|
set_urls(OPENTELEMETRY_PROTO_SOURCE_URL |
|
"https://github.com/open-telemetry/opentelemetry-proto/archive/${ARROW_OPENTELEMETRY_PROTO_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_PROTOBUF_URL}) |
|
set(PROTOBUF_SOURCE_URL "$ENV{ARROW_PROTOBUF_URL}") |
|
else() |
|
string(SUBSTRING ${ARROW_PROTOBUF_BUILD_VERSION} 1 -1 |
|
ARROW_PROTOBUF_STRIPPED_BUILD_VERSION) |
|
|
|
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" |
|
"${THIRDPARTY_MIRROR_URL}/protobuf-${ARROW_PROTOBUF_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_RE2_URL}) |
|
set(RE2_SOURCE_URL "$ENV{ARROW_RE2_URL}") |
|
else() |
|
set_urls(RE2_SOURCE_URL |
|
"https://github.com/google/re2/archive/${ARROW_RE2_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/re2-${ARROW_RE2_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_RAPIDJSON_URL}) |
|
set(RAPIDJSON_SOURCE_URL "$ENV{ARROW_RAPIDJSON_URL}") |
|
else() |
|
set_urls(RAPIDJSON_SOURCE_URL |
|
"https://github.com/miloyip/rapidjson/archive/${ARROW_RAPIDJSON_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/rapidjson-${ARROW_RAPIDJSON_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_S2N_TLS_URL}) |
|
set(S2N_TLS_SOURCE_URL "$ENV{ARROW_S2N_TLS_URL}") |
|
else() |
|
set_urls(S2N_TLS_SOURCE_URL |
|
"https://github.com/aws/s2n-tls/archive/${ARROW_S2N_TLS_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_SNAPPY_URL}) |
|
set(SNAPPY_SOURCE_URL "$ENV{ARROW_SNAPPY_URL}") |
|
else() |
|
set_urls(SNAPPY_SOURCE_URL |
|
"https://github.com/google/snappy/archive/${ARROW_SNAPPY_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/snappy-${ARROW_SNAPPY_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_SUBSTRAIT_URL}) |
|
set(SUBSTRAIT_SOURCE_URL "$ENV{ARROW_SUBSTRAIT_URL}") |
|
else() |
|
set_urls(SUBSTRAIT_SOURCE_URL |
|
"https://github.com/substrait-io/substrait/archive/${ARROW_SUBSTRAIT_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_THRIFT_URL}) |
|
set(THRIFT_SOURCE_URL "$ENV{ARROW_THRIFT_URL}") |
|
else() |
|
set_urls(THRIFT_SOURCE_URL |
|
"https://www.apache.org/dyn/closer.cgi?action=download&filename=/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://downloads.apache.org/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://apache.claz.org/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://apache.cs.utah.edu/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://apache.mirrors.lucidnetworks.net/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://apache.osuosl.org/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://ftp.wayne.edu/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://mirror.olnevhost.net/pub/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://mirrors.gigenet.com/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://mirrors.koehn.com/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://mirrors.ocf.berkeley.edu/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://mirrors.sonic.net/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"https://us.mirrors.quenda.co/apache/thrift/${ARROW_THRIFT_BUILD_VERSION}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/thrift-${ARROW_THRIFT_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_UCX_URL}) |
|
set(ARROW_UCX_SOURCE_URL "$ENV{ARROW_UCX_URL}") |
|
else() |
|
set_urls(ARROW_UCX_SOURCE_URL |
|
"https://github.com/openucx/ucx/archive/v${ARROW_UCX_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_UTF8PROC_URL}) |
|
set(ARROW_UTF8PROC_SOURCE_URL "$ENV{ARROW_UTF8PROC_URL}") |
|
else() |
|
set_urls(ARROW_UTF8PROC_SOURCE_URL |
|
"https://github.com/JuliaStrings/utf8proc/archive/${ARROW_UTF8PROC_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_XSIMD_URL}) |
|
set(XSIMD_SOURCE_URL "$ENV{ARROW_XSIMD_URL}") |
|
else() |
|
set_urls(XSIMD_SOURCE_URL |
|
"https://github.com/xtensor-stack/xsimd/archive/${ARROW_XSIMD_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_ZLIB_URL}) |
|
set(ZLIB_SOURCE_URL "$ENV{ARROW_ZLIB_URL}") |
|
else() |
|
set_urls(ZLIB_SOURCE_URL |
|
"https://zlib.net/fossils/zlib-${ARROW_ZLIB_BUILD_VERSION}.tar.gz" |
|
"${THIRDPARTY_MIRROR_URL}/zlib-${ARROW_ZLIB_BUILD_VERSION}.tar.gz") |
|
endif() |
|
|
|
if(DEFINED ENV{ARROW_ZSTD_URL}) |
|
set(ZSTD_SOURCE_URL "$ENV{ARROW_ZSTD_URL}") |
|
else() |
|
set_urls(ZSTD_SOURCE_URL |
|
"https://github.com/facebook/zstd/releases/download/v${ARROW_ZSTD_BUILD_VERSION}/zstd-${ARROW_ZSTD_BUILD_VERSION}.tar.gz" |
|
) |
|
endif() |
|
|
|
|
|
|
|
|
|
set(EP_LIST_SEPARATOR "|") |
|
set(EP_COMMON_OPTIONS LIST_SEPARATOR ${EP_LIST_SEPARATOR}) |
|
|
|
set(EP_CXX_FLAGS "${CMAKE_CXX_FLAGS}") |
|
set(EP_C_FLAGS "${CMAKE_C_FLAGS}") |
|
if(NOT MSVC_TOOLCHAIN) |
|
|
|
string(APPEND EP_CXX_FLAGS " -fPIC") |
|
string(APPEND EP_C_FLAGS " -fPIC") |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach(CONFIG DEBUG MINSIZEREL RELEASE RELWITHDEBINFO) |
|
set(EP_CXX_FLAGS_${CONFIG} "${CMAKE_CXX_FLAGS_${CONFIG}}") |
|
set(EP_C_FLAGS_${CONFIG} "${CMAKE_C_FLAGS_${CONFIG}}") |
|
if(CONFIG STREQUAL DEBUG) |
|
set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL) |
|
else() |
|
set(EP_MSVC_RUNTIME_LIBRARY MultiThreadedDLL) |
|
endif() |
|
string(APPEND EP_CXX_FLAGS_${CONFIG} |
|
" ${CMAKE_CXX_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_${EP_MSVC_RUNTIME_LIBRARY}}") |
|
string(APPEND EP_C_FLAGS_${CONFIG} |
|
" ${CMAKE_C_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_${EP_MSVC_RUNTIME_LIBRARY}}") |
|
endforeach() |
|
if(MSVC_TOOLCHAIN) |
|
string(REPLACE "/WX" "" EP_CXX_FLAGS_DEBUG "${EP_CXX_FLAGS_DEBUG}") |
|
string(REPLACE "/WX" "" EP_C_FLAGS_DEBUG "${EP_C_FLAGS_DEBUG}") |
|
else() |
|
string(APPEND EP_CXX_FLAGS_DEBUG " -Wno-error") |
|
string(APPEND EP_C_FLAGS_DEBUG " -Wno-error") |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
set(EP_C_COMPILER "${CMAKE_C_COMPILER}") |
|
if(NOT CMAKE_VERSION VERSION_LESS 3.19) |
|
if(CMAKE_C_COMPILER_ARG1) |
|
separate_arguments(EP_C_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_C_COMPILER_ARG1}") |
|
list(APPEND EP_C_COMPILER ${EP_C_COMPILER_ARGS}) |
|
endif() |
|
string(REPLACE ";" ${EP_LIST_SEPARATOR} EP_C_COMPILER "${EP_C_COMPILER}") |
|
endif() |
|
set(EP_CXX_COMPILER "${CMAKE_CXX_COMPILER}") |
|
if(NOT CMAKE_VERSION VERSION_LESS 3.19) |
|
if(CMAKE_CXX_COMPILER_ARG1) |
|
separate_arguments(EP_CXX_COMPILER_ARGS NATIVE_COMMAND "${CMAKE_CXX_COMPILER_ARG1}") |
|
list(APPEND EP_CXX_COMPILER ${EP_CXX_COMPILER_ARGS}) |
|
endif() |
|
string(REPLACE ";" ${EP_LIST_SEPARATOR} EP_CXX_COMPILER "${EP_CXX_COMPILER}") |
|
endif() |
|
set(EP_COMMON_TOOLCHAIN "-DCMAKE_C_COMPILER=${EP_C_COMPILER}" |
|
"-DCMAKE_CXX_COMPILER=${EP_CXX_COMPILER}") |
|
|
|
if(CMAKE_AR) |
|
|
|
find_program(EP_CMAKE_AR ${CMAKE_AR} REQUIRED) |
|
list(APPEND EP_COMMON_TOOLCHAIN -DCMAKE_AR=${EP_CMAKE_AR}) |
|
endif() |
|
|
|
|
|
if(NOT MSVC) |
|
if(CMAKE_RANLIB) |
|
|
|
find_program(EP_CMAKE_RANLIB ${CMAKE_RANLIB} REQUIRED) |
|
list(APPEND EP_COMMON_TOOLCHAIN -DCMAKE_RANLIB=${EP_CMAKE_RANLIB}) |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
set(EP_COMMON_CMAKE_ARGS |
|
${EP_COMMON_TOOLCHAIN} |
|
-DBUILD_SHARED_LIBS=OFF |
|
-DBUILD_STATIC_LIBS=ON |
|
-DBUILD_TESTING=OFF |
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
|
-DCMAKE_CXX_FLAGS=${EP_CXX_FLAGS} |
|
-DCMAKE_CXX_FLAGS_DEBUG=${EP_CXX_FLAGS_DEBUG} |
|
-DCMAKE_CXX_FLAGS_MISIZEREL=${EP_CXX_FLAGS_MINSIZEREL} |
|
-DCMAKE_CXX_FLAGS_RELEASE=${EP_CXX_FLAGS_RELEASE} |
|
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${EP_CXX_FLAGS_RELWITHDEBINFO} |
|
-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} |
|
-DCMAKE_C_FLAGS=${EP_C_FLAGS} |
|
-DCMAKE_C_FLAGS_DEBUG=${EP_C_FLAGS_DEBUG} |
|
-DCMAKE_C_FLAGS_MISIZEREL=${EP_C_FLAGS_MINSIZEREL} |
|
-DCMAKE_C_FLAGS_RELEASE=${EP_C_FLAGS_RELEASE} |
|
-DCMAKE_C_FLAGS_RELWITHDEBINFO=${EP_C_FLAGS_RELWITHDEBINFO} |
|
-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=${CMAKE_EXPORT_NO_PACKAGE_REGISTRY} |
|
-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=${CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY} |
|
-DCMAKE_INSTALL_LIBDIR=lib |
|
-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT} |
|
-DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE_MAKEFILE}) |
|
|
|
|
|
if(CMAKE_TOOLCHAIN_FILE) |
|
list(APPEND EP_COMMON_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) |
|
endif() |
|
|
|
|
|
if(CMAKE_CROSSCOMPILING_EMULATOR) |
|
string(REPLACE ";" ${EP_LIST_SEPARATOR} EP_CMAKE_CROSSCOMPILING_EMULATOR |
|
"${CMAKE_CROSSCOMPILING_EMULATOR}") |
|
list(APPEND EP_COMMON_CMAKE_ARGS |
|
-DCMAKE_CROSSCOMPILING_EMULATOR=${EP_CMAKE_CROSSCOMPILING_EMULATOR}) |
|
endif() |
|
|
|
if(CMAKE_PROJECT_INCLUDE) |
|
list(APPEND EP_COMMON_CMAKE_ARGS -DCMAKE_PROJECT_INCLUDE=${CMAKE_PROJECT_INCLUDE}) |
|
endif() |
|
|
|
|
|
if(CMAKE_C_COMPILER_LAUNCHER AND CMAKE_CXX_COMPILER_LAUNCHER) |
|
list(APPEND EP_COMMON_CMAKE_ARGS |
|
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} |
|
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}) |
|
endif() |
|
|
|
if(NOT ARROW_VERBOSE_THIRDPARTY_BUILD) |
|
list(APPEND |
|
EP_COMMON_OPTIONS |
|
LOG_CONFIGURE |
|
1 |
|
LOG_BUILD |
|
1 |
|
LOG_INSTALL |
|
1 |
|
LOG_DOWNLOAD |
|
1 |
|
LOG_OUTPUT_ON_FAILURE |
|
1) |
|
set(Boost_DEBUG FALSE) |
|
else() |
|
set(Boost_DEBUG TRUE) |
|
endif() |
|
|
|
|
|
if("${MAKE}" STREQUAL "") |
|
if(NOT MSVC) |
|
find_program(MAKE make) |
|
endif() |
|
endif() |
|
|
|
|
|
set(MAKE_BUILD_ARGS "-j${NPROC}") |
|
|
|
include(FetchContent) |
|
set(FC_DECLARE_COMMON_OPTIONS) |
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28) |
|
list(APPEND FC_DECLARE_COMMON_OPTIONS EXCLUDE_FROM_ALL TRUE) |
|
endif() |
|
|
|
macro(prepare_fetchcontent) |
|
set(BUILD_SHARED_LIBS OFF) |
|
set(BUILD_STATIC_LIBS ON) |
|
set(CMAKE_COMPILE_WARNING_AS_ERROR FALSE) |
|
set(CMAKE_EXPORT_NO_PACKAGE_REGISTRY TRUE) |
|
set(CMAKE_MACOSX_RPATH ${ARROW_INSTALL_NAME_RPATH}) |
|
if(MSVC) |
|
string(REPLACE "/WX" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") |
|
string(REPLACE "/WX" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") |
|
else() |
|
string(APPEND CMAKE_C_FLAGS_DEBUG " -Wno-error") |
|
string(APPEND CMAKE_CXX_FLAGS_DEBUG " -Wno-error") |
|
endif() |
|
endmacro() |
|
|
|
|
|
|
|
|
|
if(ARROW_ENABLE_THREADING) |
|
set(THREADS_PREFER_PTHREAD_FLAG ON) |
|
find_package(Threads REQUIRED) |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_boost) |
|
set(BOOST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/boost_ep-prefix/src/boost_ep") |
|
|
|
|
|
set(BOOST_ROOT ${BOOST_PREFIX}) |
|
set(Boost_INCLUDE_DIR "${BOOST_PREFIX}") |
|
|
|
if(ARROW_BOOST_REQUIRE_LIBRARY) |
|
set(BOOST_LIB_DIR "${BOOST_PREFIX}/stage/lib") |
|
set(BOOST_BUILD_LINK "static") |
|
if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") |
|
set(BOOST_BUILD_VARIANT "debug") |
|
else() |
|
set(BOOST_BUILD_VARIANT "release") |
|
endif() |
|
if(MSVC) |
|
set(BOOST_CONFIGURE_COMMAND ".\\\\bootstrap.bat") |
|
else() |
|
set(BOOST_CONFIGURE_COMMAND "./bootstrap.sh") |
|
endif() |
|
|
|
set(BOOST_BUILD_WITH_LIBRARIES "filesystem" "system") |
|
string(REPLACE ";" "," BOOST_CONFIGURE_LIBRARIES "${BOOST_BUILD_WITH_LIBRARIES}") |
|
list(APPEND BOOST_CONFIGURE_COMMAND "--prefix=${BOOST_PREFIX}" |
|
"--with-libraries=${BOOST_CONFIGURE_LIBRARIES}") |
|
set(BOOST_BUILD_COMMAND "./b2" "-j${NPROC}" "link=${BOOST_BUILD_LINK}" |
|
"variant=${BOOST_BUILD_VARIANT}") |
|
if(MSVC) |
|
string(REGEX REPLACE "([0-9])$" ".\\1" BOOST_TOOLSET_MSVC_VERSION |
|
${MSVC_TOOLSET_VERSION}) |
|
list(APPEND BOOST_BUILD_COMMAND "toolset=msvc-${BOOST_TOOLSET_MSVC_VERSION}") |
|
set(BOOST_BUILD_WITH_LIBRARIES_MSVC) |
|
foreach(_BOOST_LIB ${BOOST_BUILD_WITH_LIBRARIES}) |
|
list(APPEND BOOST_BUILD_WITH_LIBRARIES_MSVC "--with-${_BOOST_LIB}") |
|
endforeach() |
|
list(APPEND BOOST_BUILD_COMMAND ${BOOST_BUILD_WITH_LIBRARIES_MSVC}) |
|
else() |
|
list(APPEND BOOST_BUILD_COMMAND "cxxflags=-fPIC") |
|
endif() |
|
|
|
if(MSVC) |
|
string(REGEX |
|
REPLACE "^([0-9]+)\\.([0-9]+)\\.[0-9]+$" "\\1_\\2" |
|
ARROW_BOOST_BUILD_VERSION_NO_MICRO_UNDERSCORE |
|
${ARROW_BOOST_BUILD_VERSION}) |
|
set(BOOST_LIBRARY_SUFFIX "-vc${MSVC_TOOLSET_VERSION}-mt") |
|
if(BOOST_BUILD_VARIANT STREQUAL "debug") |
|
set(BOOST_LIBRARY_SUFFIX "${BOOST_LIBRARY_SUFFIX}-gd") |
|
endif() |
|
set(BOOST_LIBRARY_SUFFIX |
|
"${BOOST_LIBRARY_SUFFIX}-x64-${ARROW_BOOST_BUILD_VERSION_NO_MICRO_UNDERSCORE}") |
|
else() |
|
set(BOOST_LIBRARY_SUFFIX "") |
|
endif() |
|
set(BOOST_STATIC_SYSTEM_LIBRARY |
|
"${BOOST_LIB_DIR}/libboost_system${BOOST_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(BOOST_STATIC_FILESYSTEM_LIBRARY |
|
"${BOOST_LIB_DIR}/libboost_filesystem${BOOST_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(BOOST_SYSTEM_LIBRARY boost_system_static) |
|
set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_static) |
|
set(BOOST_BUILD_PRODUCTS ${BOOST_STATIC_SYSTEM_LIBRARY} |
|
${BOOST_STATIC_FILESYSTEM_LIBRARY}) |
|
|
|
add_thirdparty_lib(Boost::system |
|
STATIC |
|
"${BOOST_STATIC_SYSTEM_LIBRARY}" |
|
INCLUDE_DIRECTORIES |
|
"${Boost_INCLUDE_DIR}") |
|
add_thirdparty_lib(Boost::filesystem |
|
STATIC |
|
"${BOOST_STATIC_FILESYSTEM_LIBRARY}" |
|
INCLUDE_DIRECTORIES |
|
"${Boost_INCLUDE_DIR}") |
|
|
|
externalproject_add(boost_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${BOOST_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_BOOST_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS ${BOOST_BUILD_PRODUCTS} |
|
BUILD_IN_SOURCE 1 |
|
CONFIGURE_COMMAND ${BOOST_CONFIGURE_COMMAND} |
|
BUILD_COMMAND ${BOOST_BUILD_COMMAND} |
|
INSTALL_COMMAND "") |
|
add_dependencies(Boost::system boost_ep) |
|
add_dependencies(Boost::filesystem boost_ep) |
|
else() |
|
externalproject_add(boost_ep |
|
${EP_COMMON_OPTIONS} |
|
BUILD_COMMAND "" |
|
CONFIGURE_COMMAND "" |
|
INSTALL_COMMAND "" |
|
URL ${BOOST_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_BOOST_BUILD_SHA256_CHECKSUM}") |
|
endif() |
|
add_library(Boost::headers INTERFACE IMPORTED) |
|
target_include_directories(Boost::headers INTERFACE "${Boost_INCLUDE_DIR}") |
|
add_dependencies(Boost::headers boost_ep) |
|
|
|
|
|
if(NOT TARGET Boost::disable_autolinking) |
|
add_library(Boost::disable_autolinking INTERFACE IMPORTED) |
|
if(WIN32) |
|
target_compile_definitions(Boost::disable_autolinking INTERFACE "BOOST_ALL_NO_LIB") |
|
endif() |
|
endif() |
|
if(NOT TARGET Boost::dynamic_linking) |
|
|
|
add_library(Boost::dynamic_linking INTERFACE IMPORTED) |
|
endif() |
|
set(BOOST_VENDORED TRUE) |
|
endmacro() |
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER |
|
15) |
|
|
|
|
|
set(ARROW_BOOST_REQUIRED_VERSION "1.81") |
|
elseif(ARROW_BUILD_TESTS) |
|
set(ARROW_BOOST_REQUIRED_VERSION "1.64") |
|
else() |
|
set(ARROW_BOOST_REQUIRED_VERSION "1.58") |
|
endif() |
|
|
|
set(Boost_USE_MULTITHREADED ON) |
|
if(MSVC AND ARROW_USE_STATIC_CRT) |
|
set(Boost_USE_STATIC_RUNTIME ON) |
|
endif() |
|
set(Boost_ADDITIONAL_VERSIONS |
|
"1.84.0" |
|
"1.84" |
|
"1.83.0" |
|
"1.83" |
|
"1.82.0" |
|
"1.82" |
|
"1.81.0" |
|
"1.81" |
|
"1.80.0" |
|
"1.80" |
|
"1.79.0" |
|
"1.79" |
|
"1.78.0" |
|
"1.78" |
|
"1.77.0" |
|
"1.77" |
|
"1.76.0" |
|
"1.76" |
|
"1.75.0" |
|
"1.75" |
|
"1.74.0" |
|
"1.74" |
|
"1.73.0" |
|
"1.73" |
|
"1.72.0" |
|
"1.72" |
|
"1.71.0" |
|
"1.71" |
|
"1.70.0" |
|
"1.70" |
|
"1.69.0" |
|
"1.69" |
|
"1.68.0" |
|
"1.68" |
|
"1.67.0" |
|
"1.67" |
|
"1.66.0" |
|
"1.66" |
|
"1.65.0" |
|
"1.65" |
|
"1.64.0" |
|
"1.64" |
|
"1.63.0" |
|
"1.63" |
|
"1.62.0" |
|
"1.61" |
|
"1.61.0" |
|
"1.62" |
|
"1.60.0" |
|
"1.60") |
|
|
|
|
|
|
|
if(ARROW_USE_UBSAN) |
|
|
|
|
|
set(ARROW_USE_NATIVE_INT128 FALSE) |
|
else() |
|
include(CheckCXXSymbolExists) |
|
check_cxx_symbol_exists("_M_ARM64" "" WIN32_ARM64_TARGET) |
|
if(WIN32_ARM64_TARGET AND CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
|
|
|
set(ARROW_USE_NATIVE_INT128 FALSE) |
|
else() |
|
check_cxx_symbol_exists("__SIZEOF_INT128__" "" ARROW_USE_NATIVE_INT128) |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
if(ARROW_BUILD_INTEGRATION |
|
OR ARROW_BUILD_TESTS |
|
OR (ARROW_FLIGHT AND (ARROW_TESTING OR ARROW_BUILD_BENCHMARKS)) |
|
OR (ARROW_S3 AND ARROW_BUILD_BENCHMARKS)) |
|
set(ARROW_USE_BOOST TRUE) |
|
set(ARROW_BOOST_REQUIRE_LIBRARY TRUE) |
|
elseif(ARROW_GANDIVA |
|
OR ARROW_WITH_THRIFT |
|
OR (NOT ARROW_USE_NATIVE_INT128)) |
|
set(ARROW_USE_BOOST TRUE) |
|
set(ARROW_BOOST_REQUIRE_LIBRARY FALSE) |
|
else() |
|
set(ARROW_USE_BOOST FALSE) |
|
endif() |
|
|
|
if(ARROW_USE_BOOST) |
|
if(ARROW_BOOST_USE_SHARED) |
|
|
|
set(Boost_USE_STATIC_LIBS OFF) |
|
set(BUILD_SHARED_LIBS_KEEP ${BUILD_SHARED_LIBS}) |
|
set(BUILD_SHARED_LIBS ON) |
|
else() |
|
|
|
set(Boost_USE_STATIC_LIBS ON) |
|
endif() |
|
if(ARROW_BOOST_REQUIRE_LIBRARY) |
|
set(ARROW_BOOST_COMPONENTS system filesystem) |
|
else() |
|
set(ARROW_BOOST_COMPONENTS) |
|
endif() |
|
resolve_dependency(Boost |
|
REQUIRED_VERSION |
|
${ARROW_BOOST_REQUIRED_VERSION} |
|
COMPONENTS |
|
${ARROW_BOOST_COMPONENTS} |
|
IS_RUNTIME_DEPENDENCY |
|
|
|
FALSE) |
|
if(ARROW_BOOST_USE_SHARED) |
|
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_KEEP}) |
|
unset(BUILD_SHARED_LIBS_KEEP) |
|
endif() |
|
|
|
foreach(BOOST_LIBRARY Boost::headers Boost::filesystem Boost::system) |
|
if(NOT TARGET ${BOOST_LIBRARY}) |
|
continue() |
|
endif() |
|
target_link_libraries(${BOOST_LIBRARY} INTERFACE Boost::disable_autolinking) |
|
if(ARROW_BOOST_USE_SHARED) |
|
target_link_libraries(${BOOST_LIBRARY} INTERFACE Boost::dynamic_linking) |
|
endif() |
|
endforeach() |
|
|
|
if(WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
|
|
|
|
|
|
|
|
|
|
|
|
|
target_compile_definitions(Boost::headers INTERFACE "BOOST_USE_WINDOWS_H=1") |
|
endif() |
|
|
|
message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}") |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(find_curl) |
|
if(NOT TARGET CURL::libcurl) |
|
find_package(CURL REQUIRED) |
|
list(APPEND ARROW_SYSTEM_DEPENDENCIES CURL) |
|
endif() |
|
endmacro() |
|
|
|
|
|
|
|
|
|
macro(build_snappy) |
|
message(STATUS "Building snappy from source") |
|
set(SNAPPY_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/snappy_ep/src/snappy_ep-install") |
|
set(SNAPPY_STATIC_LIB_NAME snappy) |
|
set(SNAPPY_STATIC_LIB |
|
"${SNAPPY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${SNAPPY_STATIC_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
set(SNAPPY_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF |
|
"-DCMAKE_INSTALL_PREFIX=${SNAPPY_PREFIX}") |
|
|
|
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
|
foreach(CONFIG DEBUG MINSIZEREL RELEASE RELWITHDEBINFO) |
|
list(APPEND |
|
SNAPPY_CMAKE_ARGS |
|
"-DCMAKE_CXX_FLAGS_${UPPERCASE_BUILD_TYPE}=${EP_CXX_FLAGS_${CONFIG}} -Wno-error" |
|
) |
|
endforeach() |
|
endif() |
|
|
|
if(APPLE AND CMAKE_HOST_SYSTEM_VERSION VERSION_LESS 20) |
|
|
|
|
|
find_program(PATCH patch REQUIRED) |
|
set(SNAPPY_PATCH_COMMAND ${PATCH} -p1 -i ${CMAKE_CURRENT_LIST_DIR}/snappy.diff) |
|
else() |
|
set(SNAPPY_PATCH_COMMAND) |
|
endif() |
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") |
|
|
|
|
|
list(APPEND SNAPPY_CMAKE_ARGS |
|
"-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}" |
|
"-Wno-error=linkflags") |
|
endif() |
|
|
|
externalproject_add(snappy_ep |
|
${EP_COMMON_OPTIONS} |
|
BUILD_IN_SOURCE 1 |
|
INSTALL_DIR ${SNAPPY_PREFIX} |
|
URL ${SNAPPY_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_SNAPPY_BUILD_SHA256_CHECKSUM}" |
|
PATCH_COMMAND ${SNAPPY_PATCH_COMMAND} |
|
CMAKE_ARGS ${SNAPPY_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS "${SNAPPY_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY "${SNAPPY_PREFIX}/include") |
|
|
|
set(Snappy_TARGET Snappy::snappy-static) |
|
add_library(${Snappy_TARGET} STATIC IMPORTED) |
|
set_target_properties(${Snappy_TARGET} PROPERTIES IMPORTED_LOCATION |
|
"${SNAPPY_STATIC_LIB}") |
|
target_include_directories(${Snappy_TARGET} BEFORE INTERFACE "${SNAPPY_PREFIX}/include") |
|
add_dependencies(${Snappy_TARGET} snappy_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS ${Snappy_TARGET}) |
|
endmacro() |
|
|
|
if(ARROW_WITH_SNAPPY) |
|
resolve_dependency(Snappy |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
snappy) |
|
if(${Snappy_SOURCE} STREQUAL "SYSTEM" |
|
AND NOT snappy_PC_FOUND |
|
AND ARROW_BUILD_STATIC) |
|
get_target_property(SNAPPY_TYPE ${Snappy_TARGET} TYPE) |
|
if(NOT SNAPPY_TYPE STREQUAL "INTERFACE_LIBRARY") |
|
string(APPEND ARROW_PC_LIBS_PRIVATE " $<TARGET_FILE:${Snappy_TARGET}>") |
|
endif() |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_brotli) |
|
message(STATUS "Building brotli from source") |
|
set(BROTLI_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/brotli_ep/src/brotli_ep-install") |
|
set(BROTLI_INCLUDE_DIR "${BROTLI_PREFIX}/include") |
|
set(BROTLI_LIB_DIR "${BROTLI_PREFIX}/lib") |
|
set(BROTLI_STATIC_LIBRARY_ENC |
|
"${BROTLI_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc-static${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(BROTLI_STATIC_LIBRARY_DEC |
|
"${BROTLI_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec-static${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(BROTLI_STATIC_LIBRARY_COMMON |
|
"${BROTLI_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon-static${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(BROTLI_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${BROTLI_PREFIX}") |
|
|
|
set(BROTLI_EP_OPTIONS) |
|
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") |
|
|
|
|
|
|
|
list(APPEND |
|
BROTLI_EP_OPTIONS |
|
INSTALL_COMMAND |
|
${CMAKE_COMMAND} |
|
-E |
|
true) |
|
|
|
set(BROTLI_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/brotli_ep-prefix/src/brotli_ep-build) |
|
set(BROTLI_BUILD_LIBS |
|
"${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlienc-static${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
"${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlidec-static${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
"${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}brotlicommon-static${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
endif() |
|
|
|
externalproject_add(brotli_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${BROTLI_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_BROTLI_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${BROTLI_STATIC_LIBRARY_ENC}" |
|
"${BROTLI_STATIC_LIBRARY_DEC}" |
|
"${BROTLI_STATIC_LIBRARY_COMMON}" |
|
${BROTLI_BUILD_BYPRODUCTS} |
|
CMAKE_ARGS ${BROTLI_CMAKE_ARGS} |
|
STEP_TARGETS headers_copy ${BROTLI_EP_OPTIONS}) |
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") |
|
|
|
set(BROTLI_BUILD_INCLUDE_DIR |
|
${CMAKE_CURRENT_BINARY_DIR}/brotli_ep-prefix/src/brotli_ep/c/include/brotli) |
|
add_custom_command(TARGET brotli_ep |
|
POST_BUILD |
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different |
|
${BROTLI_BUILD_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}*${CMAKE_STATIC_LIBRARY_SUFFIX} |
|
${BROTLI_LIB_DIR} |
|
COMMAND ${CMAKE_COMMAND} -E copy_directory |
|
${BROTLI_BUILD_INCLUDE_DIR} ${BROTLI_INCLUDE_DIR}/brotli) |
|
endif() |
|
|
|
file(MAKE_DIRECTORY "${BROTLI_INCLUDE_DIR}") |
|
|
|
add_library(Brotli::brotlicommon STATIC IMPORTED) |
|
set_target_properties(Brotli::brotlicommon PROPERTIES IMPORTED_LOCATION |
|
"${BROTLI_STATIC_LIBRARY_COMMON}") |
|
target_include_directories(Brotli::brotlicommon BEFORE |
|
INTERFACE "${BROTLI_INCLUDE_DIR}") |
|
add_dependencies(Brotli::brotlicommon brotli_ep) |
|
|
|
add_library(Brotli::brotlienc STATIC IMPORTED) |
|
set_target_properties(Brotli::brotlienc PROPERTIES IMPORTED_LOCATION |
|
"${BROTLI_STATIC_LIBRARY_ENC}") |
|
target_include_directories(Brotli::brotlienc BEFORE INTERFACE "${BROTLI_INCLUDE_DIR}") |
|
add_dependencies(Brotli::brotlienc brotli_ep) |
|
|
|
add_library(Brotli::brotlidec STATIC IMPORTED) |
|
set_target_properties(Brotli::brotlidec PROPERTIES IMPORTED_LOCATION |
|
"${BROTLI_STATIC_LIBRARY_DEC}") |
|
target_include_directories(Brotli::brotlidec BEFORE INTERFACE "${BROTLI_INCLUDE_DIR}") |
|
add_dependencies(Brotli::brotlidec brotli_ep) |
|
|
|
list(APPEND |
|
ARROW_BUNDLED_STATIC_LIBS |
|
Brotli::brotlicommon |
|
Brotli::brotlienc |
|
Brotli::brotlidec) |
|
endmacro() |
|
|
|
if(ARROW_WITH_BROTLI) |
|
resolve_dependency(Brotli |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
libbrotlidec |
|
libbrotlienc) |
|
|
|
set(ARROW_BROTLI_LIBS Brotli::brotlienc Brotli::brotlidec Brotli::brotlicommon) |
|
endif() |
|
|
|
if(PARQUET_REQUIRE_ENCRYPTION AND NOT ARROW_PARQUET) |
|
set(PARQUET_REQUIRE_ENCRYPTION OFF) |
|
endif() |
|
set(ARROW_OPENSSL_REQUIRED_VERSION "1.0.2") |
|
set(ARROW_USE_OPENSSL OFF) |
|
if(PARQUET_REQUIRE_ENCRYPTION |
|
OR ARROW_AZURE |
|
OR ARROW_FLIGHT |
|
OR ARROW_GANDIVA |
|
OR ARROW_GCS |
|
OR ARROW_S3) |
|
set(OpenSSL_SOURCE "SYSTEM") |
|
resolve_dependency(OpenSSL |
|
HAVE_ALT |
|
TRUE |
|
REQUIRED_VERSION |
|
${ARROW_OPENSSL_REQUIRED_VERSION}) |
|
set(ARROW_USE_OPENSSL ON) |
|
set(ARROW_OPENSSL_LIBS OpenSSL::Crypto OpenSSL::SSL) |
|
endif() |
|
|
|
if(ARROW_USE_OPENSSL) |
|
message(STATUS "Found OpenSSL Crypto Library: ${OPENSSL_CRYPTO_LIBRARY}") |
|
message(STATUS "Building with OpenSSL (Version: ${OPENSSL_VERSION}) support") |
|
else() |
|
message(STATUS "Building without OpenSSL support. Minimum OpenSSL version ${ARROW_OPENSSL_REQUIRED_VERSION} required." |
|
) |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_glog) |
|
message(STATUS "Building glog from source") |
|
set(GLOG_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/glog_ep-prefix/src/glog_ep") |
|
set(GLOG_INCLUDE_DIR "${GLOG_BUILD_DIR}/include") |
|
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") |
|
set(GLOG_LIB_SUFFIX "d") |
|
else() |
|
set(GLOG_LIB_SUFFIX "") |
|
endif() |
|
set(GLOG_STATIC_LIB |
|
"${GLOG_BUILD_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}glog${GLOG_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(GLOG_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS}") |
|
set(GLOG_CMAKE_C_FLAGS "${EP_C_FLAGS}") |
|
if(CMAKE_THREAD_LIBS_INIT) |
|
string(APPEND GLOG_CMAKE_CXX_FLAGS " ${CMAKE_THREAD_LIBS_INIT}") |
|
string(APPEND GLOG_CMAKE_C_FLAGS " ${CMAKE_THREAD_LIBS_INIT}") |
|
endif() |
|
|
|
if(APPLE) |
|
|
|
string(APPEND GLOG_CMAKE_CXX_FLAGS " -mmacosx-version-min=10.9") |
|
endif() |
|
|
|
set(GLOG_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${GLOG_BUILD_DIR}" |
|
-DWITH_GFLAGS=OFF |
|
-DCMAKE_CXX_FLAGS=${GLOG_CMAKE_CXX_FLAGS} |
|
-DCMAKE_C_FLAGS=${GLOG_CMAKE_C_FLAGS}) |
|
externalproject_add(glog_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${GLOG_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_GLOG_BUILD_SHA256_CHECKSUM}" |
|
BUILD_IN_SOURCE 1 |
|
BUILD_BYPRODUCTS "${GLOG_STATIC_LIB}" |
|
CMAKE_ARGS ${GLOG_CMAKE_ARGS}) |
|
|
|
file(MAKE_DIRECTORY "${GLOG_INCLUDE_DIR}") |
|
|
|
add_library(glog::glog STATIC IMPORTED) |
|
set_target_properties(glog::glog PROPERTIES IMPORTED_LOCATION "${GLOG_STATIC_LIB}") |
|
target_include_directories(glog::glog BEFORE INTERFACE "${GLOG_INCLUDE_DIR}") |
|
add_dependencies(glog::glog glog_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS glog::glog) |
|
endmacro() |
|
|
|
if(ARROW_USE_GLOG) |
|
resolve_dependency(glog |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
libglog) |
|
endif() |
|
|
|
|
|
|
|
|
|
if(ARROW_BUILD_TESTS |
|
OR ARROW_BUILD_BENCHMARKS |
|
OR ARROW_BUILD_INTEGRATION |
|
OR ARROW_USE_GLOG |
|
OR ARROW_WITH_GRPC) |
|
set(ARROW_NEED_GFLAGS 1) |
|
else() |
|
set(ARROW_NEED_GFLAGS 0) |
|
endif() |
|
|
|
macro(build_gflags) |
|
message(STATUS "Building gflags from source") |
|
|
|
set(GFLAGS_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gflags_ep-prefix/src/gflags_ep") |
|
set(GFLAGS_INCLUDE_DIR "${GFLAGS_PREFIX}/include") |
|
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") |
|
set(GFLAGS_LIB_SUFFIX "_debug") |
|
else() |
|
set(GFLAGS_LIB_SUFFIX "") |
|
endif() |
|
if(MSVC) |
|
set(GFLAGS_STATIC_LIB "${GFLAGS_PREFIX}/lib/gflags_static${GFLAGS_LIB_SUFFIX}.lib") |
|
else() |
|
set(GFLAGS_STATIC_LIB "${GFLAGS_PREFIX}/lib/libgflags${GFLAGS_LIB_SUFFIX}.a") |
|
endif() |
|
set(GFLAGS_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${GFLAGS_PREFIX}" |
|
-DBUILD_PACKAGING=OFF |
|
-DBUILD_CONFIG_TESTS=OFF |
|
-DINSTALL_HEADERS=ON) |
|
|
|
file(MAKE_DIRECTORY "${GFLAGS_INCLUDE_DIR}") |
|
externalproject_add(gflags_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${GFLAGS_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_GFLAGS_BUILD_SHA256_CHECKSUM}" |
|
BUILD_IN_SOURCE 1 |
|
BUILD_BYPRODUCTS "${GFLAGS_STATIC_LIB}" |
|
CMAKE_ARGS ${GFLAGS_CMAKE_ARGS}) |
|
|
|
add_thirdparty_lib(gflags::gflags_static STATIC ${GFLAGS_STATIC_LIB}) |
|
add_dependencies(gflags::gflags_static gflags_ep) |
|
set(GFLAGS_LIBRARY gflags::gflags_static) |
|
set_target_properties(${GFLAGS_LIBRARY} PROPERTIES INTERFACE_COMPILE_DEFINITIONS |
|
"GFLAGS_IS_A_DLL=0") |
|
target_include_directories(${GFLAGS_LIBRARY} BEFORE INTERFACE "${GFLAGS_INCLUDE_DIR}") |
|
if(MSVC) |
|
set_target_properties(${GFLAGS_LIBRARY} PROPERTIES INTERFACE_LINK_LIBRARIES |
|
"shlwapi.lib") |
|
endif() |
|
set(GFLAGS_LIBRARIES ${GFLAGS_LIBRARY}) |
|
|
|
set(GFLAGS_VENDORED TRUE) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS gflags::gflags_static) |
|
endmacro() |
|
|
|
if(ARROW_NEED_GFLAGS) |
|
set(ARROW_GFLAGS_REQUIRED_VERSION "2.1.0") |
|
resolve_dependency(gflags |
|
HAVE_ALT |
|
TRUE |
|
REQUIRED_VERSION |
|
${ARROW_GFLAGS_REQUIRED_VERSION} |
|
IS_RUNTIME_DEPENDENCY |
|
FALSE) |
|
|
|
if(NOT TARGET ${GFLAGS_LIBRARIES}) |
|
if(TARGET gflags::gflags_shared) |
|
set(GFLAGS_LIBRARIES gflags::gflags_shared) |
|
elseif(TARGET gflags-shared) |
|
set(GFLAGS_LIBRARIES gflags-shared) |
|
elseif(TARGET gflags_shared) |
|
set(GFLAGS_LIBRARIES gflags_shared) |
|
endif() |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_thrift) |
|
message(STATUS "Building Apache Thrift from source") |
|
set(THRIFT_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/thrift_ep-install") |
|
set(THRIFT_INCLUDE_DIR "${THRIFT_PREFIX}/include") |
|
set(THRIFT_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${THRIFT_PREFIX}" |
|
"-DCMAKE_INSTALL_RPATH=${THRIFT_PREFIX}/lib" |
|
|
|
-DBoost_NO_BOOST_CMAKE=ON |
|
-DBUILD_COMPILER=OFF |
|
-DBUILD_EXAMPLES=OFF |
|
-DBUILD_TUTORIALS=OFF |
|
-DCMAKE_DEBUG_POSTFIX= |
|
-DWITH_AS3=OFF |
|
-DWITH_CPP=ON |
|
-DWITH_C_GLIB=OFF |
|
-DWITH_JAVA=OFF |
|
-DWITH_JAVASCRIPT=OFF |
|
-DWITH_LIBEVENT=OFF |
|
-DWITH_NODEJS=OFF |
|
-DWITH_PYTHON=OFF |
|
-DWITH_QT5=OFF |
|
-DWITH_ZLIB=OFF) |
|
|
|
|
|
if(DEFINED BOOST_ROOT) |
|
list(APPEND THRIFT_CMAKE_ARGS "-DBOOST_ROOT=${BOOST_ROOT}") |
|
endif() |
|
if(DEFINED Boost_INCLUDE_DIR) |
|
list(APPEND THRIFT_CMAKE_ARGS "-DBoost_INCLUDE_DIR=${Boost_INCLUDE_DIR}") |
|
endif() |
|
if(DEFINED Boost_NAMESPACE) |
|
list(APPEND THRIFT_CMAKE_ARGS "-DBoost_NAMESPACE=${Boost_NAMESPACE}") |
|
endif() |
|
|
|
if(MSVC) |
|
if(ARROW_USE_STATIC_CRT) |
|
set(THRIFT_LIB_SUFFIX "mt") |
|
list(APPEND THRIFT_CMAKE_ARGS "-DWITH_MT=ON") |
|
else() |
|
set(THRIFT_LIB_SUFFIX "md") |
|
list(APPEND THRIFT_CMAKE_ARGS "-DWITH_MT=OFF") |
|
endif() |
|
set(THRIFT_LIB |
|
"${THRIFT_PREFIX}/bin/${CMAKE_IMPORT_LIBRARY_PREFIX}thrift${THRIFT_LIB_SUFFIX}${CMAKE_IMPORT_LIBRARY_SUFFIX}" |
|
) |
|
else() |
|
set(THRIFT_LIB |
|
"${THRIFT_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}thrift${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
endif() |
|
|
|
if(BOOST_VENDORED) |
|
set(THRIFT_DEPENDENCIES ${THRIFT_DEPENDENCIES} boost_ep) |
|
endif() |
|
|
|
externalproject_add(thrift_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${THRIFT_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_THRIFT_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${THRIFT_LIB}" |
|
CMAKE_ARGS ${THRIFT_CMAKE_ARGS} |
|
DEPENDS ${THRIFT_DEPENDENCIES}) |
|
|
|
add_library(thrift::thrift STATIC IMPORTED) |
|
|
|
file(MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR}") |
|
set_target_properties(thrift::thrift PROPERTIES IMPORTED_LOCATION "${THRIFT_LIB}") |
|
target_include_directories(thrift::thrift BEFORE INTERFACE "${THRIFT_INCLUDE_DIR}") |
|
if(ARROW_USE_BOOST) |
|
target_link_libraries(thrift::thrift INTERFACE Boost::headers) |
|
endif() |
|
add_dependencies(thrift::thrift thrift_ep) |
|
set(Thrift_VERSION ${ARROW_THRIFT_BUILD_VERSION}) |
|
set(THRIFT_VENDORED TRUE) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS thrift::thrift) |
|
endmacro() |
|
|
|
if(ARROW_WITH_THRIFT) |
|
|
|
resolve_dependency(Thrift |
|
ARROW_CMAKE_PACKAGE_NAME |
|
Parquet |
|
ARROW_PC_PACKAGE_NAME |
|
parquet |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
thrift |
|
REQUIRED_VERSION |
|
0.11.0) |
|
|
|
string(REPLACE "." ";" Thrift_VERSION_LIST ${Thrift_VERSION}) |
|
list(GET Thrift_VERSION_LIST 0 Thrift_VERSION_MAJOR) |
|
list(GET Thrift_VERSION_LIST 1 Thrift_VERSION_MINOR) |
|
list(GET Thrift_VERSION_LIST 2 Thrift_VERSION_PATCH) |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_protobuf) |
|
message(STATUS "Building Protocol Buffers from source") |
|
set(PROTOBUF_VENDORED TRUE) |
|
set(PROTOBUF_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/protobuf_ep-install") |
|
set(PROTOBUF_INCLUDE_DIR "${PROTOBUF_PREFIX}/include") |
|
|
|
|
|
|
|
|
|
set(Protobuf_USE_STATIC_LIBS ON) |
|
|
|
set(PROTOBUF_STATIC_LIB |
|
"${PROTOBUF_PREFIX}/lib/libprotobuf${CMAKE_STATIC_LIBRARY_SUFFIX}") |
|
set(PROTOC_STATIC_LIB "${PROTOBUF_PREFIX}/lib/libprotoc${CMAKE_STATIC_LIBRARY_SUFFIX}") |
|
set(Protobuf_PROTOC_LIBRARY "${PROTOC_STATIC_LIB}") |
|
set(PROTOBUF_COMPILER "${PROTOBUF_PREFIX}/bin/protoc") |
|
|
|
|
|
|
|
set(PROTOBUF_C_FLAGS ${EP_C_FLAGS}) |
|
set(PROTOBUF_CXX_FLAGS ${EP_CXX_FLAGS}) |
|
string(REPLACE "-flto=auto" "" PROTOBUF_C_FLAGS "${PROTOBUF_C_FLAGS}") |
|
string(REPLACE "-ffat-lto-objects" "" PROTOBUF_C_FLAGS "${PROTOBUF_C_FLAGS}") |
|
string(REPLACE "-flto=auto" "" PROTOBUF_CXX_FLAGS "${PROTOBUF_CXX_FLAGS}") |
|
string(REPLACE "-ffat-lto-objects" "" PROTOBUF_CXX_FLAGS "${PROTOBUF_CXX_FLAGS}") |
|
set(PROTOBUF_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_CXX_FLAGS=${PROTOBUF_CXX_FLAGS}" |
|
"-DCMAKE_C_FLAGS=${PROTOBUF_C_FLAGS}" |
|
"-DCMAKE_INSTALL_PREFIX=${PROTOBUF_PREFIX}" |
|
-Dprotobuf_BUILD_TESTS=OFF |
|
-Dprotobuf_DEBUG_POSTFIX=) |
|
if(MSVC AND NOT ARROW_USE_STATIC_CRT) |
|
list(APPEND PROTOBUF_CMAKE_ARGS "-Dprotobuf_MSVC_STATIC_RUNTIME=OFF") |
|
endif() |
|
if(ZLIB_ROOT) |
|
list(APPEND PROTOBUF_CMAKE_ARGS "-DZLIB_ROOT=${ZLIB_ROOT}") |
|
endif() |
|
set(PROTOBUF_EXTERNAL_PROJECT_ADD_ARGS CMAKE_ARGS ${PROTOBUF_CMAKE_ARGS} SOURCE_SUBDIR |
|
"cmake") |
|
|
|
externalproject_add(protobuf_ep |
|
${EP_COMMON_OPTIONS} ${PROTOBUF_EXTERNAL_PROJECT_ADD_ARGS} |
|
BUILD_BYPRODUCTS "${PROTOBUF_STATIC_LIB}" "${PROTOBUF_COMPILER}" |
|
BUILD_IN_SOURCE 1 |
|
URL ${PROTOBUF_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_PROTOBUF_BUILD_SHA256_CHECKSUM}") |
|
|
|
file(MAKE_DIRECTORY "${PROTOBUF_INCLUDE_DIR}") |
|
|
|
set(Protobuf_INCLUDE_DIRS "${PROTOBUF_INCLUDE_DIR}") |
|
|
|
add_library(arrow::protobuf::libprotobuf STATIC IMPORTED) |
|
set_target_properties(arrow::protobuf::libprotobuf PROPERTIES IMPORTED_LOCATION |
|
"${PROTOBUF_STATIC_LIB}") |
|
target_include_directories(arrow::protobuf::libprotobuf BEFORE |
|
INTERFACE "${PROTOBUF_INCLUDE_DIR}") |
|
add_library(arrow::protobuf::libprotoc STATIC IMPORTED) |
|
set_target_properties(arrow::protobuf::libprotoc PROPERTIES IMPORTED_LOCATION |
|
"${PROTOC_STATIC_LIB}") |
|
target_include_directories(arrow::protobuf::libprotoc BEFORE |
|
INTERFACE "${PROTOBUF_INCLUDE_DIR}") |
|
add_executable(arrow::protobuf::protoc IMPORTED) |
|
set_target_properties(arrow::protobuf::protoc PROPERTIES IMPORTED_LOCATION |
|
"${PROTOBUF_COMPILER}") |
|
|
|
add_dependencies(arrow::protobuf::libprotobuf protobuf_ep) |
|
add_dependencies(arrow::protobuf::protoc protobuf_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS arrow::protobuf::libprotobuf) |
|
|
|
if(CMAKE_CROSSCOMPILING) |
|
|
|
|
|
|
|
|
|
set(PROTOBUF_HOST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/protobuf_ep_host-install") |
|
set(PROTOBUF_HOST_COMPILER "${PROTOBUF_HOST_PREFIX}/bin/protoc") |
|
|
|
set(PROTOBUF_HOST_CMAKE_ARGS |
|
"-DCMAKE_CXX_FLAGS=" |
|
"-DCMAKE_C_FLAGS=" |
|
"-DCMAKE_INSTALL_PREFIX=${PROTOBUF_HOST_PREFIX}" |
|
-Dprotobuf_BUILD_TESTS=OFF |
|
-Dprotobuf_DEBUG_POSTFIX=) |
|
|
|
externalproject_add(protobuf_ep_host |
|
${EP_COMMON_OPTIONS} |
|
CMAKE_ARGS ${PROTOBUF_HOST_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS "${PROTOBUF_HOST_COMPILER}" |
|
BUILD_IN_SOURCE 1 |
|
URL ${PROTOBUF_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_PROTOBUF_BUILD_SHA256_CHECKSUM}") |
|
|
|
add_executable(arrow::protobuf::host_protoc IMPORTED) |
|
set_target_properties(arrow::protobuf::host_protoc |
|
PROPERTIES IMPORTED_LOCATION "${PROTOBUF_HOST_COMPILER}") |
|
|
|
add_dependencies(arrow::protobuf::host_protoc protobuf_ep_host) |
|
endif() |
|
endmacro() |
|
|
|
if(ARROW_WITH_PROTOBUF) |
|
if(ARROW_FLIGHT_SQL) |
|
|
|
|
|
|
|
set(ARROW_PROTOBUF_REQUIRED_VERSION "3.12.0") |
|
elseif(ARROW_SUBSTRAIT) |
|
|
|
set(ARROW_PROTOBUF_REQUIRED_VERSION "3.0.0") |
|
else() |
|
set(ARROW_PROTOBUF_REQUIRED_VERSION "2.6.1") |
|
endif() |
|
if(ARROW_ORC |
|
OR ARROW_SUBSTRAIT |
|
OR ARROW_WITH_OPENTELEMETRY) |
|
set(ARROW_PROTOBUF_ARROW_CMAKE_PACKAGE_NAME "Arrow") |
|
set(ARROW_PROTOBUF_ARROW_PC_PACKAGE_NAME "arrow") |
|
elseif(ARROW_FLIGHT) |
|
set(ARROW_PROTOBUF_ARROW_CMAKE_PACKAGE_NAME "ArrowFlight") |
|
set(ARROW_PROTOBUF_ARROW_PC_PACKAGE_NAME "arrow-flight") |
|
else() |
|
message(FATAL_ERROR "ARROW_WITH_PROTOBUF must be propagated in the build tooling installation." |
|
" Please extend the mappings of ARROW_PROTOBUF_ARROW_CMAKE_PACKAGE_NAME and" |
|
" ARROW_PROTOBUF_ARROW_PC_PACKAGE_NAME for newly introduced dependencies on" |
|
" protobuf.") |
|
endif() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resolve_dependency(Protobuf |
|
ARROW_CMAKE_PACKAGE_NAME |
|
${ARROW_PROTOBUF_ARROW_CMAKE_PACKAGE_NAME} |
|
ARROW_PC_PACKAGE_NAME |
|
${ARROW_PROTOBUF_ARROW_PC_PACKAGE_NAME} |
|
FORCE_ANY_NEWER_VERSION |
|
TRUE |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
protobuf |
|
REQUIRED_VERSION |
|
${ARROW_PROTOBUF_REQUIRED_VERSION}) |
|
|
|
if(NOT Protobuf_USE_STATIC_LIBS AND MSVC_TOOLCHAIN) |
|
add_definitions(-DPROTOBUF_USE_DLLS) |
|
endif() |
|
|
|
if(TARGET arrow::protobuf::libprotobuf) |
|
set(ARROW_PROTOBUF_LIBPROTOBUF arrow::protobuf::libprotobuf) |
|
else() |
|
set(ARROW_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) |
|
endif() |
|
if(TARGET arrow::protobuf::libprotoc) |
|
set(ARROW_PROTOBUF_LIBPROTOC arrow::protobuf::libprotoc) |
|
else() |
|
set(ARROW_PROTOBUF_LIBPROTOC protobuf::libprotoc) |
|
endif() |
|
if(TARGET arrow::protobuf::host_protoc) |
|
|
|
|
|
set(ARROW_PROTOBUF_PROTOC arrow::protobuf::host_protoc) |
|
elseif(TARGET arrow::protobuf::protoc) |
|
set(ARROW_PROTOBUF_PROTOC arrow::protobuf::protoc) |
|
else() |
|
if(NOT TARGET protobuf::protoc) |
|
add_executable(protobuf::protoc IMPORTED) |
|
set_target_properties(protobuf::protoc PROPERTIES IMPORTED_LOCATION |
|
"${PROTOBUF_PROTOC_EXECUTABLE}") |
|
endif() |
|
set(ARROW_PROTOBUF_PROTOC protobuf::protoc) |
|
endif() |
|
|
|
|
|
|
|
get_target_property(PROTOBUF_PROTOC_EXECUTABLE ${ARROW_PROTOBUF_PROTOC} |
|
IMPORTED_LOCATION_RELEASE) |
|
if(NOT PROTOBUF_PROTOC_EXECUTABLE) |
|
get_target_property(PROTOBUF_PROTOC_EXECUTABLE ${ARROW_PROTOBUF_PROTOC} |
|
IMPORTED_LOCATION) |
|
endif() |
|
message(STATUS "Found protoc: ${PROTOBUF_PROTOC_EXECUTABLE}") |
|
get_target_property(PROTOBUF_TYPE ${ARROW_PROTOBUF_LIBPROTOBUF} TYPE) |
|
if(NOT STREQUAL "INTERFACE_LIBRARY") |
|
|
|
message(STATUS "Found libprotoc: ${Protobuf_PROTOC_LIBRARY}") |
|
get_target_property(PROTOBUF_LIBRARY ${ARROW_PROTOBUF_LIBPROTOBUF} IMPORTED_LOCATION) |
|
message(STATUS "Found libprotobuf: ${PROTOBUF_LIBRARY}") |
|
message(STATUS "Found protobuf headers: ${PROTOBUF_INCLUDE_DIR}") |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_substrait) |
|
message(STATUS "Building Substrait from source") |
|
|
|
|
|
|
|
set(SUBSTRAIT_PROTOS |
|
algebra |
|
extended_expression |
|
extensions/extensions |
|
plan |
|
type) |
|
set(ARROW_SUBSTRAIT_PROTOS extension_rels) |
|
set(ARROW_SUBSTRAIT_PROTOS_DIR "${CMAKE_SOURCE_DIR}/proto") |
|
|
|
externalproject_add(substrait_ep |
|
${EP_COMMON_OPTIONS} |
|
CONFIGURE_COMMAND "" |
|
BUILD_COMMAND "" |
|
INSTALL_COMMAND "" |
|
URL ${SUBSTRAIT_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_SUBSTRAIT_BUILD_SHA256_CHECKSUM}") |
|
|
|
externalproject_get_property(substrait_ep SOURCE_DIR) |
|
set(SUBSTRAIT_LOCAL_DIR ${SOURCE_DIR}) |
|
|
|
set(SUBSTRAIT_CPP_DIR "${CMAKE_CURRENT_BINARY_DIR}/substrait_ep-generated") |
|
file(MAKE_DIRECTORY ${SUBSTRAIT_CPP_DIR}) |
|
|
|
set(SUBSTRAIT_SUPPRESSED_FLAGS) |
|
if(MSVC) |
|
|
|
|
|
|
|
list(APPEND SUBSTRAIT_SUPPRESSED_FLAGS "/wd4244") |
|
|
|
|
|
list(APPEND SUBSTRAIT_SUPPRESSED_FLAGS "/wd4251") |
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID STREQUAL |
|
"Clang") |
|
|
|
list(APPEND SUBSTRAIT_SUPPRESSED_FLAGS "-Wno-error=shorten-64-to-32") |
|
endif() |
|
|
|
set(SUBSTRAIT_SOURCES) |
|
set(SUBSTRAIT_PROTO_GEN_ALL) |
|
foreach(SUBSTRAIT_PROTO ${SUBSTRAIT_PROTOS}) |
|
set(SUBSTRAIT_PROTO_GEN "${SUBSTRAIT_CPP_DIR}/substrait/${SUBSTRAIT_PROTO}.pb") |
|
|
|
foreach(EXT h cc) |
|
set_source_files_properties("${SUBSTRAIT_PROTO_GEN}.${EXT}" |
|
PROPERTIES COMPILE_OPTIONS |
|
"${SUBSTRAIT_SUPPRESSED_FLAGS}" |
|
GENERATED TRUE |
|
SKIP_UNITY_BUILD_INCLUSION TRUE) |
|
list(APPEND SUBSTRAIT_PROTO_GEN_ALL "${SUBSTRAIT_PROTO_GEN}.${EXT}") |
|
endforeach() |
|
add_custom_command(OUTPUT "${SUBSTRAIT_PROTO_GEN}.cc" "${SUBSTRAIT_PROTO_GEN}.h" |
|
COMMAND ${ARROW_PROTOBUF_PROTOC} "-I${SUBSTRAIT_LOCAL_DIR}/proto" |
|
"--cpp_out=${SUBSTRAIT_CPP_DIR}" |
|
"${SUBSTRAIT_LOCAL_DIR}/proto/substrait/${SUBSTRAIT_PROTO}.proto" |
|
DEPENDS ${PROTO_DEPENDS} substrait_ep) |
|
|
|
list(APPEND SUBSTRAIT_SOURCES "${SUBSTRAIT_PROTO_GEN}.cc") |
|
endforeach() |
|
foreach(ARROW_SUBSTRAIT_PROTO ${ARROW_SUBSTRAIT_PROTOS}) |
|
set(ARROW_SUBSTRAIT_PROTO_GEN |
|
"${SUBSTRAIT_CPP_DIR}/substrait/${ARROW_SUBSTRAIT_PROTO}.pb") |
|
foreach(EXT h cc) |
|
set_source_files_properties("${ARROW_SUBSTRAIT_PROTO_GEN}.${EXT}" |
|
PROPERTIES COMPILE_OPTIONS |
|
"${SUBSTRAIT_SUPPRESSED_FLAGS}" |
|
GENERATED TRUE |
|
SKIP_UNITY_BUILD_INCLUSION TRUE) |
|
list(APPEND SUBSTRAIT_PROTO_GEN_ALL "${ARROW_SUBSTRAIT_PROTO_GEN}.${EXT}") |
|
endforeach() |
|
add_custom_command(OUTPUT "${ARROW_SUBSTRAIT_PROTO_GEN}.cc" |
|
"${ARROW_SUBSTRAIT_PROTO_GEN}.h" |
|
COMMAND ${ARROW_PROTOBUF_PROTOC} "-I${SUBSTRAIT_LOCAL_DIR}/proto" |
|
"-I${ARROW_SUBSTRAIT_PROTOS_DIR}" |
|
"--cpp_out=${SUBSTRAIT_CPP_DIR}" |
|
"${ARROW_SUBSTRAIT_PROTOS_DIR}/substrait/${ARROW_SUBSTRAIT_PROTO}.proto" |
|
DEPENDS ${PROTO_DEPENDS} substrait_ep) |
|
|
|
list(APPEND SUBSTRAIT_SOURCES "${ARROW_SUBSTRAIT_PROTO_GEN}.cc") |
|
endforeach() |
|
|
|
add_custom_target(substrait_gen ALL DEPENDS ${SUBSTRAIT_PROTO_GEN_ALL}) |
|
|
|
set(SUBSTRAIT_INCLUDES ${SUBSTRAIT_CPP_DIR} ${PROTOBUF_INCLUDE_DIR}) |
|
|
|
add_library(substrait STATIC ${SUBSTRAIT_SOURCES}) |
|
set_target_properties(substrait PROPERTIES POSITION_INDEPENDENT_CODE ON) |
|
target_include_directories(substrait PUBLIC ${SUBSTRAIT_INCLUDES}) |
|
target_link_libraries(substrait PUBLIC ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
add_dependencies(substrait substrait_gen) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS substrait) |
|
endmacro() |
|
|
|
if(ARROW_SUBSTRAIT) |
|
|
|
set(Substrait_SOURCE "BUNDLED") |
|
resolve_dependency(Substrait) |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_jemalloc) |
|
|
|
|
|
|
|
|
|
message(STATUS "Building jemalloc from source") |
|
|
|
set(ARROW_JEMALLOC_USE_SHARED OFF) |
|
set(JEMALLOC_PREFIX |
|
"${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src/jemalloc_ep/dist/") |
|
set(JEMALLOC_LIB_DIR "${JEMALLOC_PREFIX}/lib") |
|
set(JEMALLOC_STATIC_LIB |
|
"${JEMALLOC_LIB_DIR}/libjemalloc_pic${CMAKE_STATIC_LIBRARY_SUFFIX}") |
|
set(JEMALLOC_CONFIGURE_COMMAND ./configure "AR=${CMAKE_AR}" "CC=${CMAKE_C_COMPILER}") |
|
if(CMAKE_OSX_SYSROOT) |
|
list(APPEND JEMALLOC_CONFIGURE_COMMAND "SDKROOT=${CMAKE_OSX_SYSROOT}") |
|
endif() |
|
if(DEFINED ARROW_JEMALLOC_LG_PAGE) |
|
|
|
|
|
list(APPEND JEMALLOC_CONFIGURE_COMMAND "--with-lg-page=${ARROW_JEMALLOC_LG_PAGE}") |
|
endif() |
|
list(APPEND |
|
JEMALLOC_CONFIGURE_COMMAND |
|
"--prefix=${JEMALLOC_PREFIX}" |
|
"--libdir=${JEMALLOC_LIB_DIR}" |
|
"--with-jemalloc-prefix=je_arrow_" |
|
"--with-private-namespace=je_arrow_private_" |
|
"--without-export" |
|
"--disable-shared" |
|
|
|
"--disable-cxx" |
|
"--disable-libdl" |
|
|
|
"--disable-initial-exec-tls" |
|
${EP_LOG_OPTIONS}) |
|
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") |
|
|
|
list(APPEND JEMALLOC_CONFIGURE_COMMAND "--enable-debug") |
|
endif() |
|
|
|
set(JEMALLOC_BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}) |
|
|
|
if(CMAKE_OSX_SYSROOT) |
|
list(APPEND JEMALLOC_BUILD_COMMAND "SDKROOT=${CMAKE_OSX_SYSROOT}") |
|
endif() |
|
|
|
externalproject_add(jemalloc_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${JEMALLOC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_JEMALLOC_BUILD_SHA256_CHECKSUM}" |
|
PATCH_COMMAND touch doc/jemalloc.3 doc/jemalloc.html |
|
|
|
CONFIGURE_COMMAND ${JEMALLOC_CONFIGURE_COMMAND} |
|
BUILD_IN_SOURCE 1 |
|
BUILD_COMMAND ${JEMALLOC_BUILD_COMMAND} |
|
BUILD_BYPRODUCTS "${JEMALLOC_STATIC_LIB}" |
|
INSTALL_COMMAND ${MAKE} -j1 install) |
|
|
|
|
|
|
|
set(JEMALLOC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/jemalloc_ep-prefix/src/") |
|
|
|
file(MAKE_DIRECTORY "${JEMALLOC_INCLUDE_DIR}") |
|
add_library(jemalloc::jemalloc STATIC IMPORTED) |
|
set_target_properties(jemalloc::jemalloc PROPERTIES IMPORTED_LOCATION |
|
"${JEMALLOC_STATIC_LIB}") |
|
target_link_libraries(jemalloc::jemalloc INTERFACE Threads::Threads) |
|
target_include_directories(jemalloc::jemalloc BEFORE |
|
INTERFACE "${JEMALLOC_INCLUDE_DIR}") |
|
add_dependencies(jemalloc::jemalloc jemalloc_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS jemalloc::jemalloc) |
|
|
|
set(jemalloc_VENDORED TRUE) |
|
|
|
set(ARROW_JEMALLOC_VENDORED ${jemalloc_VENDORED}) |
|
endmacro() |
|
|
|
if(ARROW_JEMALLOC) |
|
if(NOT ARROW_ENABLE_THREADING) |
|
message(FATAL_ERROR "Can't use jemalloc with ARROW_ENABLE_THREADING=OFF") |
|
endif() |
|
resolve_dependency(jemalloc HAVE_ALT TRUE) |
|
endif() |
|
|
|
|
|
|
|
|
|
if(ARROW_MIMALLOC) |
|
if(NOT ARROW_ENABLE_THREADING) |
|
message(FATAL_ERROR "Can't use mimalloc with ARROW_ENABLE_THREADING=OFF") |
|
endif() |
|
|
|
message(STATUS "Building (vendored) mimalloc from source") |
|
|
|
|
|
set(MIMALLOC_LIB_BASE_NAME "mimalloc") |
|
if(WIN32) |
|
set(MIMALLOC_LIB_BASE_NAME "${MIMALLOC_LIB_BASE_NAME}-static") |
|
endif() |
|
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") |
|
set(MIMALLOC_LIB_BASE_NAME "${MIMALLOC_LIB_BASE_NAME}-${LOWERCASE_BUILD_TYPE}") |
|
endif() |
|
|
|
set(MIMALLOC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/mimalloc_ep/src/mimalloc_ep") |
|
set(MIMALLOC_INCLUDE_DIR "${MIMALLOC_PREFIX}/include/mimalloc-2.0") |
|
set(MIMALLOC_STATIC_LIB |
|
"${MIMALLOC_PREFIX}/lib/mimalloc-2.0/${CMAKE_STATIC_LIBRARY_PREFIX}${MIMALLOC_LIB_BASE_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
set(MIMALLOC_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${MIMALLOC_PREFIX}" |
|
-DMI_OVERRIDE=OFF |
|
-DMI_LOCAL_DYNAMIC_TLS=ON |
|
-DMI_BUILD_OBJECT=OFF |
|
-DMI_BUILD_SHARED=OFF |
|
-DMI_BUILD_TESTS=OFF) |
|
|
|
externalproject_add(mimalloc_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${MIMALLOC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_MIMALLOC_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${MIMALLOC_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS "${MIMALLOC_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY ${MIMALLOC_INCLUDE_DIR}) |
|
|
|
add_library(mimalloc::mimalloc STATIC IMPORTED) |
|
set_target_properties(mimalloc::mimalloc PROPERTIES IMPORTED_LOCATION |
|
"${MIMALLOC_STATIC_LIB}") |
|
target_include_directories(mimalloc::mimalloc BEFORE |
|
INTERFACE "${MIMALLOC_INCLUDE_DIR}") |
|
target_link_libraries(mimalloc::mimalloc INTERFACE Threads::Threads) |
|
if(WIN32) |
|
target_link_libraries(mimalloc::mimalloc INTERFACE "bcrypt.lib" "psapi.lib") |
|
endif() |
|
add_dependencies(mimalloc::mimalloc mimalloc_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS mimalloc::mimalloc) |
|
|
|
set(mimalloc_VENDORED TRUE) |
|
endif() |
|
|
|
|
|
|
|
|
|
function(build_gtest) |
|
message(STATUS "Building gtest from source") |
|
set(GTEST_VENDORED TRUE) |
|
fetchcontent_declare(googletest |
|
|
|
|
|
|
|
URL ${GTEST_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_GTEST_BUILD_SHA256_CHECKSUM}") |
|
prepare_fetchcontent() |
|
if(APPLE) |
|
string(APPEND CMAKE_CXX_FLAGS " -Wno-unused-value" " -Wno-ignored-attributes") |
|
endif() |
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") |
|
set(BUILD_SHARED_LIBS OFF) |
|
set(BUILD_STATIC_LIBS ON) |
|
else() |
|
set(BUILD_SHARED_LIBS ON) |
|
set(BUILD_STATIC_LIBS OFF) |
|
endif() |
|
|
|
|
|
|
|
set(INSTALL_GTEST |
|
OFF |
|
CACHE "BOOL" |
|
"Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" |
|
FORCE) |
|
string(APPEND CMAKE_INSTALL_INCLUDEDIR "/arrow-gtest") |
|
fetchcontent_makeavailable(googletest) |
|
foreach(target gmock gmock_main gtest gtest_main) |
|
set_target_properties(${target} |
|
PROPERTIES OUTPUT_NAME "arrow_${target}" |
|
PDB_NAME "arrow_${target}" |
|
PDB_NAME_DEBUG "arrow_${target}d" |
|
COMPILE_PDB_NAME "arrow_${target}" |
|
COMPILE_PDB_NAME_DEBUG "arrow_${target}d" |
|
RUNTIME_OUTPUT_DIRECTORY |
|
"${BUILD_OUTPUT_ROOT_DIRECTORY}" |
|
LIBRARY_OUTPUT_DIRECTORY |
|
"${BUILD_OUTPUT_ROOT_DIRECTORY}" |
|
ARCHIVE_OUTPUT_DIRECTORY |
|
"${BUILD_OUTPUT_ROOT_DIRECTORY}" |
|
PDB_OUTPUT_DIRECTORY |
|
"${BUILD_OUTPUT_ROOT_DIRECTORY}") |
|
endforeach() |
|
install(DIRECTORY "${googletest_SOURCE_DIR}/googlemock/include/" |
|
"${googletest_SOURCE_DIR}/googletest/include/" |
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") |
|
install(TARGETS gmock gmock_main gtest gtest_main |
|
EXPORT arrow_testing_targets |
|
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" |
|
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" |
|
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") |
|
if(MSVC) |
|
install(FILES $<TARGET_PDB_FILE:gmock> $<TARGET_PDB_FILE:gmock_main> |
|
$<TARGET_PDB_FILE:gtest> $<TARGET_PDB_FILE:gtest_main> |
|
DESTINATION "${CMAKE_INSTALL_BINDIR}" |
|
OPTIONAL) |
|
endif() |
|
add_library(arrow::GTest::gmock ALIAS gmock) |
|
add_library(arrow::GTest::gmock_main ALIAS gmock_main) |
|
add_library(arrow::GTest::gtest ALIAS gtest) |
|
add_library(arrow::GTest::gtest_main ALIAS gtest_main) |
|
endfunction() |
|
|
|
if(ARROW_TESTING) |
|
set(GTestAlt_NEED_CXX_STANDARD_CHECK TRUE) |
|
resolve_dependency(GTest |
|
ARROW_CMAKE_PACKAGE_NAME |
|
ArrowTesting |
|
HAVE_ALT |
|
TRUE |
|
REQUIRED_VERSION |
|
1.10.0) |
|
|
|
if(GTest_SOURCE STREQUAL "SYSTEM") |
|
find_package(PkgConfig QUIET) |
|
pkg_check_modules(gtest_PC |
|
gtest |
|
NO_CMAKE_PATH |
|
NO_CMAKE_ENVIRONMENT_PATH |
|
QUIET) |
|
if(gtest_PC_FOUND) |
|
string(APPEND ARROW_TESTING_PC_REQUIRES " gtest") |
|
else() |
|
string(APPEND ARROW_TESTING_PC_CFLAGS " -I$<JOIN:") |
|
string(APPEND ARROW_TESTING_PC_CFLAGS |
|
"$<TARGET_PROPERTY:GTest::gtest,INTERFACE_INCLUDE_DIRECTORIES>") |
|
string(APPEND ARROW_TESTING_PC_CFLAGS ",-I>") |
|
|
|
string(APPEND ARROW_TESTING_PC_LIBS " $<TARGET_FILE:GTest::gtest>") |
|
endif() |
|
set(ARROW_GTEST_GMOCK GTest::gmock) |
|
set(ARROW_GTEST_GTEST GTest::gtest) |
|
set(ARROW_GTEST_GTEST_MAIN GTest::gtest_main) |
|
else() |
|
string(APPEND ARROW_TESTING_PC_CFLAGS " -I\${includedir}/arrow-gtest") |
|
string(APPEND ARROW_TESTING_PC_LIBS " -larrow_gtest") |
|
set(ARROW_GTEST_GMOCK arrow::GTest::gmock) |
|
set(ARROW_GTEST_GTEST arrow::GTest::gtest) |
|
set(ARROW_GTEST_GTEST_MAIN arrow::GTest::gtest_main) |
|
endif() |
|
endif() |
|
|
|
macro(build_benchmark) |
|
message(STATUS "Building benchmark from source") |
|
|
|
set(GBENCHMARK_CMAKE_CXX_FLAGS "${EP_CXX_FLAGS}") |
|
if(APPLE AND (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_CXX_COMPILER_ID |
|
STREQUAL "Clang")) |
|
string(APPEND GBENCHMARK_CMAKE_CXX_FLAGS " -stdlib=libc++") |
|
endif() |
|
|
|
set(GBENCHMARK_PREFIX |
|
"${CMAKE_CURRENT_BINARY_DIR}/gbenchmark_ep/src/gbenchmark_ep-install") |
|
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_MAIN_STATIC_LIB |
|
"${GBENCHMARK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}benchmark_main${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(GBENCHMARK_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} "-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() |
|
|
|
externalproject_add(gbenchmark_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${GBENCHMARK_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_GBENCHMARK_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${GBENCHMARK_STATIC_LIB}" |
|
"${GBENCHMARK_MAIN_STATIC_LIB}" |
|
CMAKE_ARGS ${GBENCHMARK_CMAKE_ARGS}) |
|
|
|
|
|
file(MAKE_DIRECTORY "${GBENCHMARK_INCLUDE_DIR}") |
|
|
|
add_library(benchmark::benchmark STATIC IMPORTED) |
|
set_target_properties(benchmark::benchmark PROPERTIES IMPORTED_LOCATION |
|
"${GBENCHMARK_STATIC_LIB}") |
|
target_include_directories(benchmark::benchmark BEFORE |
|
INTERFACE "${GBENCHMARK_INCLUDE_DIR}") |
|
target_compile_definitions(benchmark::benchmark INTERFACE "BENCHMARK_STATIC_DEFINE") |
|
|
|
add_library(benchmark::benchmark_main STATIC IMPORTED) |
|
set_target_properties(benchmark::benchmark_main |
|
PROPERTIES IMPORTED_LOCATION "${GBENCHMARK_MAIN_STATIC_LIB}") |
|
target_include_directories(benchmark::benchmark_main BEFORE |
|
INTERFACE "${GBENCHMARK_INCLUDE_DIR}") |
|
target_link_libraries(benchmark::benchmark_main INTERFACE benchmark::benchmark) |
|
|
|
add_dependencies(benchmark::benchmark gbenchmark_ep) |
|
add_dependencies(benchmark::benchmark_main gbenchmark_ep) |
|
endmacro() |
|
|
|
if(ARROW_BUILD_BENCHMARKS) |
|
set(BENCHMARK_REQUIRED_VERSION 1.6.1) |
|
resolve_dependency(benchmark |
|
REQUIRED_VERSION |
|
${BENCHMARK_REQUIRED_VERSION} |
|
IS_RUNTIME_DEPENDENCY |
|
FALSE) |
|
endif() |
|
|
|
macro(build_rapidjson) |
|
message(STATUS "Building RapidJSON from source") |
|
set(RAPIDJSON_PREFIX |
|
"${CMAKE_CURRENT_BINARY_DIR}/rapidjson_ep/src/rapidjson_ep-install") |
|
set(RAPIDJSON_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
-DRAPIDJSON_BUILD_DOC=OFF |
|
-DRAPIDJSON_BUILD_EXAMPLES=OFF |
|
-DRAPIDJSON_BUILD_TESTS=OFF |
|
"-DCMAKE_INSTALL_PREFIX=${RAPIDJSON_PREFIX}") |
|
|
|
externalproject_add(rapidjson_ep |
|
${EP_COMMON_OPTIONS} |
|
PREFIX "${CMAKE_BINARY_DIR}" |
|
URL ${RAPIDJSON_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_RAPIDJSON_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${RAPIDJSON_CMAKE_ARGS}) |
|
|
|
set(RAPIDJSON_INCLUDE_DIR "${RAPIDJSON_PREFIX}/include") |
|
|
|
file(MAKE_DIRECTORY "${RAPIDJSON_INCLUDE_DIR}") |
|
|
|
add_library(RapidJSON INTERFACE IMPORTED) |
|
target_include_directories(RapidJSON INTERFACE "${RAPIDJSON_INCLUDE_DIR}") |
|
add_dependencies(RapidJSON rapidjson_ep) |
|
|
|
set(RAPIDJSON_VENDORED TRUE) |
|
endmacro() |
|
|
|
if(ARROW_WITH_RAPIDJSON) |
|
set(ARROW_RAPIDJSON_REQUIRED_VERSION "1.1.0") |
|
resolve_dependency(RapidJSON |
|
HAVE_ALT |
|
TRUE |
|
REQUIRED_VERSION |
|
${ARROW_RAPIDJSON_REQUIRED_VERSION} |
|
IS_RUNTIME_DEPENDENCY |
|
FALSE) |
|
endif() |
|
|
|
macro(build_xsimd) |
|
message(STATUS "Building xsimd from source") |
|
set(XSIMD_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/xsimd_ep/src/xsimd_ep-install") |
|
set(XSIMD_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${XSIMD_PREFIX}") |
|
|
|
externalproject_add(xsimd_ep |
|
${EP_COMMON_OPTIONS} |
|
PREFIX "${CMAKE_BINARY_DIR}" |
|
URL ${XSIMD_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_XSIMD_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${XSIMD_CMAKE_ARGS}) |
|
|
|
set(XSIMD_INCLUDE_DIR "${XSIMD_PREFIX}/include") |
|
|
|
file(MAKE_DIRECTORY "${XSIMD_INCLUDE_DIR}") |
|
|
|
add_library(arrow::xsimd INTERFACE IMPORTED) |
|
target_include_directories(arrow::xsimd INTERFACE "${XSIMD_INCLUDE_DIR}") |
|
add_dependencies(arrow::xsimd xsimd_ep) |
|
|
|
set(XSIMD_VENDORED TRUE) |
|
endmacro() |
|
|
|
if((NOT ARROW_SIMD_LEVEL STREQUAL "NONE") OR (NOT ARROW_RUNTIME_SIMD_LEVEL STREQUAL "NONE" |
|
)) |
|
set(ARROW_USE_XSIMD TRUE) |
|
else() |
|
set(ARROW_USE_XSIMD FALSE) |
|
endif() |
|
|
|
if(ARROW_USE_XSIMD) |
|
resolve_dependency(xsimd |
|
FORCE_ANY_NEWER_VERSION |
|
TRUE |
|
IS_RUNTIME_DEPENDENCY |
|
FALSE |
|
REQUIRED_VERSION |
|
"8.1.0") |
|
|
|
if(xsimd_SOURCE STREQUAL "BUNDLED") |
|
set(ARROW_XSIMD arrow::xsimd) |
|
else() |
|
message(STATUS "xsimd found. Headers: ${xsimd_INCLUDE_DIRS}") |
|
set(ARROW_XSIMD xsimd) |
|
endif() |
|
endif() |
|
|
|
macro(build_zlib) |
|
message(STATUS "Building ZLIB from source") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") |
|
|
|
if(NOT EXISTS ${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a) |
|
execute_process(COMMAND embuilder --pic --force build zlib) |
|
endif() |
|
add_library(ZLIB::ZLIB STATIC IMPORTED) |
|
set_property(TARGET ZLIB::ZLIB |
|
PROPERTY IMPORTED_LOCATION |
|
"${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a") |
|
target_include_directories(ZLIB::ZLIB INTERFACE "${EMSCRIPTEN_SYSROOT}/include") |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB) |
|
else() |
|
set(ZLIB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep/src/zlib_ep-install") |
|
if(MSVC) |
|
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") |
|
set(ZLIB_STATIC_LIB_NAME zlibstaticd.lib) |
|
else() |
|
set(ZLIB_STATIC_LIB_NAME zlibstatic.lib) |
|
endif() |
|
else() |
|
set(ZLIB_STATIC_LIB_NAME libz.a) |
|
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}") |
|
|
|
externalproject_add(zlib_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${ZLIB_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_ZLIB_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${ZLIB_STATIC_LIB}" |
|
CMAKE_ARGS ${ZLIB_CMAKE_ARGS}) |
|
|
|
file(MAKE_DIRECTORY "${ZLIB_PREFIX}/include") |
|
|
|
add_library(ZLIB::ZLIB STATIC IMPORTED) |
|
set(ZLIB_LIBRARIES ${ZLIB_STATIC_LIB}) |
|
set(ZLIB_INCLUDE_DIRS "${ZLIB_PREFIX}/include") |
|
set_target_properties(ZLIB::ZLIB PROPERTIES IMPORTED_LOCATION ${ZLIB_LIBRARIES}) |
|
target_include_directories(ZLIB::ZLIB BEFORE INTERFACE "${ZLIB_INCLUDE_DIRS}") |
|
|
|
add_dependencies(ZLIB::ZLIB zlib_ep) |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB) |
|
endif() |
|
|
|
set(ZLIB_VENDORED TRUE) |
|
endmacro() |
|
|
|
if(ARROW_WITH_ZLIB) |
|
resolve_dependency(ZLIB PC_PACKAGE_NAMES zlib) |
|
endif() |
|
|
|
macro(build_lz4) |
|
message(STATUS "Building LZ4 from source") |
|
|
|
set(LZ4_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/lz4_ep-install") |
|
|
|
set(LZ4_STATIC_LIB |
|
"${LZ4_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}lz4${CMAKE_STATIC_LIBRARY_SUFFIX}") |
|
|
|
set(LZ4_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> |
|
-DLZ4_BUILD_CLI=OFF -DLZ4_BUILD_LEGACY_LZ4C=OFF) |
|
|
|
|
|
externalproject_add(lz4_ep |
|
${EP_COMMON_OPTIONS} |
|
CMAKE_ARGS ${LZ4_CMAKE_ARGS} |
|
SOURCE_SUBDIR "build/cmake" |
|
INSTALL_DIR ${LZ4_PREFIX} |
|
URL ${LZ4_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_LZ4_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS ${LZ4_STATIC_LIB}) |
|
|
|
file(MAKE_DIRECTORY "${LZ4_PREFIX}/include") |
|
add_library(LZ4::lz4 STATIC IMPORTED) |
|
set_target_properties(LZ4::lz4 PROPERTIES IMPORTED_LOCATION "${LZ4_STATIC_LIB}") |
|
target_include_directories(LZ4::lz4 BEFORE INTERFACE "${LZ4_PREFIX}/include") |
|
add_dependencies(LZ4::lz4 lz4_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS LZ4::lz4) |
|
endmacro() |
|
|
|
if(ARROW_WITH_LZ4) |
|
resolve_dependency(lz4 |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
liblz4) |
|
endif() |
|
|
|
macro(build_zstd) |
|
message(STATUS "Building Zstandard from source") |
|
|
|
set(ZSTD_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zstd_ep-install") |
|
|
|
set(ZSTD_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${ZSTD_PREFIX}" |
|
-DZSTD_BUILD_PROGRAMS=OFF |
|
-DZSTD_BUILD_SHARED=OFF |
|
-DZSTD_BUILD_STATIC=ON |
|
-DZSTD_MULTITHREAD_SUPPORT=OFF) |
|
|
|
if(MSVC) |
|
set(ZSTD_STATIC_LIB "${ZSTD_PREFIX}/lib/zstd_static.lib") |
|
if(ARROW_USE_STATIC_CRT) |
|
list(APPEND ZSTD_CMAKE_ARGS "-DZSTD_USE_STATIC_RUNTIME=ON") |
|
endif() |
|
else() |
|
set(ZSTD_STATIC_LIB "${ZSTD_PREFIX}/lib/libzstd.a") |
|
endif() |
|
|
|
externalproject_add(zstd_ep |
|
${EP_COMMON_OPTIONS} |
|
CMAKE_ARGS ${ZSTD_CMAKE_ARGS} |
|
SOURCE_SUBDIR "build/cmake" |
|
INSTALL_DIR ${ZSTD_PREFIX} |
|
URL ${ZSTD_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_ZSTD_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${ZSTD_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY "${ZSTD_PREFIX}/include") |
|
|
|
add_library(zstd::libzstd_static STATIC IMPORTED) |
|
set_target_properties(zstd::libzstd_static PROPERTIES IMPORTED_LOCATION |
|
"${ZSTD_STATIC_LIB}") |
|
target_include_directories(zstd::libzstd_static BEFORE |
|
INTERFACE "${ZSTD_PREFIX}/include") |
|
|
|
add_dependencies(zstd::libzstd_static zstd_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS zstd::libzstd_static) |
|
|
|
set(ZSTD_VENDORED TRUE) |
|
endmacro() |
|
|
|
if(ARROW_WITH_ZSTD) |
|
|
|
resolve_dependency(zstd |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
libzstd |
|
REQUIRED_VERSION |
|
1.4.0) |
|
|
|
if(ZSTD_VENDORED) |
|
set(ARROW_ZSTD_LIBZSTD zstd::libzstd_static) |
|
else() |
|
if(ARROW_ZSTD_USE_SHARED) |
|
set(ARROW_ZSTD_LIBZSTD zstd::libzstd_shared) |
|
else() |
|
set(ARROW_ZSTD_LIBZSTD zstd::libzstd_static) |
|
endif() |
|
if(NOT TARGET ${ARROW_ZSTD_LIBZSTD}) |
|
message(FATAL_ERROR "Zstandard target doesn't exist: ${ARROW_ZSTD_LIBZSTD}") |
|
endif() |
|
message(STATUS "Found Zstandard: ${ARROW_ZSTD_LIBZSTD}") |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_re2) |
|
message(STATUS "Building RE2 from source") |
|
set(RE2_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/re2_ep-install") |
|
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}") |
|
|
|
externalproject_add(re2_ep |
|
${EP_COMMON_OPTIONS} |
|
INSTALL_DIR ${RE2_PREFIX} |
|
URL ${RE2_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_RE2_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${RE2_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS "${RE2_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY "${RE2_PREFIX}/include") |
|
add_library(re2::re2 STATIC IMPORTED) |
|
set_target_properties(re2::re2 PROPERTIES IMPORTED_LOCATION "${RE2_STATIC_LIB}") |
|
target_include_directories(re2::re2 BEFORE INTERFACE "${RE2_PREFIX}/include") |
|
|
|
add_dependencies(re2::re2 re2_ep) |
|
set(RE2_VENDORED TRUE) |
|
|
|
set(RE2_LIB ${RE2_STATIC_LIB}) |
|
set(RE2_INCLUDE_DIR "${RE2_PREFIX}/include") |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS re2::re2) |
|
endmacro() |
|
|
|
if(ARROW_WITH_RE2) |
|
resolve_dependency(re2 |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
re2) |
|
endif() |
|
|
|
macro(build_bzip2) |
|
message(STATUS "Building BZip2 from source") |
|
set(BZIP2_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/bzip2_ep-install") |
|
set(BZIP2_STATIC_LIB |
|
"${BZIP2_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}bz2${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
set(BZIP2_EXTRA_ARGS "CC=${CMAKE_C_COMPILER}" "CFLAGS=${EP_C_FLAGS}") |
|
|
|
if(CMAKE_OSX_SYSROOT) |
|
list(APPEND BZIP2_EXTRA_ARGS "SDKROOT=${CMAKE_OSX_SYSROOT}") |
|
endif() |
|
|
|
if(CMAKE_AR) |
|
list(APPEND BZIP2_EXTRA_ARGS AR=${CMAKE_AR}) |
|
endif() |
|
|
|
if(CMAKE_RANLIB) |
|
list(APPEND BZIP2_EXTRA_ARGS RANLIB=${CMAKE_RANLIB}) |
|
endif() |
|
|
|
externalproject_add(bzip2_ep |
|
${EP_COMMON_OPTIONS} |
|
CONFIGURE_COMMAND "" |
|
BUILD_IN_SOURCE 1 |
|
BUILD_COMMAND ${MAKE} libbz2.a ${MAKE_BUILD_ARGS} |
|
${BZIP2_EXTRA_ARGS} |
|
INSTALL_COMMAND ${MAKE} install -j1 PREFIX=${BZIP2_PREFIX} |
|
${BZIP2_EXTRA_ARGS} |
|
INSTALL_DIR ${BZIP2_PREFIX} |
|
URL ${ARROW_BZIP2_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_BZIP2_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${BZIP2_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY "${BZIP2_PREFIX}/include") |
|
add_library(BZip2::BZip2 STATIC IMPORTED) |
|
set_target_properties(BZip2::BZip2 PROPERTIES IMPORTED_LOCATION "${BZIP2_STATIC_LIB}") |
|
target_include_directories(BZip2::BZip2 BEFORE INTERFACE "${BZIP2_PREFIX}/include") |
|
set(BZIP2_INCLUDE_DIR "${BZIP2_PREFIX}/include") |
|
|
|
add_dependencies(BZip2::BZip2 bzip2_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS BZip2::BZip2) |
|
endmacro() |
|
|
|
if(ARROW_WITH_BZ2) |
|
resolve_dependency(BZip2 PC_PACKAGE_NAMES bzip2) |
|
|
|
if(${BZip2_SOURCE} STREQUAL "SYSTEM" |
|
AND NOT bzip2_PC_FOUND |
|
AND ARROW_BUILD_STATIC) |
|
get_target_property(BZIP2_TYPE BZip2::BZip2 TYPE) |
|
if(BZIP2_TYPE STREQUAL "INTERFACE_LIBRARY") |
|
|
|
string(APPEND ARROW_PC_LIBS_PRIVATE |
|
" $<TARGET_FILE:CONAN_LIB::bzip2_bz2_$<CONFIG>>") |
|
else() |
|
string(APPEND ARROW_PC_LIBS_PRIVATE " $<TARGET_FILE:BZip2::BZip2>") |
|
endif() |
|
endif() |
|
endif() |
|
|
|
macro(build_utf8proc) |
|
message(STATUS "Building utf8proc from source") |
|
set(UTF8PROC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/utf8proc_ep-install") |
|
if(MSVC) |
|
set(UTF8PROC_STATIC_LIB "${UTF8PROC_PREFIX}/lib/utf8proc_static.lib") |
|
else() |
|
set(UTF8PROC_STATIC_LIB |
|
"${UTF8PROC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}utf8proc${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
endif() |
|
|
|
set(UTF8PROC_CMAKE_ARGS ${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${UTF8PROC_PREFIX}") |
|
|
|
externalproject_add(utf8proc_ep |
|
${EP_COMMON_OPTIONS} |
|
CMAKE_ARGS ${UTF8PROC_CMAKE_ARGS} |
|
INSTALL_DIR ${UTF8PROC_PREFIX} |
|
URL ${ARROW_UTF8PROC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_UTF8PROC_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS "${UTF8PROC_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY "${UTF8PROC_PREFIX}/include") |
|
add_library(utf8proc::utf8proc STATIC IMPORTED) |
|
set_target_properties(utf8proc::utf8proc |
|
PROPERTIES IMPORTED_LOCATION "${UTF8PROC_STATIC_LIB}" |
|
INTERFACE_COMPILE_DEFINITIONS "UTF8PROC_STATIC") |
|
target_include_directories(utf8proc::utf8proc BEFORE |
|
INTERFACE "${UTF8PROC_PREFIX}/include") |
|
|
|
add_dependencies(utf8proc::utf8proc utf8proc_ep) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS utf8proc::utf8proc) |
|
endmacro() |
|
|
|
if(ARROW_WITH_UTF8PROC) |
|
set(utf8proc_resolve_dependency_args utf8proc PC_PACKAGE_NAMES libutf8proc) |
|
if(NOT VCPKG_TOOLCHAIN) |
|
|
|
|
|
list(APPEND utf8proc_resolve_dependency_args REQUIRED_VERSION "2.2.0") |
|
endif() |
|
resolve_dependency(${utf8proc_resolve_dependency_args}) |
|
endif() |
|
|
|
macro(build_cares) |
|
message(STATUS "Building c-ares from source") |
|
set(CARES_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/cares_ep-install") |
|
set(CARES_INCLUDE_DIR "${CARES_PREFIX}/include") |
|
|
|
|
|
|
|
set(CARES_STATIC_LIB |
|
"${CARES_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}cares${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
set(CARES_CMAKE_ARGS "${EP_COMMON_CMAKE_ARGS}" "-DCMAKE_INSTALL_PREFIX=${CARES_PREFIX}" |
|
-DCARES_SHARED=OFF -DCARES_STATIC=ON) |
|
|
|
externalproject_add(cares_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${CARES_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_CARES_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${CARES_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS "${CARES_STATIC_LIB}") |
|
|
|
file(MAKE_DIRECTORY ${CARES_INCLUDE_DIR}) |
|
|
|
add_library(c-ares::cares STATIC IMPORTED) |
|
set_target_properties(c-ares::cares PROPERTIES IMPORTED_LOCATION "${CARES_STATIC_LIB}") |
|
target_include_directories(c-ares::cares BEFORE INTERFACE "${CARES_INCLUDE_DIR}") |
|
add_dependencies(c-ares::cares cares_ep) |
|
|
|
if(APPLE) |
|
|
|
find_library(LIBRESOLV_LIBRARY NAMES resolv libresolv REQUIRED) |
|
set_target_properties(c-ares::cares PROPERTIES INTERFACE_LINK_LIBRARIES |
|
"${LIBRESOLV_LIBRARY}") |
|
endif() |
|
|
|
set(CARES_VENDORED TRUE) |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS c-ares::cares) |
|
endmacro() |
|
|
|
|
|
|
|
|
|
macro(ensure_absl) |
|
if(NOT absl_FOUND) |
|
if(${absl_SOURCE} STREQUAL "AUTO") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(ARROW_ABSL_REQUIRED_LTS_VERSIONS 20230125 20220623 20211102) |
|
foreach(_VERSION ${ARROW_ABSL_REQUIRED_LTS_VERSIONS}) |
|
find_package(absl ${_VERSION}) |
|
if(absl_FOUND) |
|
break() |
|
endif() |
|
endforeach() |
|
|
|
|
|
if(NOT absl_FOUND) |
|
set(absl_SOURCE "BUNDLED") |
|
endif() |
|
endif() |
|
resolve_dependency(absl) |
|
endif() |
|
endmacro() |
|
|
|
macro(build_absl) |
|
message(STATUS "Building Abseil-cpp from source") |
|
set(absl_FOUND TRUE) |
|
set(absl_VERSION ${ARROW_ABSL_BUILD_VERSION}) |
|
set(ABSL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/absl_ep-install") |
|
set(ABSL_INCLUDE_DIR "${ABSL_PREFIX}/include") |
|
set(ABSL_CMAKE_ARGS "${EP_COMMON_CMAKE_ARGS}" -DABSL_RUN_TESTS=OFF |
|
"-DCMAKE_INSTALL_PREFIX=${ABSL_PREFIX}") |
|
set(ABSL_BUILD_BYPRODUCTS) |
|
set(ABSL_LIBRARIES) |
|
|
|
|
|
|
|
|
|
|
|
|
|
set(_ABSL_LIBS |
|
bad_any_cast_impl |
|
bad_optional_access |
|
bad_variant_access |
|
base |
|
city |
|
civil_time |
|
cord |
|
cord_internal |
|
cordz_functions |
|
cordz_handle |
|
cordz_info |
|
cordz_sample_token |
|
debugging_internal |
|
demangle_internal |
|
examine_stack |
|
exponential_biased |
|
failure_signal_handler |
|
flags |
|
flags_commandlineflag |
|
flags_commandlineflag_internal |
|
flags_config |
|
flags_internal |
|
flags_marshalling |
|
flags_parse |
|
flags_private_handle_accessor |
|
flags_program_name |
|
flags_reflection |
|
flags_usage |
|
flags_usage_internal |
|
graphcycles_internal |
|
hash |
|
hashtablez_sampler |
|
int128 |
|
leak_check |
|
leak_check_disable |
|
log_severity |
|
low_level_hash |
|
malloc_internal |
|
periodic_sampler |
|
random_distributions |
|
random_internal_distribution_test_util |
|
random_internal_platform |
|
random_internal_pool_urbg |
|
random_internal_randen |
|
random_internal_randen_hwaes |
|
random_internal_randen_hwaes_impl |
|
random_internal_randen_slow |
|
random_internal_seed_material |
|
random_seed_gen_exception |
|
random_seed_sequences |
|
raw_hash_set |
|
raw_logging_internal |
|
scoped_set_env |
|
spinlock_wait |
|
stacktrace |
|
status |
|
statusor |
|
str_format_internal |
|
strerror |
|
strings |
|
strings_internal |
|
symbolize |
|
synchronization |
|
throw_delegate |
|
time |
|
time_zone |
|
wyhash) |
|
|
|
|
|
|
|
|
|
set(_ABSL_INTERFACE_LIBS |
|
algorithm |
|
algorithm_container |
|
any |
|
atomic_hook |
|
bad_any_cast |
|
base_internal |
|
bind_front |
|
bits |
|
btree |
|
cleanup |
|
cleanup_internal |
|
compare |
|
compressed_tuple |
|
config |
|
container_common |
|
container_memory |
|
cordz_statistics |
|
cordz_update_scope |
|
cordz_update_tracker |
|
core_headers |
|
counting_allocator |
|
debugging |
|
dynamic_annotations |
|
endian |
|
errno_saver |
|
fast_type_id |
|
fixed_array |
|
flags_path_util |
|
flat_hash_map |
|
flat_hash_set |
|
function_ref |
|
hash_function_defaults |
|
hash_policy_traits |
|
hashtable_debug |
|
hashtable_debug_hooks |
|
have_sse |
|
inlined_vector |
|
inlined_vector_internal |
|
kernel_timeout_internal |
|
layout |
|
memory |
|
meta |
|
node_hash_map |
|
node_hash_policy |
|
node_hash_set |
|
numeric |
|
numeric_representation |
|
optional |
|
pretty_function |
|
random_bit_gen_ref |
|
random_internal_distribution_caller |
|
random_internal_fast_uniform_bits |
|
random_internal_fastmath |
|
random_internal_generate_real |
|
random_internal_iostream_state_saver |
|
random_internal_mock_helpers |
|
random_internal_nonsecure_base |
|
random_internal_pcg_engine |
|
random_internal_randen_engine |
|
random_internal_salted_seed_seq |
|
random_internal_traits |
|
random_internal_uniform_helper |
|
random_internal_wide_multiply |
|
random_random |
|
raw_hash_map |
|
sample_recorder |
|
span |
|
str_format |
|
type_traits |
|
utility |
|
variant) |
|
|
|
foreach(_ABSL_LIB ${_ABSL_LIBS}) |
|
set(_ABSL_STATIC_LIBRARY |
|
"${ABSL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}absl_${_ABSL_LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
add_library(absl::${_ABSL_LIB} STATIC IMPORTED) |
|
set_target_properties(absl::${_ABSL_LIB} PROPERTIES IMPORTED_LOCATION |
|
${_ABSL_STATIC_LIBRARY}) |
|
target_include_directories(absl::${_ABSL_LIB} BEFORE INTERFACE "${ABSL_INCLUDE_DIR}") |
|
list(APPEND ABSL_BUILD_BYPRODUCTS ${_ABSL_STATIC_LIBRARY}) |
|
endforeach() |
|
foreach(_ABSL_LIB ${_ABSL_INTERFACE_LIBS}) |
|
add_library(absl::${_ABSL_LIB} INTERFACE IMPORTED) |
|
target_include_directories(absl::${_ABSL_LIB} BEFORE INTERFACE "${ABSL_INCLUDE_DIR}") |
|
endforeach() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set_property(TARGET absl::algorithm PROPERTY INTERFACE_LINK_LIBRARIES absl::config) |
|
set_property(TARGET absl::algorithm_container |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::algorithm absl::core_headers |
|
absl::meta) |
|
set_property(TARGET absl::any |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bad_any_cast |
|
absl::config |
|
absl::core_headers |
|
absl::fast_type_id |
|
absl::type_traits |
|
absl::utility) |
|
set_property(TARGET absl::atomic_hook PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::core_headers) |
|
set_property(TARGET absl::bad_any_cast PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bad_any_cast_impl absl::config) |
|
set_property(TARGET absl::bad_any_cast_impl |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::raw_logging_internal) |
|
set_property(TARGET absl::bad_optional_access |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::raw_logging_internal) |
|
set_property(TARGET absl::bad_variant_access |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::raw_logging_internal) |
|
set_property(TARGET absl::base |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::atomic_hook |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::dynamic_annotations |
|
absl::log_severity |
|
absl::raw_logging_internal |
|
absl::spinlock_wait |
|
absl::type_traits) |
|
set_property(TARGET absl::base_internal PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::type_traits) |
|
set_property(TARGET absl::bind_front |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal |
|
absl::compressed_tuple) |
|
set_property(TARGET absl::bits PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers) |
|
set_property(TARGET absl::btree |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::container_common |
|
absl::compare |
|
absl::compressed_tuple |
|
absl::container_memory |
|
absl::cord |
|
absl::core_headers |
|
absl::layout |
|
absl::memory |
|
absl::strings |
|
absl::throw_delegate |
|
absl::type_traits |
|
absl::utility) |
|
set_property(TARGET absl::city PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::core_headers absl::endian) |
|
set_property(TARGET absl::cleanup |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::cleanup_internal absl::config |
|
absl::core_headers) |
|
set_property(TARGET absl::cleanup_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal absl::core_headers |
|
absl::utility) |
|
set_property(TARGET absl::compare PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers |
|
absl::type_traits) |
|
set_property(TARGET absl::compressed_tuple PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::utility) |
|
set_property(TARGET absl::container_common PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::type_traits) |
|
set_property(TARGET absl::container_memory |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::memory |
|
absl::type_traits |
|
absl::utility) |
|
set_property(TARGET absl::cord |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::config |
|
absl::cord_internal |
|
absl::cordz_functions |
|
absl::cordz_info |
|
absl::cordz_update_scope |
|
absl::cordz_update_tracker |
|
absl::core_headers |
|
absl::endian |
|
absl::fixed_array |
|
absl::function_ref |
|
absl::inlined_vector |
|
absl::optional |
|
absl::raw_logging_internal |
|
absl::strings |
|
absl::type_traits) |
|
set_property(TARGET absl::cord_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base_internal |
|
absl::compressed_tuple |
|
absl::config |
|
absl::core_headers |
|
absl::endian |
|
absl::inlined_vector |
|
absl::layout |
|
absl::raw_logging_internal |
|
absl::strings |
|
absl::throw_delegate |
|
absl::type_traits) |
|
set_property(TARGET absl::cordz_functions |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::exponential_biased |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::cordz_handle |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::config |
|
absl::raw_logging_internal |
|
absl::synchronization) |
|
set_property(TARGET absl::cordz_info |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::config |
|
absl::cord_internal |
|
absl::cordz_functions |
|
absl::cordz_handle |
|
absl::cordz_statistics |
|
absl::cordz_update_tracker |
|
absl::core_headers |
|
absl::inlined_vector |
|
absl::span |
|
absl::raw_logging_internal |
|
absl::stacktrace |
|
absl::synchronization) |
|
set_property(TARGET absl::cordz_sample_token |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::cordz_handle |
|
absl::cordz_info) |
|
set_property(TARGET absl::cordz_statistics |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::cordz_update_tracker |
|
absl::synchronization) |
|
set_property(TARGET absl::cordz_update_scope |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::cord_internal |
|
absl::cordz_info |
|
absl::cordz_update_tracker |
|
absl::core_headers) |
|
set_property(TARGET absl::cordz_update_tracker PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::core_headers PROPERTY INTERFACE_LINK_LIBRARIES absl::config) |
|
set_property(TARGET absl::counting_allocator PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::debugging PROPERTY INTERFACE_LINK_LIBRARIES absl::stacktrace |
|
absl::leak_check) |
|
set_property(TARGET absl::debugging_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::core_headers |
|
absl::config |
|
absl::dynamic_annotations |
|
absl::errno_saver |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::demangle_internal PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base absl::core_headers) |
|
set_property(TARGET absl::dynamic_annotations PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::endian PROPERTY INTERFACE_LINK_LIBRARIES absl::base |
|
absl::config absl::core_headers) |
|
set_property(TARGET absl::errno_saver PROPERTY INTERFACE_LINK_LIBRARIES absl::config) |
|
set_property(TARGET absl::examine_stack |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::stacktrace |
|
absl::symbolize |
|
absl::config |
|
absl::core_headers |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::exponential_biased PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config absl::core_headers) |
|
set_property(TARGET absl::failure_signal_handler |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::examine_stack |
|
absl::stacktrace |
|
absl::base |
|
absl::config |
|
absl::core_headers |
|
absl::errno_saver |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::fast_type_id PROPERTY INTERFACE_LINK_LIBRARIES absl::config) |
|
set_property(TARGET absl::fixed_array |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::compressed_tuple |
|
absl::algorithm |
|
absl::config |
|
absl::core_headers |
|
absl::dynamic_annotations |
|
absl::throw_delegate |
|
absl::memory) |
|
set_property(TARGET absl::flags |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::flags_commandlineflag |
|
absl::flags_config |
|
absl::flags_internal |
|
absl::flags_reflection |
|
absl::base |
|
absl::core_headers |
|
absl::strings) |
|
set_property(TARGET absl::flags_commandlineflag |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::fast_type_id |
|
absl::flags_commandlineflag_internal |
|
absl::optional |
|
absl::strings) |
|
set_property(TARGET absl::flags_commandlineflag_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::fast_type_id) |
|
set_property(TARGET absl::flags_config |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::flags_path_util |
|
absl::flags_program_name |
|
absl::core_headers |
|
absl::strings |
|
absl::synchronization) |
|
set_property(TARGET absl::flags_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::config |
|
absl::flags_commandlineflag |
|
absl::flags_commandlineflag_internal |
|
absl::flags_config |
|
absl::flags_marshalling |
|
absl::synchronization |
|
absl::meta |
|
absl::utility) |
|
set_property(TARGET absl::flags_marshalling |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::log_severity |
|
absl::strings |
|
absl::str_format) |
|
set_property(TARGET absl::flags_parse |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::flags_config |
|
absl::flags |
|
absl::flags_commandlineflag |
|
absl::flags_commandlineflag_internal |
|
absl::flags_internal |
|
absl::flags_private_handle_accessor |
|
absl::flags_program_name |
|
absl::flags_reflection |
|
absl::flags_usage |
|
absl::strings |
|
absl::synchronization) |
|
set_property(TARGET absl::flags_path_util PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config absl::strings) |
|
set_property(TARGET absl::flags_private_handle_accessor |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::flags_commandlineflag |
|
absl::flags_commandlineflag_internal |
|
absl::strings) |
|
set_property(TARGET absl::flags_program_name |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::flags_path_util |
|
absl::strings |
|
absl::synchronization) |
|
set_property(TARGET absl::flags_reflection |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::flags_commandlineflag |
|
absl::flags_private_handle_accessor |
|
absl::flags_config |
|
absl::strings |
|
absl::synchronization |
|
absl::flat_hash_map) |
|
set_property(TARGET absl::flags_usage |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::flags_usage_internal |
|
absl::strings |
|
absl::synchronization) |
|
set_property(TARGET absl::flags_usage_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::flags_config |
|
absl::flags |
|
absl::flags_commandlineflag |
|
absl::flags_internal |
|
absl::flags_path_util |
|
absl::flags_private_handle_accessor |
|
absl::flags_program_name |
|
absl::flags_reflection |
|
absl::flat_hash_map |
|
absl::strings |
|
absl::synchronization) |
|
set_property(TARGET absl::flat_hash_map |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::container_memory |
|
absl::hash_function_defaults |
|
absl::raw_hash_map |
|
absl::algorithm_container |
|
absl::memory) |
|
set_property(TARGET absl::flat_hash_set |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::container_memory |
|
absl::hash_function_defaults |
|
absl::raw_hash_set |
|
absl::algorithm_container |
|
absl::core_headers |
|
absl::memory) |
|
set_property(TARGET absl::function_ref |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal absl::core_headers |
|
absl::meta) |
|
set_property(TARGET absl::graphcycles_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::malloc_internal |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::hash |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::city |
|
absl::config |
|
absl::core_headers |
|
absl::endian |
|
absl::fixed_array |
|
absl::meta |
|
absl::int128 |
|
absl::strings |
|
absl::optional |
|
absl::variant |
|
absl::utility |
|
absl::low_level_hash) |
|
set_property(TARGET absl::hash_function_defaults |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::cord |
|
absl::hash |
|
absl::strings) |
|
set_property(TARGET absl::hash_policy_traits PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::meta) |
|
set_property(TARGET absl::hashtable_debug PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::hashtable_debug_hooks) |
|
set_property(TARGET absl::hashtable_debug_hooks PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::hashtablez_sampler |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::exponential_biased |
|
absl::have_sse |
|
absl::sample_recorder |
|
absl::synchronization) |
|
set_property(TARGET absl::inlined_vector |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::algorithm |
|
absl::core_headers |
|
absl::inlined_vector_internal |
|
absl::throw_delegate |
|
absl::memory) |
|
set_property(TARGET absl::inlined_vector_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::compressed_tuple |
|
absl::core_headers |
|
absl::memory |
|
absl::span |
|
absl::type_traits) |
|
set_property(TARGET absl::int128 PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::core_headers absl::bits) |
|
set_property(TARGET absl::kernel_timeout_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers |
|
absl::raw_logging_internal absl::time) |
|
set_property(TARGET absl::layout |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::meta |
|
absl::strings |
|
absl::span |
|
absl::utility) |
|
set_property(TARGET absl::leak_check PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::core_headers) |
|
set_property(TARGET absl::log_severity PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::core_headers) |
|
set_property(TARGET absl::low_level_hash |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bits |
|
absl::config |
|
absl::endian |
|
absl::int128) |
|
set_property(TARGET absl::malloc_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::dynamic_annotations |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::memory PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers |
|
absl::meta) |
|
set_property(TARGET absl::meta PROPERTY INTERFACE_LINK_LIBRARIES absl::type_traits) |
|
set_property(TARGET absl::node_hash_map |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::container_memory |
|
absl::hash_function_defaults |
|
absl::node_hash_policy |
|
absl::raw_hash_map |
|
absl::algorithm_container |
|
absl::memory) |
|
set_property(TARGET absl::node_hash_policy PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::node_hash_set |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::hash_function_defaults |
|
absl::node_hash_policy |
|
absl::raw_hash_set |
|
absl::algorithm_container |
|
absl::memory) |
|
set_property(TARGET absl::numeric PROPERTY INTERFACE_LINK_LIBRARIES absl::int128) |
|
set_property(TARGET absl::numeric_representation PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::optional |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bad_optional_access |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::memory |
|
absl::type_traits |
|
absl::utility) |
|
set_property(TARGET absl::periodic_sampler |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::core_headers |
|
absl::exponential_biased) |
|
set_property(TARGET absl::random_bit_gen_ref |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::core_headers |
|
absl::random_internal_distribution_caller |
|
absl::random_internal_fast_uniform_bits |
|
absl::type_traits) |
|
set_property(TARGET absl::random_distributions |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::random_internal_generate_real |
|
absl::random_internal_distribution_caller |
|
absl::random_internal_fast_uniform_bits |
|
absl::random_internal_fastmath |
|
absl::random_internal_iostream_state_saver |
|
absl::random_internal_traits |
|
absl::random_internal_uniform_helper |
|
absl::random_internal_wide_multiply |
|
absl::strings |
|
absl::type_traits) |
|
set_property(TARGET absl::random_internal_distribution_caller |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config absl::utility |
|
absl::fast_type_id) |
|
set_property(TARGET absl::random_internal_distribution_test_util |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::raw_logging_internal |
|
absl::strings |
|
absl::str_format |
|
absl::span) |
|
set_property(TARGET absl::random_internal_fast_uniform_bits |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config) |
|
set_property(TARGET absl::random_internal_fastmath PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bits) |
|
set_property(TARGET absl::random_internal_generate_real |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bits |
|
absl::random_internal_fastmath |
|
absl::random_internal_traits |
|
absl::type_traits) |
|
set_property(TARGET absl::random_internal_iostream_state_saver |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::int128 absl::type_traits) |
|
set_property(TARGET absl::random_internal_mock_helpers |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::fast_type_id absl::optional) |
|
set_property(TARGET absl::random_internal_nonsecure_base |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::core_headers |
|
absl::optional |
|
absl::random_internal_pool_urbg |
|
absl::random_internal_salted_seed_seq |
|
absl::random_internal_seed_material |
|
absl::span |
|
absl::type_traits) |
|
set_property(TARGET absl::random_internal_pcg_engine |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::int128 |
|
absl::random_internal_fastmath |
|
absl::random_internal_iostream_state_saver |
|
absl::type_traits) |
|
set_property(TARGET absl::random_internal_platform PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::random_internal_pool_urbg |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::config |
|
absl::core_headers |
|
absl::endian |
|
absl::random_internal_randen |
|
absl::random_internal_seed_material |
|
absl::random_internal_traits |
|
absl::random_seed_gen_exception |
|
absl::raw_logging_internal |
|
absl::span) |
|
set_property(TARGET absl::random_internal_randen |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform |
|
absl::random_internal_randen_hwaes |
|
absl::random_internal_randen_slow) |
|
set_property(TARGET absl::random_internal_randen_engine |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::endian |
|
absl::random_internal_iostream_state_saver |
|
absl::random_internal_randen |
|
absl::raw_logging_internal |
|
absl::type_traits) |
|
set_property(TARGET absl::random_internal_randen_hwaes |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform |
|
absl::random_internal_randen_hwaes_impl absl::config) |
|
set_property(TARGET absl::random_internal_randen_hwaes_impl |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform |
|
absl::config) |
|
set_property(TARGET absl::random_internal_randen_slow |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::random_internal_platform |
|
absl::config) |
|
set_property(TARGET absl::random_internal_salted_seed_seq |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::inlined_vector |
|
absl::optional |
|
absl::span |
|
absl::random_internal_seed_material |
|
absl::type_traits) |
|
set_property(TARGET absl::random_internal_seed_material |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::core_headers |
|
absl::optional |
|
absl::random_internal_fast_uniform_bits |
|
absl::raw_logging_internal |
|
absl::span |
|
absl::strings) |
|
set_property(TARGET absl::random_internal_traits PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::random_internal_uniform_helper |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::random_internal_traits absl::type_traits) |
|
set_property(TARGET absl::random_internal_wide_multiply |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::bits absl::config absl::int128) |
|
set_property(TARGET absl::random_random |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::random_distributions |
|
absl::random_internal_nonsecure_base |
|
absl::random_internal_pcg_engine |
|
absl::random_internal_pool_urbg |
|
absl::random_internal_randen_engine |
|
absl::random_seed_sequences) |
|
set_property(TARGET absl::random_seed_gen_exception PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config) |
|
set_property(TARGET absl::random_seed_sequences |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::inlined_vector |
|
absl::random_internal_nonsecure_base |
|
absl::random_internal_pool_urbg |
|
absl::random_internal_salted_seed_seq |
|
absl::random_internal_seed_material |
|
absl::random_seed_gen_exception |
|
absl::span) |
|
set_property(TARGET absl::raw_hash_map |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::container_memory |
|
absl::raw_hash_set absl::throw_delegate) |
|
set_property(TARGET absl::raw_hash_set |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bits |
|
absl::compressed_tuple |
|
absl::config |
|
absl::container_common |
|
absl::container_memory |
|
absl::core_headers |
|
absl::endian |
|
absl::hash_policy_traits |
|
absl::hashtable_debug_hooks |
|
absl::have_sse |
|
absl::memory |
|
absl::meta |
|
absl::optional |
|
absl::utility |
|
absl::hashtablez_sampler) |
|
set_property(TARGET absl::raw_logging_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::atomic_hook |
|
absl::config |
|
absl::core_headers |
|
absl::log_severity) |
|
set_property(TARGET absl::sample_recorder PROPERTY INTERFACE_LINK_LIBRARIES absl::base |
|
absl::synchronization) |
|
set_property(TARGET absl::scoped_set_env PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::span |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::algorithm |
|
absl::core_headers |
|
absl::throw_delegate |
|
absl::type_traits) |
|
set_property(TARGET absl::spinlock_wait |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::base_internal absl::core_headers |
|
absl::errno_saver) |
|
set_property(TARGET absl::stacktrace |
|
PROPERTY INTERFACE_LINK_LIBRARIES absl::debugging_internal absl::config |
|
absl::core_headers) |
|
set_property(TARGET absl::status |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::atomic_hook |
|
absl::config |
|
absl::core_headers |
|
absl::function_ref |
|
absl::raw_logging_internal |
|
absl::inlined_vector |
|
absl::stacktrace |
|
absl::symbolize |
|
absl::strings |
|
absl::cord |
|
absl::str_format |
|
absl::optional) |
|
set_property(TARGET absl::statusor |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::status |
|
absl::core_headers |
|
absl::raw_logging_internal |
|
absl::type_traits |
|
absl::strings |
|
absl::utility |
|
absl::variant) |
|
set_property(TARGET absl::str_format PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::str_format_internal) |
|
set_property(TARGET absl::str_format_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bits |
|
absl::strings |
|
absl::config |
|
absl::core_headers |
|
absl::numeric_representation |
|
absl::type_traits |
|
absl::int128 |
|
absl::span) |
|
set_property(TARGET absl::strerror PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::core_headers absl::errno_saver) |
|
set_property(TARGET absl::strings |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::strings_internal |
|
absl::base |
|
absl::bits |
|
absl::config |
|
absl::core_headers |
|
absl::endian |
|
absl::int128 |
|
absl::memory |
|
absl::raw_logging_internal |
|
absl::throw_delegate |
|
absl::type_traits) |
|
set_property(TARGET absl::strings_internal |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::config |
|
absl::core_headers |
|
absl::endian |
|
absl::raw_logging_internal |
|
absl::type_traits) |
|
set_property(TARGET absl::symbolize |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::debugging_internal |
|
absl::demangle_internal |
|
absl::base |
|
absl::config |
|
absl::core_headers |
|
absl::dynamic_annotations |
|
absl::malloc_internal |
|
absl::raw_logging_internal |
|
absl::strings) |
|
set_property(TARGET absl::synchronization |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::graphcycles_internal |
|
absl::kernel_timeout_internal |
|
absl::atomic_hook |
|
absl::base |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::dynamic_annotations |
|
absl::malloc_internal |
|
absl::raw_logging_internal |
|
absl::stacktrace |
|
absl::symbolize |
|
absl::time) |
|
set_property(TARGET absl::throw_delegate PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::raw_logging_internal) |
|
set_property(TARGET absl::time |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::base |
|
absl::civil_time |
|
absl::core_headers |
|
absl::int128 |
|
absl::raw_logging_internal |
|
absl::strings |
|
absl::time_zone) |
|
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 absl::type_traits) |
|
set_property(TARGET absl::variant |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
absl::bad_variant_access |
|
absl::base_internal |
|
absl::config |
|
absl::core_headers |
|
absl::type_traits |
|
absl::utility) |
|
set_property(TARGET absl::wyhash PROPERTY INTERFACE_LINK_LIBRARIES absl::config |
|
absl::endian absl::int128) |
|
|
|
if(APPLE) |
|
|
|
|
|
find_library(CoreFoundation CoreFoundation) |
|
set_property(TARGET absl::time |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES ${CoreFoundation}) |
|
endif() |
|
|
|
externalproject_add(absl_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${ABSL_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_ABSL_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${ABSL_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${ABSL_BUILD_BYPRODUCTS}) |
|
|
|
|
|
file(MAKE_DIRECTORY ${ABSL_INCLUDE_DIR}) |
|
|
|
set(ABSL_VENDORED TRUE) |
|
endmacro() |
|
|
|
macro(build_grpc) |
|
resolve_dependency(c-ares |
|
ARROW_CMAKE_PACKAGE_NAME |
|
ArrowFlight |
|
ARROW_PC_PACKAGE_NAME |
|
arrow-flight |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
libcares) |
|
ensure_absl() |
|
|
|
message(STATUS "Building gRPC from source") |
|
|
|
set(GRPC_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/grpc_ep-prefix/src/grpc_ep-build") |
|
set(GRPC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/grpc_ep-install") |
|
set(GRPC_HOME "${GRPC_PREFIX}") |
|
set(GRPC_INCLUDE_DIR "${GRPC_PREFIX}/include") |
|
|
|
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_STATIC_LIBRARY_GRPCPP_REFLECTION |
|
"${GRPC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}grpc++_reflection${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(GRPC_STATIC_LIBRARY_UPB |
|
"${GRPC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}upb${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(GRPC_CPP_PLUGIN "${GRPC_PREFIX}/bin/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}") |
|
|
|
set(GRPC_CMAKE_PREFIX) |
|
|
|
add_custom_target(grpc_dependencies) |
|
|
|
if(ABSL_VENDORED) |
|
add_dependencies(grpc_dependencies absl_ep) |
|
endif() |
|
if(CARES_VENDORED) |
|
add_dependencies(grpc_dependencies cares_ep) |
|
endif() |
|
|
|
if(GFLAGS_VENDORED) |
|
add_dependencies(grpc_dependencies gflags_ep) |
|
endif() |
|
|
|
if(RE2_VENDORED) |
|
add_dependencies(grpc_dependencies re2_ep) |
|
endif() |
|
|
|
add_dependencies(grpc_dependencies ${ARROW_PROTOBUF_LIBPROTOBUF} c-ares::cares |
|
ZLIB::ZLIB) |
|
|
|
get_target_property(GRPC_PROTOBUF_INCLUDE_DIR ${ARROW_PROTOBUF_LIBPROTOBUF} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(GRPC_PB_ROOT "${GRPC_PROTOBUF_INCLUDE_DIR}" DIRECTORY) |
|
get_target_property(GRPC_Protobuf_PROTOC_LIBRARY ${ARROW_PROTOBUF_LIBPROTOC} |
|
IMPORTED_LOCATION) |
|
get_target_property(GRPC_CARES_INCLUDE_DIR c-ares::cares INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(GRPC_CARES_ROOT "${GRPC_CARES_INCLUDE_DIR}" DIRECTORY) |
|
get_target_property(GRPC_GFLAGS_INCLUDE_DIR ${GFLAGS_LIBRARIES} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(GRPC_GFLAGS_ROOT "${GRPC_GFLAGS_INCLUDE_DIR}" DIRECTORY) |
|
get_target_property(GRPC_RE2_INCLUDE_DIR re2::re2 INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(GRPC_RE2_ROOT "${GRPC_RE2_INCLUDE_DIR}" DIRECTORY) |
|
|
|
|
|
|
|
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${ABSL_PREFIX}") |
|
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_PB_ROOT}") |
|
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_GFLAGS_ROOT}") |
|
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_CARES_ROOT}") |
|
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${GRPC_RE2_ROOT}") |
|
|
|
|
|
set(GRPC_CMAKE_PREFIX "${GRPC_CMAKE_PREFIX};${ZLIB_ROOT}") |
|
|
|
if(RAPIDJSON_VENDORED) |
|
add_dependencies(grpc_dependencies rapidjson_ep) |
|
endif() |
|
|
|
|
|
string(REPLACE ";" ${EP_LIST_SEPARATOR} GRPC_PREFIX_PATH_ALT_SEP "${GRPC_CMAKE_PREFIX}") |
|
|
|
set(GRPC_C_FLAGS "${EP_C_FLAGS}") |
|
set(GRPC_CXX_FLAGS "${EP_CXX_FLAGS}") |
|
if(NOT MSVC) |
|
|
|
|
|
string(APPEND |
|
GRPC_C_FLAGS |
|
" -Wno-attributes" |
|
" -Wno-format-security" |
|
" -Wno-unknown-warning-option") |
|
string(APPEND |
|
GRPC_CXX_FLAGS |
|
" -Wno-attributes" |
|
" -Wno-format-security" |
|
" -Wno-unknown-warning-option") |
|
endif() |
|
|
|
set(GRPC_CMAKE_ARGS |
|
"${EP_COMMON_CMAKE_ARGS}" |
|
"-DCMAKE_C_FLAGS=${GRPC_C_FLAGS}" |
|
"-DCMAKE_CXX_FLAGS=${GRPC_CXX_FLAGS}" |
|
-DCMAKE_INSTALL_PREFIX=${GRPC_PREFIX} |
|
-DCMAKE_PREFIX_PATH='${GRPC_PREFIX_PATH_ALT_SEP}' |
|
-DOPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY} |
|
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} |
|
-DOPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY} |
|
-DgRPC_ABSL_PROVIDER=package |
|
-DgRPC_BUILD_CSHARP_EXT=OFF |
|
-DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF |
|
-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF |
|
-DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF |
|
-DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF |
|
-DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF |
|
-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF |
|
-DgRPC_BUILD_TESTS=OFF |
|
-DgRPC_CARES_PROVIDER=package |
|
-DgRPC_GFLAGS_PROVIDER=package |
|
-DgRPC_MSVC_STATIC_RUNTIME=${ARROW_USE_STATIC_CRT} |
|
-DgRPC_PROTOBUF_PROVIDER=package |
|
-DgRPC_RE2_PROVIDER=package |
|
-DgRPC_SSL_PROVIDER=package |
|
-DgRPC_ZLIB_PROVIDER=package) |
|
if(PROTOBUF_VENDORED) |
|
list(APPEND GRPC_CMAKE_ARGS -DgRPC_PROTOBUF_PACKAGE_TYPE=CONFIG) |
|
endif() |
|
|
|
|
|
|
|
|
|
externalproject_add(grpc_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${GRPC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_GRPC_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS ${GRPC_STATIC_LIBRARY_GPR} |
|
${GRPC_STATIC_LIBRARY_GRPC} |
|
${GRPC_STATIC_LIBRARY_GRPCPP} |
|
${GRPC_STATIC_LIBRARY_ADDRESS_SORTING} |
|
${GRPC_STATIC_LIBRARY_GRPCPP_REFLECTION} |
|
${GRPC_STATIC_LIBRARY_UPB} |
|
${GRPC_CPP_PLUGIN} |
|
CMAKE_ARGS ${GRPC_CMAKE_ARGS} |
|
DEPENDS ${grpc_dependencies}) |
|
|
|
|
|
file(MAKE_DIRECTORY ${GRPC_INCLUDE_DIR}) |
|
|
|
add_library(gRPC::upb STATIC IMPORTED) |
|
set_target_properties(gRPC::upb PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_UPB}") |
|
target_include_directories(gRPC::upb BEFORE INTERFACE "${GRPC_INCLUDE_DIR}") |
|
|
|
set(GRPC_GPR_ABSL_LIBRARIES |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
absl::raw_hash_set |
|
absl::hashtablez_sampler |
|
absl::hash |
|
absl::city |
|
absl::low_level_hash |
|
absl::random_distributions |
|
absl::random_seed_sequences |
|
absl::random_internal_pool_urbg |
|
absl::random_internal_randen |
|
absl::random_internal_randen_hwaes |
|
absl::random_internal_randen_hwaes_impl |
|
absl::random_internal_randen_slow |
|
absl::random_internal_platform |
|
absl::random_internal_seed_material |
|
absl::random_seed_gen_exception |
|
absl::statusor |
|
absl::status |
|
absl::cord |
|
absl::cordz_info |
|
absl::cord_internal |
|
absl::cordz_functions |
|
absl::exponential_biased |
|
absl::cordz_handle |
|
absl::bad_optional_access |
|
absl::str_format_internal |
|
absl::synchronization |
|
absl::graphcycles_internal |
|
absl::stacktrace |
|
absl::symbolize |
|
absl::debugging_internal |
|
absl::demangle_internal |
|
absl::malloc_internal |
|
absl::time |
|
absl::civil_time |
|
absl::strings |
|
absl::strings_internal |
|
absl::base |
|
absl::spinlock_wait |
|
absl::int128 |
|
absl::throw_delegate |
|
absl::time_zone |
|
absl::bad_variant_access |
|
absl::raw_logging_internal |
|
absl::log_severity) |
|
|
|
add_library(gRPC::gpr STATIC IMPORTED) |
|
set_target_properties(gRPC::gpr PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_GPR}") |
|
target_link_libraries(gRPC::gpr INTERFACE ${GRPC_GPR_ABSL_LIBRARIES}) |
|
target_include_directories(gRPC::gpr BEFORE INTERFACE "${GRPC_INCLUDE_DIR}") |
|
|
|
add_library(gRPC::address_sorting STATIC IMPORTED) |
|
set_target_properties(gRPC::address_sorting |
|
PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_ADDRESS_SORTING}") |
|
target_include_directories(gRPC::address_sorting BEFORE INTERFACE "${GRPC_INCLUDE_DIR}") |
|
|
|
add_library(gRPC::grpc++_reflection STATIC IMPORTED) |
|
set_target_properties(gRPC::grpc++_reflection |
|
PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_GRPCPP_REFLECTION}") |
|
target_include_directories(gRPC::grpc++_reflection BEFORE |
|
INTERFACE "${GRPC_INCLUDE_DIR}") |
|
|
|
add_library(gRPC::grpc STATIC IMPORTED) |
|
set_target_properties(gRPC::grpc PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_GRPC}") |
|
target_link_libraries(gRPC::grpc |
|
INTERFACE gRPC::gpr |
|
gRPC::upb |
|
gRPC::address_sorting |
|
re2::re2 |
|
c-ares::cares |
|
ZLIB::ZLIB |
|
OpenSSL::SSL |
|
Threads::Threads) |
|
target_include_directories(gRPC::grpc BEFORE INTERFACE "${GRPC_INCLUDE_DIR}") |
|
|
|
add_library(gRPC::grpc++ STATIC IMPORTED) |
|
set_target_properties(gRPC::grpc++ PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_GRPCPP}") |
|
target_link_libraries(gRPC::grpc++ INTERFACE gRPC::grpc ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
target_include_directories(gRPC::grpc++ BEFORE INTERFACE "${GRPC_INCLUDE_DIR}") |
|
|
|
add_executable(gRPC::grpc_cpp_plugin IMPORTED) |
|
set_target_properties(gRPC::grpc_cpp_plugin PROPERTIES IMPORTED_LOCATION |
|
${GRPC_CPP_PLUGIN}) |
|
|
|
add_dependencies(grpc_ep grpc_dependencies) |
|
add_dependencies(gRPC::grpc++ grpc_ep) |
|
add_dependencies(gRPC::grpc_cpp_plugin grpc_ep) |
|
set(GRPC_VENDORED TRUE) |
|
|
|
|
|
|
|
|
|
|
|
set(GRPC_STATIC_LIBRARY_GRPCPP_FOR_AR |
|
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}grpcpp${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
add_custom_command(OUTPUT ${GRPC_STATIC_LIBRARY_GRPCPP_FOR_AR} |
|
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:gRPC::grpc++> |
|
${GRPC_STATIC_LIBRARY_GRPCPP_FOR_AR} |
|
DEPENDS grpc_ep) |
|
add_library(gRPC::grpcpp_for_bundling STATIC IMPORTED) |
|
set_target_properties(gRPC::grpcpp_for_bundling |
|
PROPERTIES IMPORTED_LOCATION |
|
"${GRPC_STATIC_LIBRARY_GRPCPP_FOR_AR}") |
|
|
|
set_source_files_properties("${GRPC_STATIC_LIBRARY_GRPCPP_FOR_AR}" PROPERTIES GENERATED |
|
TRUE) |
|
add_custom_target(grpc_copy_grpc++ ALL DEPENDS "${GRPC_STATIC_LIBRARY_GRPCPP_FOR_AR}") |
|
add_dependencies(gRPC::grpcpp_for_bundling grpc_copy_grpc++) |
|
|
|
list(APPEND |
|
ARROW_BUNDLED_STATIC_LIBS |
|
gRPC::address_sorting |
|
gRPC::gpr |
|
gRPC::grpc |
|
gRPC::grpcpp_for_bundling |
|
gRPC::upb) |
|
if(ABSL_VENDORED) |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS ${GRPC_GPR_ABSL_LIBRARIES}) |
|
endif() |
|
endmacro() |
|
|
|
if(ARROW_WITH_GRPC) |
|
if(NOT ARROW_ENABLE_THREADING) |
|
message(FATAL_ERROR "Can't use gRPC with ARROW_ENABLE_THREADING=OFF") |
|
endif() |
|
|
|
set(ARROW_GRPC_REQUIRED_VERSION "1.30.0") |
|
if(NOT Protobuf_SOURCE STREQUAL gRPC_SOURCE) |
|
|
|
message(STATUS "Forcing gRPC_SOURCE to Protobuf_SOURCE (${Protobuf_SOURCE})") |
|
set(gRPC_SOURCE "${Protobuf_SOURCE}") |
|
endif() |
|
resolve_dependency(gRPC |
|
ARROW_CMAKE_PACKAGE_NAME |
|
ArrowFlight |
|
ARROW_PC_PACKAGE_NAME |
|
arrow-flight |
|
HAVE_ALT |
|
TRUE |
|
PC_PACKAGE_NAMES |
|
grpc++ |
|
REQUIRED_VERSION |
|
${ARROW_GRPC_REQUIRED_VERSION}) |
|
|
|
if(GRPC_VENDORED) |
|
|
|
string(SUBSTRING ${ARROW_GRPC_BUILD_VERSION} 1 -1 ARROW_GRPC_VERSION) |
|
|
|
set(ARROW_GRPC_USE_SHARED OFF) |
|
else() |
|
if(gRPCAlt_VERSION) |
|
set(ARROW_GRPC_VERSION ${gRPCAlt_VERSION}) |
|
else() |
|
set(ARROW_GRPC_VERSION ${gRPC_VERSION}) |
|
endif() |
|
if(ARROW_USE_ASAN) |
|
|
|
add_library(gRPC::grpc_asan_suppressed INTERFACE IMPORTED) |
|
target_compile_definitions(gRPC::grpc_asan_suppressed |
|
INTERFACE "GRPC_ASAN_SUPPRESSED") |
|
target_link_libraries(gRPC::grpc++ INTERFACE gRPC::grpc_asan_suppressed) |
|
endif() |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_crc32c_once) |
|
if(NOT TARGET crc32c_ep) |
|
message(STATUS "Building crc32c from source") |
|
|
|
set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install") |
|
set(CRC32C_INCLUDE_DIR "${CRC32C_PREFIX}/include") |
|
set(CRC32C_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>" |
|
-DCRC32C_BUILD_TESTS=OFF |
|
-DCRC32C_BUILD_BENCHMARKS=OFF |
|
-DCRC32C_USE_GLOG=OFF) |
|
|
|
set(_CRC32C_STATIC_LIBRARY |
|
"${CRC32C_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}crc32c${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(CRC32C_BUILD_BYPRODUCTS ${_CRC32C_STATIC_LIBRARY}) |
|
set(CRC32C_LIBRARIES crc32c) |
|
|
|
externalproject_add(crc32c_ep |
|
${EP_COMMON_OPTIONS} |
|
INSTALL_DIR ${CRC32C_PREFIX} |
|
URL ${CRC32C_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_CRC32C_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${CRC32C_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${CRC32C_BUILD_BYPRODUCTS}) |
|
|
|
file(MAKE_DIRECTORY "${CRC32C_INCLUDE_DIR}") |
|
add_library(Crc32c::crc32c STATIC IMPORTED) |
|
set_target_properties(Crc32c::crc32c PROPERTIES IMPORTED_LOCATION |
|
${_CRC32C_STATIC_LIBRARY}) |
|
target_include_directories(Crc32c::crc32c BEFORE INTERFACE "${CRC32C_INCLUDE_DIR}") |
|
add_dependencies(Crc32c::crc32c crc32c_ep) |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS Crc32c::crc32c) |
|
endif() |
|
endmacro() |
|
|
|
macro(build_nlohmann_json) |
|
message(STATUS "Building nlohmann-json from source") |
|
|
|
set(NLOHMANN_JSON_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json_ep-install") |
|
set(NLOHMANN_JSON_INCLUDE_DIR "${NLOHMANN_JSON_PREFIX}/include") |
|
set(NLOHMANN_JSON_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>" |
|
|
|
-DJSON_BuildTests=OFF -DJSON_MultipleHeaders=ON) |
|
|
|
set(NLOHMANN_JSON_BUILD_BYPRODUCTS ${NLOHMANN_JSON_PREFIX}/include/nlohmann/json.hpp) |
|
|
|
externalproject_add(nlohmann_json_ep |
|
${EP_COMMON_OPTIONS} |
|
INSTALL_DIR ${NLOHMANN_JSON_PREFIX} |
|
URL ${NLOHMANN_JSON_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_NLOHMANN_JSON_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${NLOHMANN_JSON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${NLOHMANN_JSON_BUILD_BYPRODUCTS}) |
|
|
|
|
|
file(MAKE_DIRECTORY ${NLOHMANN_JSON_INCLUDE_DIR}) |
|
|
|
add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED) |
|
target_include_directories(nlohmann_json::nlohmann_json BEFORE |
|
INTERFACE "${NLOHMANN_JSON_INCLUDE_DIR}") |
|
add_dependencies(nlohmann_json::nlohmann_json nlohmann_json_ep) |
|
endmacro() |
|
if(ARROW_WITH_NLOHMANN_JSON) |
|
resolve_dependency(nlohmann_json) |
|
get_target_property(nlohmann_json_INCLUDE_DIR nlohmann_json::nlohmann_json |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
message(STATUS "Found nlohmann_json headers: ${nlohmann_json_INCLUDE_DIR}") |
|
endif() |
|
|
|
macro(build_google_cloud_cpp_storage) |
|
message(STATUS "Building google-cloud-cpp from source") |
|
message(STATUS "Only building the google-cloud-cpp::storage component") |
|
|
|
|
|
ensure_absl() |
|
build_crc32c_once() |
|
|
|
|
|
|
|
find_curl() |
|
|
|
|
|
|
|
|
|
if(ABSL_VENDORED) |
|
list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${ABSL_PREFIX}) |
|
endif() |
|
if(ZLIB_VENDORED) |
|
list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${ZLIB_PREFIX}) |
|
endif() |
|
list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${CRC32C_PREFIX}) |
|
list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${NLOHMANN_JSON_PREFIX}) |
|
|
|
string(JOIN ${EP_LIST_SEPARATOR} GOOGLE_CLOUD_CPP_PREFIX_PATH |
|
${GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST}) |
|
|
|
set(GOOGLE_CLOUD_CPP_INSTALL_PREFIX |
|
"${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_ep-install") |
|
set(GOOGLE_CLOUD_CPP_INCLUDE_DIR "${GOOGLE_CLOUD_CPP_INSTALL_PREFIX}/include") |
|
set(GOOGLE_CLOUD_CPP_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>" |
|
-DCMAKE_INSTALL_RPATH=$ORIGIN |
|
-DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH} |
|
|
|
|
|
|
|
-DGOOGLE_CLOUD_CPP_ENABLE=storage |
|
|
|
|
|
-DGOOGLE_CLOUD_CPP_ENABLE_WERROR=OFF |
|
-DGOOGLE_CLOUD_CPP_WITH_MOCKS=OFF |
|
-DOPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY} |
|
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} |
|
-DOPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY}) |
|
|
|
add_custom_target(google_cloud_cpp_dependencies) |
|
|
|
if(ABSL_VENDORED) |
|
add_dependencies(google_cloud_cpp_dependencies absl_ep) |
|
endif() |
|
if(ZLIB_VENDORED) |
|
add_dependencies(google_cloud_cpp_dependencies zlib_ep) |
|
endif() |
|
add_dependencies(google_cloud_cpp_dependencies crc32c_ep) |
|
add_dependencies(google_cloud_cpp_dependencies nlohmann_json::nlohmann_json) |
|
|
|
set(GOOGLE_CLOUD_CPP_STATIC_LIBRARY_STORAGE |
|
"${GOOGLE_CLOUD_CPP_INSTALL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}google_cloud_cpp_storage${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
set(GOOGLE_CLOUD_CPP_STATIC_LIBRARY_REST_INTERNAL |
|
"${GOOGLE_CLOUD_CPP_INSTALL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}google_cloud_cpp_rest_internal${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
set(GOOGLE_CLOUD_CPP_STATIC_LIBRARY_COMMON |
|
"${GOOGLE_CLOUD_CPP_INSTALL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}google_cloud_cpp_common${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
|
|
|
|
|
|
set(GOOGLE_CLOUD_CPP_PATCH_COMMAND ${CMAKE_COMMAND} -E) |
|
if(CMAKE_VERSION VERSION_LESS 3.17) |
|
list(APPEND GOOGLE_CLOUD_CPP_PATCH_COMMAND remove_directory) |
|
else() |
|
list(APPEND GOOGLE_CLOUD_CPP_PATCH_COMMAND rm -rf) |
|
endif() |
|
list(APPEND GOOGLE_CLOUD_CPP_PATCH_COMMAND ci) |
|
|
|
externalproject_add(google_cloud_cpp_ep |
|
${EP_COMMON_OPTIONS} |
|
INSTALL_DIR ${GOOGLE_CLOUD_CPP_INSTALL_PREFIX} |
|
URL ${google_cloud_cpp_storage_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_GOOGLE_CLOUD_CPP_BUILD_SHA256_CHECKSUM}" |
|
PATCH_COMMAND ${GOOGLE_CLOUD_CPP_PATCH_COMMAND} |
|
CMAKE_ARGS ${GOOGLE_CLOUD_CPP_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_STORAGE} |
|
${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_REST_INTERNAL} |
|
${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_COMMON} |
|
DEPENDS google_cloud_cpp_dependencies) |
|
|
|
|
|
file(MAKE_DIRECTORY ${GOOGLE_CLOUD_CPP_INCLUDE_DIR}) |
|
|
|
add_library(google-cloud-cpp::common STATIC IMPORTED) |
|
set_target_properties(google-cloud-cpp::common |
|
PROPERTIES IMPORTED_LOCATION |
|
"${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_COMMON}") |
|
target_include_directories(google-cloud-cpp::common BEFORE |
|
INTERFACE "${GOOGLE_CLOUD_CPP_INCLUDE_DIR}") |
|
|
|
|
|
|
|
|
|
target_link_libraries(google-cloud-cpp::common |
|
INTERFACE absl::base |
|
absl::cord |
|
absl::memory |
|
absl::optional |
|
absl::span |
|
absl::time |
|
absl::variant |
|
Threads::Threads |
|
OpenSSL::Crypto) |
|
|
|
add_library(google-cloud-cpp::rest-internal STATIC IMPORTED) |
|
set_target_properties(google-cloud-cpp::rest-internal |
|
PROPERTIES IMPORTED_LOCATION |
|
"${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_REST_INTERNAL}") |
|
target_include_directories(google-cloud-cpp::rest-internal BEFORE |
|
INTERFACE "${GOOGLE_CLOUD_CPP_INCLUDE_DIR}") |
|
target_link_libraries(google-cloud-cpp::rest-internal |
|
INTERFACE absl::span |
|
google-cloud-cpp::common |
|
CURL::libcurl |
|
nlohmann_json::nlohmann_json |
|
OpenSSL::SSL |
|
OpenSSL::Crypto) |
|
if(WIN32) |
|
target_link_libraries(google-cloud-cpp::rest-internal INTERFACE ws2_32) |
|
endif() |
|
|
|
add_library(google-cloud-cpp::storage STATIC IMPORTED) |
|
set_target_properties(google-cloud-cpp::storage |
|
PROPERTIES IMPORTED_LOCATION |
|
"${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_STORAGE}") |
|
target_include_directories(google-cloud-cpp::storage BEFORE |
|
INTERFACE "${GOOGLE_CLOUD_CPP_INCLUDE_DIR}") |
|
|
|
target_link_libraries(google-cloud-cpp::storage |
|
INTERFACE google-cloud-cpp::common |
|
google-cloud-cpp::rest-internal |
|
absl::memory |
|
absl::strings |
|
absl::str_format |
|
absl::time |
|
absl::variant |
|
nlohmann_json::nlohmann_json |
|
Crc32c::crc32c |
|
CURL::libcurl |
|
Threads::Threads |
|
OpenSSL::SSL |
|
OpenSSL::Crypto |
|
ZLIB::ZLIB) |
|
add_dependencies(google-cloud-cpp::storage google_cloud_cpp_ep) |
|
|
|
list(APPEND |
|
ARROW_BUNDLED_STATIC_LIBS |
|
google-cloud-cpp::storage |
|
google-cloud-cpp::rest-internal |
|
google-cloud-cpp::common) |
|
if(ABSL_VENDORED) |
|
|
|
|
|
|
|
|
|
|
|
list(APPEND |
|
ARROW_BUNDLED_STATIC_LIBS |
|
absl::bad_optional_access |
|
absl::bad_variant_access |
|
absl::base |
|
absl::civil_time |
|
absl::cord |
|
absl::cord_internal |
|
absl::cordz_functions |
|
absl::cordz_info |
|
absl::cordz_handle |
|
absl::debugging_internal |
|
absl::demangle_internal |
|
absl::exponential_biased |
|
absl::int128 |
|
absl::log_severity |
|
absl::malloc_internal |
|
absl::raw_logging_internal |
|
absl::spinlock_wait |
|
absl::stacktrace |
|
absl::str_format_internal |
|
absl::strings |
|
absl::strings_internal |
|
absl::symbolize |
|
absl::synchronization |
|
absl::throw_delegate |
|
absl::time |
|
absl::time_zone) |
|
endif() |
|
endmacro() |
|
|
|
if(ARROW_WITH_GOOGLE_CLOUD_CPP) |
|
if(NOT ARROW_ENABLE_THREADING) |
|
message(FATAL_ERROR "Can't use Google Cloud Platform C++ Client Libraries with ARROW_ENABLE_THREADING=OFF" |
|
) |
|
endif() |
|
|
|
resolve_dependency(google_cloud_cpp_storage PC_PACKAGE_NAMES google_cloud_cpp_storage) |
|
get_target_property(google_cloud_cpp_storage_INCLUDE_DIR google-cloud-cpp::storage |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
message(STATUS "Found google-cloud-cpp::storage headers: ${google_cloud_cpp_storage_INCLUDE_DIR}" |
|
) |
|
endif() |
|
|
|
|
|
|
|
|
|
if(DEFINED ENV{HADOOP_HOME}) |
|
set(HADOOP_HOME $ENV{HADOOP_HOME}) |
|
if(NOT EXISTS "${HADOOP_HOME}/include/hdfs.h") |
|
message(STATUS "Did not find hdfs.h in expected location, using vendored one") |
|
set(HADOOP_HOME "${THIRDPARTY_DIR}/hadoop") |
|
endif() |
|
else() |
|
set(HADOOP_HOME "${THIRDPARTY_DIR}/hadoop") |
|
endif() |
|
|
|
set(HDFS_H_PATH "${HADOOP_HOME}/include/hdfs.h") |
|
if(NOT EXISTS ${HDFS_H_PATH}) |
|
message(FATAL_ERROR "Did not find hdfs.h at ${HDFS_H_PATH}") |
|
endif() |
|
message(STATUS "Found hdfs.h at: ${HDFS_H_PATH}") |
|
|
|
add_library(arrow::hadoop INTERFACE IMPORTED) |
|
target_include_directories(arrow::hadoop INTERFACE "${HADOOP_HOME}/include") |
|
|
|
|
|
|
|
|
|
function(build_orc) |
|
message(STATUS "Building Apache ORC from source") |
|
|
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.29) |
|
fetchcontent_declare(orc |
|
${FC_DECLARE_COMMON_OPTIONS} |
|
URL ${ORC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_ORC_BUILD_SHA256_CHECKSUM}") |
|
prepare_fetchcontent() |
|
|
|
set(CMAKE_UNITY_BUILD FALSE) |
|
|
|
set(ORC_PREFER_STATIC_LZ4 |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
get_target_property(LZ4_INCLUDE_DIR LZ4::lz4 INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(LZ4_ROOT "${LZ4_INCLUDE_DIR}" DIRECTORY) |
|
set(LZ4_HOME |
|
${LZ4_ROOT} |
|
CACHE STRING "" FORCE) |
|
set(LZ4_LIBRARY |
|
LZ4::lz4 |
|
CACHE STRING "" FORCE) |
|
|
|
set(ORC_PREFER_STATIC_PROTOBUF |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
get_target_property(PROTOBUF_INCLUDE_DIR ${ARROW_PROTOBUF_LIBPROTOBUF} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(Protobuf_ROOT "${PROTOBUF_INCLUDE_DIR}" DIRECTORY) |
|
set(PROTOBUF_HOME |
|
${Protobuf_ROOT} |
|
CACHE STRING "" FORCE) |
|
|
|
target_include_directories(${ARROW_PROTOBUF_LIBPROTOC} |
|
INTERFACE "${PROTOBUF_INCLUDE_DIR}") |
|
set(PROTOBUF_EXECUTABLE ${ARROW_PROTOBUF_PROTOC}) |
|
set(PROTOBUF_LIBRARY ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
set(PROTOC_LIBRARY ${ARROW_PROTOBUF_LIBPROTOC}) |
|
|
|
set(ORC_PREFER_STATIC_SNAPPY |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
get_target_property(SNAPPY_INCLUDE_DIR ${Snappy_TARGET} INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(Snappy_ROOT "${SNAPPY_INCLUDE_DIR}" DIRECTORY) |
|
set(SNAPPY_HOME |
|
${Snappy_ROOT} |
|
CACHE STRING "" FORCE) |
|
set(SNAPPY_LIBRARY |
|
${Snappy_TARGET} |
|
CACHE STRING "" FORCE) |
|
|
|
set(ORC_PREFER_STATIC_ZLIB |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
get_target_property(ZLIB_INCLUDE_DIR ZLIB::ZLIB INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(ZLIB_ROOT "${ZLIB_INCLUDE_DIR}" DIRECTORY) |
|
set(ZLIB_HOME |
|
${ZLIB_ROOT} |
|
CACHE STRING "" FORCE) |
|
set(ZLIB_LIBRARY |
|
ZLIB::ZLIB |
|
CACHE STRING "" FORCE) |
|
|
|
set(ORC_PREFER_STATIC_ZSTD |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
get_target_property(ZSTD_INCLUDE_DIR ${ARROW_ZSTD_LIBZSTD} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(ZSTD_ROOT "${ZSTD_INCLUDE_DIR}" DIRECTORY) |
|
set(ZSTD_HOME |
|
${ZSTD_ROOT} |
|
CACHE STRING "" FORCE) |
|
set(ZSTD_LIBRARY ${ARROW_ZSTD_LIBZSTD}) |
|
|
|
set(BUILD_CPP_TESTS |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
set(BUILD_JAVA |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
set(BUILD_LIBHDFSPP |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
set(BUILD_TOOLS |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
set(INSTALL_VENDORED_LIBS |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
set(STOP_BUILD_ON_WARNING |
|
OFF |
|
CACHE BOOL "" FORCE) |
|
|
|
|
|
list(PREPEND CMAKE_MODULE_PATH |
|
${CMAKE_CURRENT_BINARY_DIR}/_deps/orc-src/cmake_modules) |
|
|
|
fetchcontent_makeavailable(orc) |
|
|
|
add_library(orc::orc INTERFACE IMPORTED) |
|
target_link_libraries(orc::orc INTERFACE orc) |
|
target_include_directories(orc::orc INTERFACE "${orc_BINARY_DIR}/c++/include" |
|
"${orc_SOURCE_DIR}/c++/include") |
|
|
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS orc) |
|
else() |
|
set(ORC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/orc_ep-install") |
|
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}" |
|
) |
|
|
|
get_target_property(ORC_PROTOBUF_ROOT ${ARROW_PROTOBUF_LIBPROTOBUF} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(ORC_PROTOBUF_ROOT "${ORC_PROTOBUF_ROOT}" DIRECTORY) |
|
|
|
get_target_property(ORC_SNAPPY_INCLUDE_DIR ${Snappy_TARGET} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(ORC_SNAPPY_ROOT "${ORC_SNAPPY_INCLUDE_DIR}" DIRECTORY) |
|
|
|
get_target_property(ORC_LZ4_ROOT LZ4::lz4 INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(ORC_LZ4_ROOT "${ORC_LZ4_ROOT}" DIRECTORY) |
|
|
|
get_target_property(ORC_ZSTD_ROOT ${ARROW_ZSTD_LIBZSTD} INTERFACE_INCLUDE_DIRECTORIES) |
|
get_filename_component(ORC_ZSTD_ROOT "${ORC_ZSTD_ROOT}" DIRECTORY) |
|
|
|
set(ORC_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
"-DCMAKE_INSTALL_PREFIX=${ORC_PREFIX}" |
|
-DSTOP_BUILD_ON_WARNING=OFF |
|
-DBUILD_LIBHDFSPP=OFF |
|
-DBUILD_JAVA=OFF |
|
-DBUILD_TOOLS=OFF |
|
-DBUILD_CPP_TESTS=OFF |
|
-DINSTALL_VENDORED_LIBS=OFF |
|
"-DLZ4_HOME=${ORC_LZ4_ROOT}" |
|
"-DPROTOBUF_EXECUTABLE=$<TARGET_FILE:${ARROW_PROTOBUF_PROTOC}>" |
|
"-DPROTOBUF_HOME=${ORC_PROTOBUF_ROOT}" |
|
"-DPROTOBUF_INCLUDE_DIR=$<TARGET_PROPERTY:${ARROW_PROTOBUF_LIBPROTOBUF},INTERFACE_INCLUDE_DIRECTORIES>" |
|
"-DPROTOBUF_LIBRARY=$<TARGET_FILE:${ARROW_PROTOBUF_LIBPROTOBUF}>" |
|
"-DPROTOC_LIBRARY=$<TARGET_FILE:${ARROW_PROTOBUF_LIBPROTOC}>" |
|
"-DSNAPPY_HOME=${ORC_SNAPPY_ROOT}" |
|
"-DSNAPPY_LIBRARY=$<TARGET_FILE:${Snappy_TARGET}>" |
|
"-DLZ4_LIBRARY=$<TARGET_FILE:LZ4::lz4>" |
|
"-DLZ4_STATIC_LIB=$<TARGET_FILE:LZ4::lz4>" |
|
"-DLZ4_INCLUDE_DIR=${ORC_LZ4_ROOT}/include" |
|
"-DSNAPPY_INCLUDE_DIR=${ORC_SNAPPY_INCLUDE_DIR}" |
|
"-DZSTD_HOME=${ORC_ZSTD_ROOT}" |
|
"-DZSTD_INCLUDE_DIR=$<TARGET_PROPERTY:${ARROW_ZSTD_LIBZSTD},INTERFACE_INCLUDE_DIRECTORIES>" |
|
"-DZSTD_LIBRARY=$<TARGET_FILE:${ARROW_ZSTD_LIBZSTD}>") |
|
if(ZLIB_ROOT) |
|
set(ORC_CMAKE_ARGS ${ORC_CMAKE_ARGS} "-DZLIB_HOME=${ZLIB_ROOT}") |
|
endif() |
|
|
|
|
|
file(MAKE_DIRECTORY ${ORC_INCLUDE_DIR}) |
|
|
|
externalproject_add(orc_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${ORC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_ORC_BUILD_SHA256_CHECKSUM}" |
|
BUILD_BYPRODUCTS ${ORC_STATIC_LIB} |
|
CMAKE_ARGS ${ORC_CMAKE_ARGS} |
|
DEPENDS ${ARROW_PROTOBUF_LIBPROTOBUF} |
|
${ARROW_PROTOBUF_PROTOC} |
|
${ARROW_ZSTD_LIBZSTD} |
|
${Snappy_TARGET} |
|
LZ4::lz4 |
|
ZLIB::ZLIB) |
|
add_library(orc::orc STATIC IMPORTED) |
|
set_target_properties(orc::orc PROPERTIES IMPORTED_LOCATION "${ORC_STATIC_LIB}") |
|
target_include_directories(orc::orc BEFORE INTERFACE "${ORC_INCLUDE_DIR}") |
|
target_link_libraries(orc::orc INTERFACE LZ4::lz4 ZLIB::ZLIB ${ARROW_ZSTD_LIBZSTD} |
|
${Snappy_TARGET}) |
|
|
|
|
|
if(TARGET absl::log_internal_check_op) |
|
target_link_libraries(orc::orc INTERFACE absl::log_internal_check_op) |
|
endif() |
|
if(NOT MSVC) |
|
if(NOT APPLE AND ARROW_ENABLE_THREADING) |
|
target_link_libraries(orc::orc INTERFACE Threads::Threads) |
|
endif() |
|
target_link_libraries(orc::orc INTERFACE ${CMAKE_DL_LIBS}) |
|
endif() |
|
target_link_libraries(orc::orc INTERFACE ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
add_dependencies(orc::orc orc_ep) |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS orc::orc) |
|
endif() |
|
|
|
set(ORC_VENDORED |
|
TRUE |
|
PARENT_SCOPE) |
|
set(ARROW_BUNDLED_STATIC_LIBS |
|
${ARROW_BUNDLED_STATIC_LIBS} |
|
PARENT_SCOPE) |
|
endfunction() |
|
|
|
if(ARROW_ORC) |
|
resolve_dependency(orc HAVE_ALT TRUE) |
|
if(ORC_VENDORED) |
|
set(ARROW_ORC_VERSION ${ARROW_ORC_BUILD_VERSION}) |
|
else() |
|
target_link_libraries(orc::orc INTERFACE ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
set(ARROW_ORC_VERSION ${orcAlt_VERSION}) |
|
message(STATUS "Found ORC static library: ${ORC_STATIC_LIB}") |
|
message(STATUS "Found ORC headers: ${ORC_INCLUDE_DIR}") |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
macro(build_opentelemetry) |
|
message(STATUS "Building OpenTelemetry from source") |
|
if(Protobuf_VERSION VERSION_GREATER_EQUAL 3.22) |
|
message(FATAL_ERROR "GH-36013: Can't use bundled OpenTelemetry with Protobuf 3.22 or later. " |
|
"Protobuf is version ${Protobuf_VERSION}") |
|
endif() |
|
|
|
set(OPENTELEMETRY_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/opentelemetry_ep-install") |
|
set(OPENTELEMETRY_INCLUDE_DIR "${OPENTELEMETRY_PREFIX}/include") |
|
set(OPENTELEMETRY_STATIC_LIB |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
set(_OPENTELEMETRY_APIS api ext sdk) |
|
set(_OPENTELEMETRY_LIBS |
|
common |
|
http_client_curl |
|
logs |
|
ostream_log_record_exporter |
|
ostream_span_exporter |
|
otlp_http_client |
|
otlp_http_log_record_exporter |
|
otlp_http_exporter |
|
otlp_recordable |
|
proto |
|
resources |
|
trace |
|
version) |
|
set(OPENTELEMETRY_BUILD_BYPRODUCTS) |
|
set(OPENTELEMETRY_LIBRARIES) |
|
|
|
foreach(_OPENTELEMETRY_LIB ${_OPENTELEMETRY_APIS}) |
|
add_library(opentelemetry-cpp::${_OPENTELEMETRY_LIB} INTERFACE IMPORTED) |
|
target_include_directories(opentelemetry-cpp::${_OPENTELEMETRY_LIB} BEFORE |
|
INTERFACE "${OPENTELEMETRY_INCLUDE_DIR}") |
|
endforeach() |
|
foreach(_OPENTELEMETRY_LIB ${_OPENTELEMETRY_LIBS}) |
|
|
|
if(_OPENTELEMETRY_LIB STREQUAL "http_client_curl") |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_${_OPENTELEMETRY_LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
elseif(_OPENTELEMETRY_LIB STREQUAL "ostream_span_exporter") |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_ostream_span${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
elseif(_OPENTELEMETRY_LIB STREQUAL "otlp_http_client") |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_client${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
elseif(_OPENTELEMETRY_LIB STREQUAL "otlp_http_exporter") |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
elseif(_OPENTELEMETRY_LIB STREQUAL "otlp_http_log_record_exporter") |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_otlp_http_log${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
elseif(_OPENTELEMETRY_LIB STREQUAL "ostream_log_record_exporter") |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_exporter_ostream_logs${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
else() |
|
set(_OPENTELEMETRY_STATIC_LIBRARY |
|
"${OPENTELEMETRY_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}opentelemetry_${_OPENTELEMETRY_LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
endif() |
|
add_library(opentelemetry-cpp::${_OPENTELEMETRY_LIB} STATIC IMPORTED) |
|
set_target_properties(opentelemetry-cpp::${_OPENTELEMETRY_LIB} |
|
PROPERTIES IMPORTED_LOCATION ${_OPENTELEMETRY_STATIC_LIBRARY}) |
|
list(APPEND OPENTELEMETRY_BUILD_BYPRODUCTS ${_OPENTELEMETRY_STATIC_LIBRARY}) |
|
list(APPEND OPENTELEMETRY_LIBRARIES opentelemetry-cpp::${_OPENTELEMETRY_LIB}) |
|
endforeach() |
|
|
|
set(OPENTELEMETRY_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} "-DCMAKE_INSTALL_PREFIX=${OPENTELEMETRY_PREFIX}" |
|
-DWITH_EXAMPLES=OFF) |
|
|
|
set(OPENTELEMETRY_PREFIX_PATH_LIST) |
|
|
|
|
|
set(_OPENTELEMETRY_DEPENDENCIES) |
|
add_custom_target(opentelemetry_dependencies) |
|
|
|
set(_OPENTELEMETRY_DEPENDENCIES "opentelemetry_dependencies") |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS ${OPENTELEMETRY_LIBRARIES}) |
|
list(APPEND OPENTELEMETRY_PREFIX_PATH_LIST ${NLOHMANN_JSON_PREFIX}) |
|
|
|
get_target_property(OPENTELEMETRY_PROTOBUF_INCLUDE_DIR ${ARROW_PROTOBUF_LIBPROTOBUF} |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
get_target_property(OPENTELEMETRY_PROTOBUF_LIBRARY ${ARROW_PROTOBUF_LIBPROTOBUF} |
|
IMPORTED_LOCATION) |
|
get_target_property(OPENTELEMETRY_PROTOC_EXECUTABLE ${ARROW_PROTOBUF_PROTOC} |
|
IMPORTED_LOCATION) |
|
list(APPEND |
|
OPENTELEMETRY_CMAKE_ARGS |
|
-DWITH_OTLP_HTTP=ON |
|
-DWITH_OTLP_GRPC=OFF |
|
|
|
-DWITH_FUNC_TESTS=OFF |
|
|
|
|
|
|
|
|
|
-DWITH_OTLP_HTTP_SSL_PREVIEW=OFF |
|
-DWITH_OTLP_HTTP_SSL_TLS_PREVIEW=OFF |
|
"-DProtobuf_INCLUDE_DIR=${OPENTELEMETRY_PROTOBUF_INCLUDE_DIR}" |
|
"-DProtobuf_LIBRARY=${OPENTELEMETRY_PROTOBUF_INCLUDE_DIR}" |
|
"-DProtobuf_PROTOC_EXECUTABLE=${OPENTELEMETRY_PROTOC_EXECUTABLE}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
externalproject_add(opentelemetry_proto_ep |
|
${EP_COMMON_OPTIONS} |
|
URL_HASH "SHA256=${ARROW_OPENTELEMETRY_PROTO_BUILD_SHA256_CHECKSUM}" |
|
URL ${OPENTELEMETRY_PROTO_SOURCE_URL} |
|
BUILD_COMMAND "" |
|
CONFIGURE_COMMAND "" |
|
INSTALL_COMMAND "" |
|
EXCLUDE_FROM_ALL OFF) |
|
|
|
add_dependencies(opentelemetry_dependencies nlohmann_json::nlohmann_json |
|
opentelemetry_proto_ep ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
|
|
string(JOIN "${EP_LIST_SEPARATOR}" OPENTELEMETRY_PREFIX_PATH |
|
${OPENTELEMETRY_PREFIX_PATH_LIST}) |
|
list(APPEND OPENTELEMETRY_CMAKE_ARGS "-DCMAKE_PREFIX_PATH=${OPENTELEMETRY_PREFIX_PATH}") |
|
|
|
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "s390x") |
|
|
|
|
|
externalproject_add(opentelemetry_ep |
|
${EP_COMMON_OPTIONS} |
|
URL_HASH "SHA256=${ARROW_OPENTELEMETRY_BUILD_SHA256_CHECKSUM}" |
|
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env ARCH=s390x |
|
${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} |
|
"<SOURCE_DIR><SOURCE_SUBDIR>" |
|
${OPENTELEMETRY_CMAKE_ARGS} |
|
BUILD_COMMAND ${CMAKE_COMMAND} --build "<BINARY_DIR>" --target all |
|
INSTALL_COMMAND ${CMAKE_COMMAND} --build "<BINARY_DIR>" --target |
|
install |
|
URL ${OPENTELEMETRY_SOURCE_URL} |
|
BUILD_BYPRODUCTS ${OPENTELEMETRY_BUILD_BYPRODUCTS} |
|
EXCLUDE_FROM_ALL NOT |
|
${ARROW_WITH_OPENTELEMETRY} |
|
DEPENDS ${_OPENTELEMETRY_DEPENDENCIES}) |
|
else() |
|
externalproject_add(opentelemetry_ep |
|
${EP_COMMON_OPTIONS} |
|
URL_HASH "SHA256=${ARROW_OPENTELEMETRY_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${OPENTELEMETRY_CMAKE_ARGS} |
|
URL ${OPENTELEMETRY_SOURCE_URL} |
|
BUILD_BYPRODUCTS ${OPENTELEMETRY_BUILD_BYPRODUCTS} |
|
EXCLUDE_FROM_ALL NOT |
|
${ARROW_WITH_OPENTELEMETRY} |
|
DEPENDS ${_OPENTELEMETRY_DEPENDENCIES}) |
|
endif() |
|
|
|
externalproject_add_step(opentelemetry_ep download_proto |
|
COMMAND ${CMAKE_COMMAND} -E copy_directory |
|
$<TARGET_PROPERTY:opentelemetry_proto_ep,_EP_SOURCE_DIR>/opentelemetry |
|
$<TARGET_PROPERTY:opentelemetry_ep,_EP_SOURCE_DIR>/third_party/opentelemetry-proto/opentelemetry |
|
DEPENDEES download |
|
DEPENDERS configure) |
|
|
|
set(OPENTELEMETRY_VENDORED 1) |
|
|
|
target_link_libraries(opentelemetry-cpp::common |
|
INTERFACE opentelemetry-cpp::api opentelemetry-cpp::sdk |
|
Threads::Threads) |
|
target_link_libraries(opentelemetry-cpp::resources INTERFACE opentelemetry-cpp::common) |
|
target_link_libraries(opentelemetry-cpp::trace INTERFACE opentelemetry-cpp::common |
|
opentelemetry-cpp::resources) |
|
target_link_libraries(opentelemetry-cpp::logs INTERFACE opentelemetry-cpp::common |
|
opentelemetry-cpp::resources) |
|
target_link_libraries(opentelemetry-cpp::http_client_curl |
|
INTERFACE opentelemetry-cpp::common opentelemetry-cpp::ext |
|
CURL::libcurl) |
|
target_link_libraries(opentelemetry-cpp::proto INTERFACE ${ARROW_PROTOBUF_LIBPROTOBUF}) |
|
target_link_libraries(opentelemetry-cpp::otlp_recordable |
|
INTERFACE opentelemetry-cpp::logs opentelemetry-cpp::trace |
|
opentelemetry-cpp::resources opentelemetry-cpp::proto) |
|
target_link_libraries(opentelemetry-cpp::otlp_http_client |
|
INTERFACE opentelemetry-cpp::common opentelemetry-cpp::proto |
|
opentelemetry-cpp::http_client_curl |
|
nlohmann_json::nlohmann_json) |
|
target_link_libraries(opentelemetry-cpp::otlp_http_exporter |
|
INTERFACE opentelemetry-cpp::otlp_recordable |
|
opentelemetry-cpp::otlp_http_client) |
|
target_link_libraries(opentelemetry-cpp::otlp_http_log_record_exporter |
|
INTERFACE opentelemetry-cpp::otlp_recordable |
|
opentelemetry-cpp::otlp_http_client) |
|
|
|
foreach(_OPENTELEMETRY_LIB ${_OPENTELEMETRY_LIBS}) |
|
add_dependencies(opentelemetry-cpp::${_OPENTELEMETRY_LIB} opentelemetry_ep) |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS opentelemetry-cpp::${_OPENTELEMETRY_LIB}) |
|
endforeach() |
|
|
|
|
|
file(MAKE_DIRECTORY ${OPENTELEMETRY_INCLUDE_DIR}) |
|
endmacro() |
|
|
|
if(ARROW_WITH_OPENTELEMETRY) |
|
if(NOT ARROW_ENABLE_THREADING) |
|
message(FATAL_ERROR "Can't use OpenTelemetry with ARROW_ENABLE_THREADING=OFF") |
|
endif() |
|
|
|
|
|
|
|
find_curl() |
|
set(opentelemetry-cpp_SOURCE "AUTO") |
|
resolve_dependency(opentelemetry-cpp) |
|
set(ARROW_OPENTELEMETRY_LIBS |
|
opentelemetry-cpp::trace |
|
opentelemetry-cpp::logs |
|
opentelemetry-cpp::otlp_http_log_record_exporter |
|
opentelemetry-cpp::ostream_log_record_exporter |
|
opentelemetry-cpp::ostream_span_exporter |
|
opentelemetry-cpp::otlp_http_exporter) |
|
get_target_property(OPENTELEMETRY_INCLUDE_DIR opentelemetry-cpp::api |
|
INTERFACE_INCLUDE_DIRECTORIES) |
|
message(STATUS "Found OpenTelemetry headers: ${OPENTELEMETRY_INCLUDE_DIR}") |
|
endif() |
|
|
|
|
|
|
|
|
|
include(AWSSDKVariables) |
|
|
|
macro(build_awssdk) |
|
message(STATUS "Building AWS C++ SDK from source") |
|
set(AWSSDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/awssdk_ep-install") |
|
set(AWSSDK_INCLUDE_DIR "${AWSSDK_PREFIX}/include") |
|
|
|
set(AWSSDK_COMMON_CMAKE_ARGS |
|
${EP_COMMON_CMAKE_ARGS} |
|
-DCPP_STANDARD=${CMAKE_CXX_STANDARD} |
|
-DCMAKE_INSTALL_PREFIX=${AWSSDK_PREFIX} |
|
-DCMAKE_PREFIX_PATH=${AWSSDK_PREFIX} |
|
-DENABLE_TESTING=OFF |
|
-DENABLE_UNITY_BUILD=ON |
|
-DOPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY} |
|
-DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} |
|
-DOPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY} |
|
-Dcrypto_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} |
|
-Dcrypto_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}) |
|
if(ARROW_OPENSSL_USE_SHARED) |
|
list(APPEND AWSSDK_COMMON_CMAKE_ARGS |
|
-Dcrypto_SHARED_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}) |
|
else() |
|
list(APPEND AWSSDK_COMMON_CMAKE_ARGS |
|
-Dcrypto_STATIC_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}) |
|
endif() |
|
set(AWSSDK_CMAKE_ARGS |
|
${AWSSDK_COMMON_CMAKE_ARGS} |
|
-DBUILD_DEPS=OFF |
|
-DBUILD_ONLY=config\\$<SEMICOLON>s3\\$<SEMICOLON>transfer\\$<SEMICOLON>identity-management\\$<SEMICOLON>sts |
|
-DMINIMIZE_SIZE=ON) |
|
|
|
|
|
set(AWSSDK_PATCH_COMMAND ${CMAKE_COMMAND} -E) |
|
if(CMAKE_VERSION VERSION_LESS 3.17) |
|
list(APPEND AWSSDK_PATCH_COMMAND remove_directory) |
|
else() |
|
list(APPEND AWSSDK_PATCH_COMMAND rm -rf) |
|
endif() |
|
list(APPEND AWSSDK_PATCH_COMMAND ${AWSSDK_UNUSED_DIRECTORIES}) |
|
|
|
if(UNIX) |
|
|
|
find_curl() |
|
get_filename_component(CURL_ROOT_HINT "${CURL_INCLUDE_DIRS}" DIRECTORY) |
|
get_filename_component(ZLIB_ROOT_HINT "${ZLIB_INCLUDE_DIRS}" DIRECTORY) |
|
|
|
|
|
list(APPEND |
|
AWSSDK_CMAKE_ARGS |
|
-DCURL_INCLUDE_DIR=${CURL_ROOT_HINT}/include |
|
-DCURL_LIBRARY=${CURL_ROOT_HINT}/lib |
|
-DZLIB_INCLUDE_DIR=${ZLIB_ROOT_HINT}/include |
|
-DZLIB_LIBRARY=${ZLIB_ROOT_HINT}/lib) |
|
endif() |
|
|
|
file(MAKE_DIRECTORY ${AWSSDK_INCLUDE_DIR}) |
|
|
|
|
|
set(_AWSSDK_LIBS |
|
aws-cpp-sdk-identity-management |
|
aws-cpp-sdk-sts |
|
aws-cpp-sdk-cognito-identity |
|
aws-cpp-sdk-s3 |
|
aws-cpp-sdk-core |
|
aws-crt-cpp |
|
aws-c-s3 |
|
aws-c-auth |
|
aws-c-mqtt |
|
aws-c-http |
|
aws-c-compression |
|
aws-c-sdkutils |
|
aws-c-event-stream |
|
aws-c-io |
|
aws-c-cal |
|
aws-checksums |
|
aws-c-common) |
|
|
|
|
|
set(AWS_LC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/aws_lc_ep-install") |
|
set(AWS_LC_INCLUDE_DIR "${AWS_LC_PREFIX}/include") |
|
|
|
if(UNIX AND NOT APPLE) |
|
file(MAKE_DIRECTORY ${AWS_LC_INCLUDE_DIR}) |
|
list(APPEND _AWSSDK_LIBS s2n-tls aws-lc) |
|
endif() |
|
|
|
set(AWSSDK_LIBRARIES) |
|
foreach(_AWSSDK_LIB ${_AWSSDK_LIBS}) |
|
|
|
string(TOUPPER ${_AWSSDK_LIB} _AWSSDK_LIB_UPPER) |
|
|
|
string(REPLACE "-" "_" _AWSSDK_LIB_NAME_PREFIX ${_AWSSDK_LIB_UPPER}) |
|
set(_AWSSDK_STATIC_LIBRARY |
|
"${AWSSDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${_AWSSDK_LIB}${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
if(${_AWSSDK_LIB} STREQUAL "s2n-tls") |
|
set(_AWSSDK_STATIC_LIBRARY |
|
"${AWSSDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}s2n${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
elseif(${_AWSSDK_LIB} STREQUAL "aws-lc") |
|
set(_AWSSDK_STATIC_LIBRARY |
|
"${AWS_LC_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}crypto${CMAKE_STATIC_LIBRARY_SUFFIX}" |
|
) |
|
endif() |
|
if(${_AWSSDK_LIB} MATCHES "^aws-cpp-sdk-") |
|
set(_AWSSDK_TARGET_NAME ${_AWSSDK_LIB}) |
|
elseif(${_AWSSDK_LIB} STREQUAL "aws-lc") |
|
set(_AWSSDK_TARGET_NAME AWS::crypto) |
|
else() |
|
set(_AWSSDK_TARGET_NAME AWS::${_AWSSDK_LIB}) |
|
endif() |
|
add_library(${_AWSSDK_TARGET_NAME} STATIC IMPORTED) |
|
set_target_properties(${_AWSSDK_TARGET_NAME} PROPERTIES IMPORTED_LOCATION |
|
${_AWSSDK_STATIC_LIBRARY}) |
|
target_include_directories(${_AWSSDK_TARGET_NAME} BEFORE |
|
INTERFACE "${AWSSDK_INCLUDE_DIR}") |
|
if(${_AWSSDK_LIB} STREQUAL "aws-lc") |
|
set_target_properties(${_AWSSDK_TARGET_NAME} PROPERTIES IMPORTED_LOCATION |
|
${_AWSSDK_STATIC_LIBRARY}) |
|
target_include_directories(${_AWSSDK_TARGET_NAME} BEFORE |
|
INTERFACE "${AWS_LC_INCLUDE_DIR}") |
|
endif() |
|
set("${_AWSSDK_LIB_NAME_PREFIX}_STATIC_LIBRARY" ${_AWSSDK_STATIC_LIBRARY}) |
|
|
|
if(NOT ${_AWSSDK_LIB} STREQUAL "aws-lc") |
|
|
|
list(APPEND AWSSDK_LIBRARIES ${_AWSSDK_TARGET_NAME}) |
|
endif() |
|
endforeach() |
|
|
|
externalproject_add(aws_c_common_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_COMMON_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_COMMON_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_COMMON_STATIC_LIBRARY}) |
|
add_dependencies(AWS::aws-c-common aws_c_common_ep) |
|
|
|
set(AWS_CHECKSUMS_CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}) |
|
if(NOT WIN32) |
|
|
|
|
|
|
|
list(APPEND AWS_CHECKSUMS_CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release) |
|
endif() |
|
externalproject_add(aws_checksums_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_CHECKSUMS_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_CHECKSUMS_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWS_CHECKSUMS_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_CHECKSUMS_STATIC_LIBRARY} |
|
DEPENDS aws_c_common_ep) |
|
add_dependencies(AWS::aws-checksums aws_checksums_ep) |
|
|
|
if("s2n-tls" IN_LIST _AWSSDK_LIBS) |
|
|
|
|
|
set(AWS_LC_PATCH_COMMAND ${CMAKE_COMMAND} -E) |
|
if(CMAKE_VERSION VERSION_LESS 3.17) |
|
list(APPEND AWS_LC_PATCH_COMMAND remove_directory) |
|
else() |
|
list(APPEND AWS_LC_PATCH_COMMAND rm -rf) |
|
endif() |
|
list(APPEND AWS_LC_PATCH_COMMAND fuzz) |
|
|
|
set(AWS_LC_C_FLAGS ${EP_C_FLAGS}) |
|
string(APPEND AWS_LC_C_FLAGS " -Wno-error=overlength-strings -Wno-error=pedantic") |
|
|
|
string(REPLACE "-flto=auto" "" AWS_LC_C_FLAGS "${AWS_LC_C_FLAGS}") |
|
string(REPLACE "-ffat-lto-objects" "" AWS_LC_C_FLAGS "${AWS_LC_C_FLAGS}") |
|
|
|
set(AWS_LC_CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}) |
|
list(APPEND AWS_LC_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${AWS_LC_PREFIX} |
|
-DCMAKE_C_FLAGS=${AWS_LC_C_FLAGS}) |
|
|
|
externalproject_add(aws_lc_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_LC_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_LC_BUILD_SHA256_CHECKSUM}" |
|
PATCH_COMMAND ${AWS_LC_PATCH_COMMAND} |
|
CMAKE_ARGS ${AWS_LC_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_LC_STATIC_LIBRARY}) |
|
add_dependencies(AWS::crypto aws_lc_ep) |
|
|
|
set(S2N_TLS_C_FLAGS ${EP_C_FLAGS}) |
|
|
|
string(REPLACE "-flto=auto" "" S2N_TLS_C_FLAGS "${S2N_TLS_C_FLAGS}") |
|
string(REPLACE "-ffat-lto-objects" "" S2N_TLS_C_FLAGS "${S2N_TLS_C_FLAGS}") |
|
|
|
set(S2N_TLS_CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS}) |
|
list(APPEND |
|
S2N_TLS_CMAKE_ARGS |
|
|
|
-DS2N_INTERN_LIBCRYPTO=ON |
|
|
|
-DCMAKE_PREFIX_PATH=${AWS_LC_PREFIX} |
|
-DCMAKE_C_FLAGS=${S2N_TLS_C_FLAGS} |
|
|
|
-Dcrypto_INCLUDE_DIR=${AWS_LC_PREFIX}/include |
|
-Dcrypto_LIBRARY=${AWS_LC_STATIC_LIBRARY} |
|
-Dcrypto_STATIC_LIBRARY=${AWS_LC_STATIC_LIBRARY}) |
|
|
|
externalproject_add(s2n_tls_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${S2N_TLS_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_S2N_TLS_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${S2N_TLS_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${S2N_TLS_STATIC_LIBRARY} |
|
DEPENDS aws_lc_ep) |
|
add_dependencies(AWS::s2n-tls s2n_tls_ep) |
|
endif() |
|
|
|
externalproject_add(aws_c_cal_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_CAL_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_CAL_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_CAL_STATIC_LIBRARY} |
|
DEPENDS aws_c_common_ep) |
|
add_dependencies(AWS::aws-c-cal aws_c_cal_ep) |
|
|
|
set(AWS_C_IO_DEPENDS aws_c_common_ep aws_c_cal_ep) |
|
if(TARGET s2n_tls_ep) |
|
list(APPEND AWS_C_IO_DEPENDS s2n_tls_ep) |
|
endif() |
|
externalproject_add(aws_c_io_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_IO_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_IO_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_IO_STATIC_LIBRARY} |
|
DEPENDS ${AWS_C_IO_DEPENDS}) |
|
add_dependencies(AWS::aws-c-io aws_c_io_ep) |
|
|
|
externalproject_add(aws_c_event_stream_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_EVENT_STREAM_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_EVENT_STREAM_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_EVENT_STREAM_STATIC_LIBRARY} |
|
DEPENDS aws_checksums_ep aws_c_io_ep) |
|
add_dependencies(AWS::aws-c-event-stream aws_c_event_stream_ep) |
|
|
|
externalproject_add(aws_c_sdkutils_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_SDKUTILS_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_SDKUTILS_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_SDKUTILS_STATIC_LIBRARY} |
|
DEPENDS aws_c_common_ep) |
|
add_dependencies(AWS::aws-c-sdkutils aws_c_sdkutils_ep) |
|
|
|
externalproject_add(aws_c_compression_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_COMPRESSION_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_COMPRESSION_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_COMPRESSION_STATIC_LIBRARY} |
|
DEPENDS aws_c_common_ep) |
|
add_dependencies(AWS::aws-c-compression aws_c_compression_ep) |
|
|
|
externalproject_add(aws_c_http_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_HTTP_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_HTTP_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_HTTP_STATIC_LIBRARY} |
|
DEPENDS aws_c_io_ep aws_c_compression_ep) |
|
add_dependencies(AWS::aws-c-http aws_c_http_ep) |
|
|
|
externalproject_add(aws_c_mqtt_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_MQTT_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_MQTT_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_MQTT_STATIC_LIBRARY} |
|
DEPENDS aws_c_http_ep) |
|
add_dependencies(AWS::aws-c-mqtt aws_c_mqtt_ep) |
|
|
|
externalproject_add(aws_c_auth_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_AUTH_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_AUTH_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_AUTH_STATIC_LIBRARY} |
|
DEPENDS aws_c_sdkutils_ep aws_c_cal_ep aws_c_http_ep) |
|
add_dependencies(AWS::aws-c-auth aws_c_auth_ep) |
|
|
|
externalproject_add(aws_c_s3_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_C_S3_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_C_S3_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_COMMON_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_C_S3_STATIC_LIBRARY} |
|
DEPENDS aws_checksums_ep aws_c_auth_ep) |
|
add_dependencies(AWS::aws-c-s3 aws_c_s3_ep) |
|
|
|
externalproject_add(aws_crt_cpp_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWS_CRT_CPP_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWS_CRT_CPP_BUILD_SHA256_CHECKSUM}" |
|
CMAKE_ARGS ${AWSSDK_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_CRT_CPP_STATIC_LIBRARY} |
|
DEPENDS aws_c_auth_ep |
|
aws_c_cal_ep |
|
aws_c_common_ep |
|
aws_c_event_stream_ep |
|
aws_c_http_ep |
|
aws_c_io_ep |
|
aws_c_mqtt_ep |
|
aws_c_s3_ep |
|
aws_checksums_ep) |
|
add_dependencies(AWS::aws-crt-cpp aws_crt_cpp_ep) |
|
|
|
externalproject_add(awssdk_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${AWSSDK_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_AWSSDK_BUILD_SHA256_CHECKSUM}" |
|
PATCH_COMMAND ${AWSSDK_PATCH_COMMAND} |
|
CMAKE_ARGS ${AWSSDK_CMAKE_ARGS} |
|
BUILD_BYPRODUCTS ${AWS_CPP_SDK_COGNITO_IDENTITY_STATIC_LIBRARY} |
|
${AWS_CPP_SDK_CORE_STATIC_LIBRARY} |
|
${AWS_CPP_SDK_IDENTITY_MANAGEMENT_STATIC_LIBRARY} |
|
${AWS_CPP_SDK_S3_STATIC_LIBRARY} |
|
${AWS_CPP_SDK_STS_STATIC_LIBRARY} |
|
DEPENDS aws_crt_cpp_ep) |
|
foreach(_AWSSDK_LIB ${_AWSSDK_LIBS}) |
|
if(${_AWSSDK_LIB} MATCHES "^aws-cpp-sdk-") |
|
add_dependencies(${_AWSSDK_LIB} awssdk_ep) |
|
endif() |
|
endforeach() |
|
|
|
set(AWSSDK_VENDORED TRUE) |
|
list(APPEND ARROW_BUNDLED_STATIC_LIBS ${AWSSDK_LIBRARIES}) |
|
set(AWSSDK_LINK_LIBRARIES ${AWSSDK_LIBRARIES}) |
|
if(UNIX) |
|
|
|
set_property(TARGET aws-cpp-sdk-core |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES CURL::libcurl) |
|
set_property(TARGET AWS::aws-c-cal |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES OpenSSL::Crypto OpenSSL::SSL) |
|
if(APPLE) |
|
set_property(TARGET AWS::aws-c-cal |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES "-framework Security") |
|
endif() |
|
if(ZLIB_VENDORED) |
|
set_property(TARGET aws-cpp-sdk-core |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES ZLIB::ZLIB) |
|
add_dependencies(awssdk_ep zlib_ep) |
|
endif() |
|
set_property(TARGET AWS::aws-c-io |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS}) |
|
elseif(WIN32) |
|
set_property(TARGET aws-cpp-sdk-core |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
"winhttp.lib" |
|
"bcrypt.lib" |
|
"wininet.lib" |
|
"userenv.lib" |
|
"version.lib") |
|
set_property(TARGET AWS::aws-c-cal |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES |
|
"bcrypt.lib" |
|
"ncrypt.lib" |
|
"Secur32.lib" |
|
"Shlwapi.lib") |
|
set_property(TARGET AWS::aws-c-io |
|
APPEND |
|
PROPERTY INTERFACE_LINK_LIBRARIES "crypt32.lib") |
|
endif() |
|
|
|
|
|
endmacro() |
|
|
|
if(ARROW_S3) |
|
resolve_dependency(AWSSDK HAVE_ALT TRUE) |
|
|
|
message(STATUS "Found AWS SDK headers: ${AWSSDK_INCLUDE_DIR}") |
|
message(STATUS "Found AWS SDK libraries: ${AWSSDK_LINK_LIBRARIES}") |
|
|
|
if(ARROW_BUILD_STATIC) |
|
if(${AWSSDK_SOURCE} STREQUAL "SYSTEM") |
|
foreach(AWSSDK_LINK_LIBRARY ${AWSSDK_LINK_LIBRARIES}) |
|
string(APPEND ARROW_PC_LIBS_PRIVATE " $<TARGET_FILE:${AWSSDK_LINK_LIBRARY}>") |
|
endforeach() |
|
else() |
|
if(UNIX) |
|
string(APPEND ARROW_PC_REQUIRES_PRIVATE " libcurl") |
|
endif() |
|
string(APPEND ARROW_PC_REQUIRES_PRIVATE " openssl") |
|
if(APPLE) |
|
string(APPEND ARROW_PC_LIBS_PRIVATE " -framework Security") |
|
endif() |
|
endif() |
|
endif() |
|
|
|
if(APPLE) |
|
|
|
|
|
|
|
|
|
set_target_properties(AWS::aws-c-common |
|
PROPERTIES INTERFACE_LINK_LIBRARIES |
|
"-pthread;pthread;-framework CoreFoundation") |
|
endif() |
|
endif() |
|
|
|
|
|
|
|
|
|
function(build_azure_sdk) |
|
if(CMAKE_VERSION VERSION_LESS 3.22) |
|
|
|
|
|
|
|
|
|
|
|
|
|
message(FATAL_ERROR "Building Azure SDK for C++ requires at least CMake 3.22. " |
|
"(At least we can't use CMake 3.16)") |
|
endif() |
|
message(STATUS "Building Azure SDK for C++ from source") |
|
fetchcontent_declare(azure_sdk |
|
${FC_DECLARE_COMMON_OPTIONS} |
|
URL ${ARROW_AZURE_SDK_URL} |
|
URL_HASH "SHA256=${ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM}") |
|
prepare_fetchcontent() |
|
set(BUILD_PERFORMANCE_TESTS FALSE) |
|
set(BUILD_SAMPLES FALSE) |
|
set(BUILD_TESTING FALSE) |
|
set(BUILD_WINDOWS_UWP TRUE) |
|
set(CMAKE_UNITY_BUILD FALSE) |
|
set(DISABLE_AZURE_CORE_OPENTELEMETRY TRUE) |
|
set(ENV{AZURE_SDK_DISABLE_AUTO_VCPKG} TRUE) |
|
set(WARNINGS_AS_ERRORS FALSE) |
|
fetchcontent_makeavailable(azure_sdk) |
|
if(CMAKE_VERSION VERSION_LESS 3.28) |
|
set_property(DIRECTORY ${azure_sdk_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL TRUE) |
|
endif() |
|
set(AZURE_SDK_VENDORED |
|
TRUE |
|
PARENT_SCOPE) |
|
list(APPEND |
|
ARROW_BUNDLED_STATIC_LIBS |
|
Azure::azure-core |
|
Azure::azure-identity |
|
Azure::azure-storage-blobs |
|
Azure::azure-storage-common |
|
Azure::azure-storage-files-datalake) |
|
set(ARROW_BUNDLED_STATIC_LIBS |
|
${ARROW_BUNDLED_STATIC_LIBS} |
|
PARENT_SCOPE) |
|
endfunction() |
|
|
|
if(ARROW_WITH_AZURE_SDK) |
|
resolve_dependency(Azure REQUIRED_VERSION 1.10.2) |
|
set(AZURE_SDK_LINK_LIBRARIES Azure::azure-storage-files-datalake |
|
Azure::azure-storage-blobs Azure::azure-identity) |
|
endif() |
|
|
|
|
|
|
|
macro(build_ucx) |
|
message(STATUS "Building UCX from source") |
|
|
|
set(UCX_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/ucx_ep-install") |
|
|
|
|
|
set(UCX_SHARED_LIB_UCP "${UCX_PREFIX}/lib/libucp${CMAKE_SHARED_LIBRARY_SUFFIX}") |
|
set(UCX_SHARED_LIB_UCT "${UCX_PREFIX}/lib/libuct${CMAKE_SHARED_LIBRARY_SUFFIX}") |
|
set(UCX_SHARED_LIB_UCS "${UCX_PREFIX}/lib/libucs${CMAKE_SHARED_LIBRARY_SUFFIX}") |
|
set(UCX_SHARED_LIB_UCM "${UCX_PREFIX}/lib/libucm${CMAKE_SHARED_LIBRARY_SUFFIX}") |
|
|
|
set(UCX_CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure) |
|
list(APPEND |
|
UCX_CONFIGURE_COMMAND |
|
"CC=${CMAKE_C_COMPILER}" |
|
"CXX=${CMAKE_CXX_COMPILER}" |
|
"CFLAGS=${EP_C_FLAGS}" |
|
"CXXFLAGS=${EP_CXX_FLAGS}" |
|
"--prefix=${UCX_PREFIX}" |
|
"--enable-mt" |
|
"--enable-shared") |
|
if(${UPPERCASE_BUILD_TYPE} STREQUAL "DEBUG") |
|
list(APPEND |
|
UCX_CONFIGURE_COMMAND |
|
"--enable-profiling" |
|
"--enable-frame-pointer" |
|
"--enable-stats" |
|
"--enable-fault-injection" |
|
"--enable-debug-data") |
|
else() |
|
list(APPEND |
|
UCX_CONFIGURE_COMMAND |
|
"--disable-logging" |
|
"--disable-debug" |
|
"--disable-assertions" |
|
"--disable-params-check") |
|
endif() |
|
set(UCX_BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}) |
|
externalproject_add(ucx_ep |
|
${EP_COMMON_OPTIONS} |
|
URL ${ARROW_UCX_SOURCE_URL} |
|
URL_HASH "SHA256=${ARROW_UCX_BUILD_SHA256_CHECKSUM}" |
|
CONFIGURE_COMMAND ${UCX_CONFIGURE_COMMAND} |
|
BUILD_IN_SOURCE 1 |
|
BUILD_COMMAND ${UCX_BUILD_COMMAND} |
|
BUILD_BYPRODUCTS "${UCX_SHARED_LIB_UCP}" "${UCX_SHARED_LIB_UCT}" |
|
"${UCX_SHARED_LIB_UCS}" "${UCX_SHARED_LIB_UCM}" |
|
INSTALL_COMMAND ${MAKE} install) |
|
|
|
|
|
set(UCX_INCLUDE_DIRS "${UCX_PREFIX}/include") |
|
file(MAKE_DIRECTORY "${UCX_INCLUDE_DIRS}") |
|
|
|
add_library(ucx::ucp SHARED IMPORTED) |
|
set_target_properties(ucx::ucp PROPERTIES IMPORTED_LOCATION "${UCX_SHARED_LIB_UCP}") |
|
add_library(ucx::uct SHARED IMPORTED) |
|
set_target_properties(ucx::uct PROPERTIES IMPORTED_LOCATION "${UCX_SHARED_LIB_UCT}") |
|
add_library(ucx::ucs SHARED IMPORTED) |
|
set_target_properties(ucx::ucs PROPERTIES IMPORTED_LOCATION "${UCX_SHARED_LIB_UCS}") |
|
|
|
add_dependencies(ucx::ucp ucx_ep) |
|
add_dependencies(ucx::uct ucx_ep) |
|
add_dependencies(ucx::ucs ucx_ep) |
|
endmacro() |
|
|
|
if(ARROW_WITH_UCX) |
|
resolve_dependency(ucx |
|
ARROW_CMAKE_PACKAGE_NAME |
|
ArrowFlight |
|
ARROW_PC_PACKAGE_NAME |
|
arrow-flight |
|
PC_PACKAGE_NAMES |
|
ucx) |
|
add_library(ucx::ucx INTERFACE IMPORTED) |
|
target_include_directories(ucx::ucx INTERFACE "${UCX_INCLUDE_DIRS}") |
|
target_link_libraries(ucx::ucx INTERFACE ucx::ucp ucx::uct ucx::ucs) |
|
endif() |
|
|
|
message(STATUS "All bundled static libraries: ${ARROW_BUNDLED_STATIC_LIBS}") |
|
|