kou commented on a change in pull request #11268:
URL: https://github.com/apache/arrow/pull/11268#discussion_r720887779
##########
File path: cpp/cmake_modules/ThirdpartyToolchain.cmake
##########
@@ -3470,6 +3500,201 @@ if(ARROW_WITH_GRPC)
endif()
endif()
+# ----------------------------------------------------------------------
+# GCS and dependencies
+
+macro(build_crc32c_once)
+ if(NOT TARGET crc32c_ep)
+ message(STATUS "Building crc32c from source")
+ # Build crc32c
+ set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install")
+ set(CRC32C_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_LIBDIR=lib
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DCMAKE_CXX_STANDARD=11
+ -DCRC32C_BUILD_TESTS=OFF
+ -DCRC32C_BUILD_BENCHMARKS=OFF
+ -DCRC32C_USE_GLOG=OFF)
+ set(CRC32C_BUILD_BYPRODUCTS)
+
+ 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_LOG_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})
+ add_library(Crc32c::crc32c STATIC IMPORTED)
+ set_target_properties(Crc32c::crc32c
+ PROPERTIES IMPORTED_LOCATION
${_CRC32C_STATIC_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${CRC32C_INCLUDE}/include")
+ add_dependencies(Crc32c::crc32c crc32c_ep)
+ endif()
+endmacro()
+
+macro(build_nlohmann_json_once)
+ if(NOT TARGET nlohmann_json_ep)
+ message(STATUS "Building nlohmann-json from source")
+ # "Build" nlohmann-json
+ set(NLOHMANN_JSON_PREFIX
"${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json_ep-install")
+ set(NLOHMANN_JSON_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_CXX_STANDARD=11
+ "-DCMAKE_CXX_FLAGS=${EP_CXX_FLAGS}"
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DBUILD_TESTING=OFF)
+
+ set(NLOHMANN_JSON_BUILD_BYPRODUCTS
${NLOHMANN_JSON_PREFIX}/include/json.hpp)
+
+ externalproject_add(nlohmann_json_ep
+ ${EP_LOG_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})
+ add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED)
+ set_target_properties(nlohmann_json::nlohmann_json
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+ "${NLOHMANN_JSON_PREFIX}/include")
+ add_dependencies(nlohmann_json::nlohmann_json nlohmann_json_ep)
+ endif()
+endmacro()
+
+macro(build_google_cloud_cpp_storage)
+ message(STATUS "Building google-cloud-cpp from source")
+ message(STATUS "Only building the google-cloud-cpp::storage component")
+
+ # List of dependencies taken from
https://github.com/googleapis/google-cloud-cpp/blob/master/doc/packaging.md
+ build_absl_once()
+ build_crc32c_once()
+ build_nlohmann_json_once()
+
+ # Curl is required on all platforms, but building it internally might also
trip over S3's copy.
+ # For now, force its inclusion from the underlying system or fail.
+ find_package(CURL REQUIRED 7.47.0)
+
+ # Build google-cloud-cpp, with only storage_client
+
+ # Inject vendored packages via CMAKE_PREFIX_PATH
+ list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${ABSL_PREFIX})
+ list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${CRC32C_PREFIX})
+ list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${NLOHMANN_JSON_PREFIX})
+
+ set(GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST_SEP_CHAR "|")
+ list(JOIN GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST
+ ${GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST_SEP_CHAR}
GOOGLE_CLOUD_CPP_PREFIX_PATH)
+
+ 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}
+ -DBUILD_TESTING=OFF
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
Review comment:
```suggestion
```
##########
File path: cpp/CMakeLists.txt
##########
@@ -740,6 +740,14 @@ if(ARROW_ORC)
endif()
endif()
+if(ARROW_GCS)
+ list(APPEND ARROW_LINK_LIBS google-cloud-cpp::storage)
+ list(APPEND ARROW_STATIC_LINK_LIBS google-cloud-cpp::storage)
+ if(GCPSDK_SOURCE STREQUAL "SYSTEM")
Review comment:
```suggestion
if(google_cloud_cpp_storage_SOURCE STREQUAL "SYSTEM")
```
##########
File path: cpp/cmake_modules/ThirdpartyToolchain.cmake
##########
@@ -3470,6 +3500,201 @@ if(ARROW_WITH_GRPC)
endif()
endif()
+# ----------------------------------------------------------------------
+# GCS and dependencies
+
+macro(build_crc32c_once)
+ if(NOT TARGET crc32c_ep)
+ message(STATUS "Building crc32c from source")
+ # Build crc32c
+ set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install")
+ set(CRC32C_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
Review comment:
```suggestion
```
##########
File path: cpp/cmake_modules/ThirdpartyToolchain.cmake
##########
@@ -3470,6 +3500,201 @@ if(ARROW_WITH_GRPC)
endif()
endif()
+# ----------------------------------------------------------------------
+# GCS and dependencies
+
+macro(build_crc32c_once)
+ if(NOT TARGET crc32c_ep)
+ message(STATUS "Building crc32c from source")
+ # Build crc32c
+ set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install")
+ set(CRC32C_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_LIBDIR=lib
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DCMAKE_CXX_STANDARD=11
+ -DCRC32C_BUILD_TESTS=OFF
+ -DCRC32C_BUILD_BENCHMARKS=OFF
+ -DCRC32C_USE_GLOG=OFF)
+ set(CRC32C_BUILD_BYPRODUCTS)
Review comment:
```suggestion
```
##########
File path: cpp/cmake_modules/ThirdpartyToolchain.cmake
##########
@@ -3470,6 +3500,201 @@ if(ARROW_WITH_GRPC)
endif()
endif()
+# ----------------------------------------------------------------------
+# GCS and dependencies
+
+macro(build_crc32c_once)
+ if(NOT TARGET crc32c_ep)
+ message(STATUS "Building crc32c from source")
+ # Build crc32c
+ set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install")
+ set(CRC32C_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_LIBDIR=lib
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DCMAKE_CXX_STANDARD=11
+ -DCRC32C_BUILD_TESTS=OFF
+ -DCRC32C_BUILD_BENCHMARKS=OFF
+ -DCRC32C_USE_GLOG=OFF)
+ set(CRC32C_BUILD_BYPRODUCTS)
+
+ 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_LOG_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})
+ add_library(Crc32c::crc32c STATIC IMPORTED)
+ set_target_properties(Crc32c::crc32c
+ PROPERTIES IMPORTED_LOCATION
${_CRC32C_STATIC_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${CRC32C_INCLUDE}/include")
+ add_dependencies(Crc32c::crc32c crc32c_ep)
+ endif()
+endmacro()
+
+macro(build_nlohmann_json_once)
+ if(NOT TARGET nlohmann_json_ep)
+ message(STATUS "Building nlohmann-json from source")
+ # "Build" nlohmann-json
+ set(NLOHMANN_JSON_PREFIX
"${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json_ep-install")
+ set(NLOHMANN_JSON_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_CXX_STANDARD=11
+ "-DCMAKE_CXX_FLAGS=${EP_CXX_FLAGS}"
Review comment:
```suggestion
```
##########
File path: cpp/cmake_modules/ThirdpartyToolchain.cmake
##########
@@ -3470,6 +3500,201 @@ if(ARROW_WITH_GRPC)
endif()
endif()
+# ----------------------------------------------------------------------
+# GCS and dependencies
+
+macro(build_crc32c_once)
+ if(NOT TARGET crc32c_ep)
+ message(STATUS "Building crc32c from source")
+ # Build crc32c
+ set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install")
+ set(CRC32C_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_LIBDIR=lib
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DCMAKE_CXX_STANDARD=11
+ -DCRC32C_BUILD_TESTS=OFF
+ -DCRC32C_BUILD_BENCHMARKS=OFF
+ -DCRC32C_USE_GLOG=OFF)
+ set(CRC32C_BUILD_BYPRODUCTS)
+
+ 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_LOG_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})
+ add_library(Crc32c::crc32c STATIC IMPORTED)
+ set_target_properties(Crc32c::crc32c
+ PROPERTIES IMPORTED_LOCATION
${_CRC32C_STATIC_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${CRC32C_INCLUDE}/include")
+ add_dependencies(Crc32c::crc32c crc32c_ep)
+ endif()
+endmacro()
+
+macro(build_nlohmann_json_once)
+ if(NOT TARGET nlohmann_json_ep)
+ message(STATUS "Building nlohmann-json from source")
+ # "Build" nlohmann-json
+ set(NLOHMANN_JSON_PREFIX
"${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json_ep-install")
+ set(NLOHMANN_JSON_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
Review comment:
```suggestion
```
##########
File path: ci/scripts/cpp_build.sh
##########
@@ -121,6 +122,7 @@ cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX:-${ARROW_HOME}} \
-DCMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD:-OFF} \
-Dgflags_SOURCE=${gflags_SOURCE:-} \
+ -DGOOGLE_CLOUD_CPP_SOURCE=${GOOGLE_CLOUD_CPP_SOURCE:-} \
Review comment:
```suggestion
-Dgoogle_cloud_cpp_storage_SOURCE=${google_cloud_cpp_storage_SOURCE:-}
\
```
##########
File path: ci/docker/ubuntu-20.04-cpp.dockerfile
##########
@@ -129,6 +130,7 @@ ENV ARROW_BUILD_TESTS=ON \
ARROW_WITH_ZSTD=ON \
ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-${llvm}/bin/llvm-symbolizer \
AWSSDK_SOURCE=BUNDLED \
+ GOOGLE_CLOUD_CPP_SOURCE=BUNDLED \
Review comment:
```suggestion
google_cloud_cpp_storage_SOURCE=BUNDLED \
```
##########
File path: cpp/cmake_modules/ThirdpartyToolchain.cmake
##########
@@ -3470,6 +3500,201 @@ if(ARROW_WITH_GRPC)
endif()
endif()
+# ----------------------------------------------------------------------
+# GCS and dependencies
+
+macro(build_crc32c_once)
+ if(NOT TARGET crc32c_ep)
+ message(STATUS "Building crc32c from source")
+ # Build crc32c
+ set(CRC32C_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/crc32c_ep-install")
+ set(CRC32C_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_LIBDIR=lib
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DCMAKE_CXX_STANDARD=11
+ -DCRC32C_BUILD_TESTS=OFF
+ -DCRC32C_BUILD_BENCHMARKS=OFF
+ -DCRC32C_USE_GLOG=OFF)
+ set(CRC32C_BUILD_BYPRODUCTS)
+
+ 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_LOG_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})
+ add_library(Crc32c::crc32c STATIC IMPORTED)
+ set_target_properties(Crc32c::crc32c
+ PROPERTIES IMPORTED_LOCATION
${_CRC32C_STATIC_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${CRC32C_INCLUDE}/include")
+ add_dependencies(Crc32c::crc32c crc32c_ep)
+ endif()
+endmacro()
+
+macro(build_nlohmann_json_once)
+ if(NOT TARGET nlohmann_json_ep)
+ message(STATUS "Building nlohmann-json from source")
+ # "Build" nlohmann-json
+ set(NLOHMANN_JSON_PREFIX
"${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json_ep-install")
+ set(NLOHMANN_JSON_CMAKE_ARGS
+ ${EP_COMMON_CMAKE_ARGS}
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_CXX_STANDARD=11
+ "-DCMAKE_CXX_FLAGS=${EP_CXX_FLAGS}"
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DBUILD_TESTING=OFF)
+
+ set(NLOHMANN_JSON_BUILD_BYPRODUCTS
${NLOHMANN_JSON_PREFIX}/include/json.hpp)
+
+ externalproject_add(nlohmann_json_ep
+ ${EP_LOG_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})
+ add_library(nlohmann_json::nlohmann_json INTERFACE IMPORTED)
+ set_target_properties(nlohmann_json::nlohmann_json
+ PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+ "${NLOHMANN_JSON_PREFIX}/include")
+ add_dependencies(nlohmann_json::nlohmann_json nlohmann_json_ep)
+ endif()
+endmacro()
+
+macro(build_google_cloud_cpp_storage)
+ message(STATUS "Building google-cloud-cpp from source")
+ message(STATUS "Only building the google-cloud-cpp::storage component")
+
+ # List of dependencies taken from
https://github.com/googleapis/google-cloud-cpp/blob/master/doc/packaging.md
+ build_absl_once()
+ build_crc32c_once()
+ build_nlohmann_json_once()
+
+ # Curl is required on all platforms, but building it internally might also
trip over S3's copy.
+ # For now, force its inclusion from the underlying system or fail.
+ find_package(CURL REQUIRED 7.47.0)
+
+ # Build google-cloud-cpp, with only storage_client
+
+ # Inject vendored packages via CMAKE_PREFIX_PATH
+ list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${ABSL_PREFIX})
+ list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${CRC32C_PREFIX})
+ list(APPEND GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST ${NLOHMANN_JSON_PREFIX})
+
+ set(GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST_SEP_CHAR "|")
+ list(JOIN GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST
+ ${GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST_SEP_CHAR}
GOOGLE_CLOUD_CPP_PREFIX_PATH)
+
+ 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}
+ -DBUILD_TESTING=OFF
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_LIBDIR=lib
+ "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+ -DCMAKE_INSTALL_RPATH=$ORIGIN
+ -DCMAKE_PREFIX_PATH=${GOOGLE_CLOUD_CPP_PREFIX_PATH}
+ -DGOOGLE_CLOUD_CPP_ENABLE=storage)
+ if(OPENSSL_ROOT_DIR)
+ list(APPEND GOOGLE_CLOUD_CPP_CMAKE_ARGS
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR})
+ endif()
+
+ add_custom_target(google_cloud_cpp_dependencies)
+
+ add_dependencies(google_cloud_cpp_dependencies absl_ep)
+ add_dependencies(google_cloud_cpp_dependencies crc32c_ep)
+ add_dependencies(google_cloud_cpp_dependencies nlohmann_json_ep)
+ if(CARES_VENDORED)
+ add_dependencies(google_cloud_cpp_dependencies cares_ep)
+ endif()
+
+ 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_COMMON
+
"${GOOGLE_CLOUD_CPP_INSTALL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}google_cloud_cpp_common${CMAKE_STATIC_LIBRARY_SUFFIX}"
+ )
+
+ externalproject_add(google_cloud_cpp_ep
+ ${EP_LOG_OPTIONS}
+ LIST_SEPARATOR
${GOOGLE_CLOUD_CPP_PREFIX_PATH_LIST_SEP_CHAR}
+ INSTALL_DIR ${GOOGLE_CLOUD_CPP_INSTALL_PREFIX}
+ URL ${GOOGLE_CLOUD_CPP_SOURCE_URL}
+ URL_HASH
"SHA256=${ARROW_GOOGLE_CLOUD_CPP_BUILD_SHA256_CHECKSUM}"
+ CMAKE_ARGS ${GOOGLE_CLOUD_CPP_CMAKE_ARGS}
+ BUILD_BYPRODUCTS
${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_STORAGE}
+
${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_COMMON}
+ DEPENDS google_cloud_cpp_dependencies)
+ add_dependencies(toolchain google_cloud_cpp_ep)
+
+ add_library(google-cloud-cpp::common STATIC IMPORTED)
+ set_target_properties(google-cloud-cpp::common
+ PROPERTIES IMPORTED_LOCATION
+ "${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_COMMON}"
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${GOOGLE_CLOUD_CPP_INCLUDE_DIR}")
+ set_property(TARGET google-cloud-cpp::common
+ PROPERTY INTERFACE_LINK_LIBRARIES
+ absl::any
+ absl::flat_hash_map
+ absl::memory
+ absl::optional
+ absl::time
+ Threads::Threads)
+
+ add_library(google-cloud-cpp::storage STATIC IMPORTED)
+ set_target_properties(google-cloud-cpp::storage
+ PROPERTIES IMPORTED_LOCATION
+ "${GOOGLE_CLOUD_CPP_STATIC_LIBRARY_STORAGE}"
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${GOOGLE_CLOUD_CPP_INCLUDE_DIR}")
+ set_property(TARGET google-cloud-cpp::storage
+ PROPERTY INTERFACE_LINK_LIBRARIES
+ google-cloud-cpp::common
+ 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)
+ add_dependencies(google-cloud-cpp::storage google_cloud_cpp_ep)
+
+ list(APPEND ARROW_BUNDLED_STATIC_LIBS google-cloud-cpp::storage
+ google-cloud-cpp::common)
+endmacro()
+
+if(ARROW_WITH_GOOGLE_CLOUD_CPP)
+ if(GOOGLE_CLOUD_CPP_SOURCE STREQUAL "AUTO")
+ find_package(google_cloud_cpp_storage QUIET)
+ if(NOT google_cloud_cpp_storage_FOUND)
+ build_google_cloud_cpp_storage()
+ endif()
+ elseif(GOOGLE_CLOUD_CPP_SOURCE STREQUAL "BUNDLED")
+ build_google_cloud_cpp_storage()
+ elseif(GOOGLE_CLOUD_CPP_SOURCE STREQUAL "SYSTEM")
+ find_package(google_cloud_cpp_storage REQUIRED)
+ endif()
Review comment:
`resolve_dependency()` does this.
```suggestion
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]