kou commented on code in PR #36835:
URL: https://github.com/apache/arrow/pull/36835#discussion_r1295484528


##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -5039,6 +5055,114 @@ if(ARROW_S3)
   endif()
 endif()
 
+# ----------------------------------------------------------------------
+# Azure SDK for C++
+
+macro(build_azure_sdk)
+  message(STATUS "Building Azure SDK for C++ from source")
+
+  find_curl()
+  find_package(LibXml2 REQUIRED)
+  add_custom_target(azure_sdk_dependencies)

Review Comment:
   It seems that we can remove this.
   
   ```suggestion
   ```



##########
cpp/cmake_modules/FindAzure.cmake:
##########
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+if(Azure_FOUND)
+  return()
+endif()
+
+set(find_package_args)
+list(APPEND find_package_args 
+  CONFIG 
+  # Avoid finding cmake files in local copies of the Azure SDK for C++. 
+  # e.g. the extracted copy from the previous build. 
+  NO_CMAKE_PACKAGE_REGISTRY
+)
+if(Azure_FIND_QUIETLY)
+  list(APPEND find_package_args QUIET)
+endif()
+
+if(Azure_FIND_REQUIRED)
+  list(APPEND find_package_args REQUIRED)
+endif()
+
+find_package(azure-core-cpp ${find_package_args})
+find_package(azure-identity-cpp ${find_package_args})
+find_package(azure-storage-blobs-cpp ${find_package_args})
+find_package(azure-storage-common-cpp ${find_package_args})
+find_package(azure-storage-files-datalake-cpp ${find_package_args})
+
+if(azure-core-cpp_FOUND AND azure-identity-cpp_FOUND AND 
azure-storage-blobs-cpp_FOUND
+  AND azure-storage-common-cpp_FOUND AND 
azure-storage-files-datalake-cpp_FOUND)
+  list(APPEND
+    AZURE_SDK_LINK_LIBRARIES
+    Azure::azure-core
+    Azure::azure-identity
+    Azure::azure-storage-blobs
+    Azure::azure-storage-common
+    Azure::azure-storage-files-datalake
+  )
+  set(Azure_FOUND TRUE)
+else()
+  set(Azure_FOUND FALSE)
+endif()

Review Comment:
   We can use `find_package_handle_standard_args()` to set `Azure_FOUND`: 
https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
   
   (BTW, can we use `azure-storage-files-datalake`s version for the target 
version?)
   
   ```suggestion
   find_package_handle_standard_args(
     Azure
     REQUIRED_VARS azure-core-cpp_FOUND
                   azure-identity-cpp_FOUND
                   azure-storage-blobs-cpp_FOUND
                   azure-storage-common-cpp_FOUND
                   azure-storage-files-datalake-cpp_FOUND
     VERSION_VAR azure-storage-files-datalake-cpp_VERSION)
   ```
   
   I think that we don't need to define `AZURE_SDK_LINK_LIBRARIES` because 
CMake target names are same as vendored version. (We can defined it in 
`ThirdpartyToolchain.cmake`.)



##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -5039,6 +5054,154 @@ if(ARROW_S3)
   endif()
 endif()
 
+# ----------------------------------------------------------------------
+# Azure SDK for C++
+
+macro(build_azuresdk)
+  message(STATUS "Building Azure C++ SDK from source")
+
+  find_curl()
+  find_package(LibXml2 REQUIRED)
+  add_custom_target(azure_sdk_dependencies)
+  
+  if(NOT OpenSSL_FOUND)
+    resolve_dependency(OpenSSL HAVE_ALT REQUIRED_VERSION
+                        ${ARROW_OPENSSL_REQUIRED_VERSION})
+  endif()
+
+  set(AZURESDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/azuresdk_ep-install")
+  set(AZURESDK_INCLUDE_DIR "${AZURESDK_PREFIX}/include")
+  set(AZURESDK_LIB_DIR "lib")
+
+  set(AZURESDK_COMMON_CMAKE_ARGS
+      ${EP_COMMON_CMAKE_ARGS}
+      "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+      "-DCMAKE_PREFIX_PATH=${AZURESDK_PREFIX}"
+      -DBUILD_SHARED_LIBS=OFF
+      -DCMAKE_INSTALL_LIBDIR=${AZURESDK_LIB_DIR}
+      -DDISABLE_AZURE_CORE_OPENTELEMETRY=ON
+      -DENABLE_TESTING=OFF
+      -DENABLE_UNITY_BUILD=ON
+      -DWARNINGS_AS_ERRORS=OFF)
+  
+  STRING(REPLACE "." ";" OPENSSL_VERSION_ELEMENTS_LIST ${OPENSSL_VERSION}) 
+  list(GET OPENSSL_VERSION_ELEMENTS_LIST 0 OPENSSL_VERSION_MAJOR)
+  if(OPENSSL_VERSION_MAJOR EQUAL 1)
+    list(APPEND
+    AZURESDK_COMMON_CMAKE_ARGS
+    
-DVCPKG_OVERLAY_PORTS=${CMAKE_CURRENT_BINARY_DIR}/azuresdk_ep-prefix/src/azuresdk_ep/vcpkg-custom-ports)
+  elseif(OPENSSL_VERSION_MAJOR EQUAL 3)
+  else()
+    message(FATAL_ERROR "Unknown OpenSSL version: ${OPENSSL_VERSION}")
+  endif()
+
+  file(MAKE_DIRECTORY ${AZURESDK_INCLUDE_DIR})
+  set(AZURE_CORE_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-core${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_IDENTITY_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-identity${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_BLOBS_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-blobs${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_COMMON_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-common${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-files-datalake${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  externalproject_add(azuresdk_ep
+                      ${EP_COMMON_OPTIONS}
+                      INSTALL_DIR ${AZURESDK_PREFIX}
+                      URL ${ARROW_AZURESDK_URL}
+                      URL_HASH 
"SHA256=${ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM}"
+                      CMAKE_ARGS ${AZURESDK_COMMON_CMAKE_ARGS}
+                      BUILD_BYPRODUCTS ${AZURE_CORE_STATIC_LIBRARY}
+                                       ${AZURE_IDENTITY_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_BLOBS_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_COMMON_STATIC_LIBRARY}
+                                       
${AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY}
+                      DEPENDS azure_sdk_dependencies)
+  add_library(Azure::azure-core STATIC IMPORTED)
+  set_target_properties(Azure::azure-core
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_CORE_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-core
+               PROPERTY INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto 
OpenSSL::SSL)
+  add_dependencies(Azure::azure-core azuresdk_ep)
+
+  add_library(Azure::azure-identity STATIC IMPORTED)
+  set_target_properties(Azure::azure-identity 
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_IDENTITY_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-identity
+               PROPERTY INTERFACE_LINK_LIBRARIES OpenSSL::Crypto 
Azure::azure-core)

Review Comment:
   Yes. ("all the other components" means `Azure::*` CMake targets, right?)



##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -5039,6 +5054,154 @@ if(ARROW_S3)
   endif()
 endif()
 
+# ----------------------------------------------------------------------
+# Azure SDK for C++
+
+macro(build_azuresdk)
+  message(STATUS "Building Azure C++ SDK from source")
+
+  find_curl()
+  find_package(LibXml2 REQUIRED)
+  add_custom_target(azure_sdk_dependencies)
+  
+  if(NOT OpenSSL_FOUND)
+    resolve_dependency(OpenSSL HAVE_ALT REQUIRED_VERSION
+                        ${ARROW_OPENSSL_REQUIRED_VERSION})
+  endif()
+
+  set(AZURESDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/azuresdk_ep-install")
+  set(AZURESDK_INCLUDE_DIR "${AZURESDK_PREFIX}/include")
+  set(AZURESDK_LIB_DIR "lib")
+
+  set(AZURESDK_COMMON_CMAKE_ARGS
+      ${EP_COMMON_CMAKE_ARGS}
+      "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+      "-DCMAKE_PREFIX_PATH=${AZURESDK_PREFIX}"
+      -DBUILD_SHARED_LIBS=OFF
+      -DCMAKE_INSTALL_LIBDIR=${AZURESDK_LIB_DIR}
+      -DDISABLE_AZURE_CORE_OPENTELEMETRY=ON
+      -DENABLE_TESTING=OFF
+      -DENABLE_UNITY_BUILD=ON
+      -DWARNINGS_AS_ERRORS=OFF)
+  
+  STRING(REPLACE "." ";" OPENSSL_VERSION_ELEMENTS_LIST ${OPENSSL_VERSION}) 
+  list(GET OPENSSL_VERSION_ELEMENTS_LIST 0 OPENSSL_VERSION_MAJOR)
+  if(OPENSSL_VERSION_MAJOR EQUAL 1)
+    list(APPEND
+    AZURESDK_COMMON_CMAKE_ARGS
+    
-DVCPKG_OVERLAY_PORTS=${CMAKE_CURRENT_BINARY_DIR}/azuresdk_ep-prefix/src/azuresdk_ep/vcpkg-custom-ports)
+  elseif(OPENSSL_VERSION_MAJOR EQUAL 3)
+  else()
+    message(FATAL_ERROR "Unknown OpenSSL version: ${OPENSSL_VERSION}")
+  endif()
+
+  file(MAKE_DIRECTORY ${AZURESDK_INCLUDE_DIR})
+  set(AZURE_CORE_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-core${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_IDENTITY_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-identity${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_BLOBS_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-blobs${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_COMMON_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-common${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY
+      
"${AZURESDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-files-datalake${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  externalproject_add(azuresdk_ep
+                      ${EP_COMMON_OPTIONS}
+                      INSTALL_DIR ${AZURESDK_PREFIX}
+                      URL ${ARROW_AZURESDK_URL}
+                      URL_HASH 
"SHA256=${ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM}"
+                      CMAKE_ARGS ${AZURESDK_COMMON_CMAKE_ARGS}
+                      BUILD_BYPRODUCTS ${AZURE_CORE_STATIC_LIBRARY}
+                                       ${AZURE_IDENTITY_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_BLOBS_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_COMMON_STATIC_LIBRARY}
+                                       
${AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY}
+                      DEPENDS azure_sdk_dependencies)
+  add_library(Azure::azure-core STATIC IMPORTED)
+  set_target_properties(Azure::azure-core
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_CORE_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-core
+               PROPERTY INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::Crypto 
OpenSSL::SSL)
+  add_dependencies(Azure::azure-core azuresdk_ep)
+
+  add_library(Azure::azure-identity STATIC IMPORTED)
+  set_target_properties(Azure::azure-identity 
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_IDENTITY_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-identity
+               PROPERTY INTERFACE_LINK_LIBRARIES OpenSSL::Crypto 
Azure::azure-core)
+  add_dependencies(Azure::azure-identity azuresdk_ep)
+
+  add_library(Azure::azure-storage-common STATIC IMPORTED)
+  set_target_properties(Azure::azure-storage-common
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_STORAGE_COMMON_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-storage-common
+               PROPERTY INTERFACE_LINK_LIBRARIES OpenSSL::Crypto 
LibXml2::LibXml2 Azure::azure-core)
+  add_dependencies(Azure::azure-storage-common azuresdk_ep)
+
+  add_library(Azure::azure-storage-blobs STATIC IMPORTED)
+  set_target_properties(Azure::azure-storage-blobs
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_STORAGE_BLOBS_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-identity
+               PROPERTY INTERFACE_LINK_LIBRARIES Azure::azure-core 
Azure::azure-storage-common)
+  add_dependencies(Azure::azure-storage-blobs azuresdk_ep)
+
+  add_library(Azure::azure-storage-files-datalake STATIC IMPORTED)
+  set_target_properties(Azure::azure-storage-files-datalake 
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURESDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-storage-files-datalake
+               PROPERTY INTERFACE_LINK_LIBRARIES Azure::azure-core 
Azure::azure-identity Azure::azure-storage-common Azure::azure-storage-blobs)
+  add_dependencies(Azure::azure-storage-files-datalake azuresdk_ep)
+
+  set(AZURE_SDK_VENDORED TRUE)
+  set(AZURESDK_LIBRARIES)
+  list(APPEND
+       AZURESDK_LIBRARIES
+       Azure::azure-core
+       Azure::azure-identity
+       Azure::azure-storage-blobs
+       Azure::azure-storage-common

Review Comment:
   Oh. I'll take a look at this.



##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -5039,6 +5055,114 @@ if(ARROW_S3)
   endif()
 endif()
 
+# ----------------------------------------------------------------------
+# Azure SDK for C++
+
+macro(build_azure_sdk)
+  message(STATUS "Building Azure SDK for C++ from source")
+
+  find_curl()
+  find_package(LibXml2 REQUIRED)
+  add_custom_target(azure_sdk_dependencies)
+
+  set(AZURE_SDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/azure-sdk_ep-install")
+  set(AZURE_SDK_INCLUDE_DIR "${AZURE_SDK_PREFIX}/include")
+
+  set(AZURE_SDK_COMMON_CMAKE_ARGS
+      ${EP_COMMON_CMAKE_ARGS}
+      "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+      "-DCMAKE_PREFIX_PATH=${AZURE_SDK_PREFIX}"
+      -DDISABLE_AZURE_CORE_OPENTELEMETRY=ON
+      -DWARNINGS_AS_ERRORS=OFF 
+      -DVCPKG_OVERLAY_PORTS=${CMAKE_SOURCE_DIR}/overlays)
+
+  file(MAKE_DIRECTORY ${AZURE_SDK_INCLUDE_DIR})
+  set(AZURE_CORE_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-core${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_IDENTITY_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-identity${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_BLOBS_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-blobs${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_COMMON_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-common${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-files-datalake${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  externalproject_add(azure-sdk_ep
+                      ${EP_COMMON_OPTIONS}
+                      INSTALL_DIR ${AZURE_SDK_PREFIX}
+                      URL ${ARROW_AZURE_SDK_URL}
+                      URL_HASH 
"SHA256=${ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM}"
+                      CMAKE_ARGS ${AZURE_SDK_COMMON_CMAKE_ARGS}
+                      BUILD_BYPRODUCTS ${AZURE_CORE_STATIC_LIBRARY}
+                                       ${AZURE_IDENTITY_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_BLOBS_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_COMMON_STATIC_LIBRARY}
+                                       
${AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY}
+                      DEPENDS azure_sdk_dependencies)

Review Comment:
   ```suggestion
                                          
${AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY})
   ```



##########
cpp/cmake_modules/ThirdpartyToolchain.cmake:
##########
@@ -5039,6 +5055,114 @@ if(ARROW_S3)
   endif()
 endif()
 
+# ----------------------------------------------------------------------
+# Azure SDK for C++
+
+macro(build_azure_sdk)
+  message(STATUS "Building Azure SDK for C++ from source")
+
+  find_curl()
+  find_package(LibXml2 REQUIRED)
+  add_custom_target(azure_sdk_dependencies)
+
+  set(AZURE_SDK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/azure-sdk_ep-install")
+  set(AZURE_SDK_INCLUDE_DIR "${AZURE_SDK_PREFIX}/include")
+
+  set(AZURE_SDK_COMMON_CMAKE_ARGS
+      ${EP_COMMON_CMAKE_ARGS}
+      "-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>"
+      "-DCMAKE_PREFIX_PATH=${AZURE_SDK_PREFIX}"
+      -DDISABLE_AZURE_CORE_OPENTELEMETRY=ON
+      -DWARNINGS_AS_ERRORS=OFF 
+      -DVCPKG_OVERLAY_PORTS=${CMAKE_SOURCE_DIR}/overlays)
+
+  file(MAKE_DIRECTORY ${AZURE_SDK_INCLUDE_DIR})
+  set(AZURE_CORE_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-core${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_IDENTITY_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-identity${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_BLOBS_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-blobs${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_COMMON_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-common${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  set(AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY
+      
"${AZURE_SDK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}azure-storage-files-datalake${CMAKE_STATIC_LIBRARY_SUFFIX}"
+  )
+  externalproject_add(azure-sdk_ep
+                      ${EP_COMMON_OPTIONS}
+                      INSTALL_DIR ${AZURE_SDK_PREFIX}
+                      URL ${ARROW_AZURE_SDK_URL}
+                      URL_HASH 
"SHA256=${ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM}"
+                      CMAKE_ARGS ${AZURE_SDK_COMMON_CMAKE_ARGS}
+                      BUILD_BYPRODUCTS ${AZURE_CORE_STATIC_LIBRARY}
+                                       ${AZURE_IDENTITY_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_BLOBS_STATIC_LIBRARY}
+                                       ${AZURE_STORAGE_COMMON_STATIC_LIBRARY}
+                                       
${AZURE_STORAGE_FILES_DATALAKE_STATIC_LIBRARY}
+                      DEPENDS azure_sdk_dependencies)
+  add_library(Azure::azure-core STATIC IMPORTED)
+  set_target_properties(Azure::azure-core
+                        PROPERTIES IMPORTED_LOCATION 
${AZURE_CORE_STATIC_LIBRARY}
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   ${AZURE_SDK_INCLUDE_DIR})
+  set_property(TARGET Azure::azure-core
+               PROPERTY INTERFACE_LINK_LIBRARIES CURL::libcurl OpenSSL::SSL)
+  add_dependencies(Azure::azure-core azure-sdk_ep)

Review Comment:
   We may not need this because we specify `BUILD_BYPRODUCTS` to 
`externalproject_add()`.



##########
cpp/cmake_modules/FindAzure.cmake:
##########
@@ -0,0 +1,56 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+if(Azure_FOUND)
+  return()
+endif()
+
+set(find_package_args)
+list(APPEND find_package_args 
+  CONFIG 
+  # Avoid finding cmake files in local copies of the Azure SDK for C++. 
+  # e.g. the extracted copy from the previous build. 
+  NO_CMAKE_PACKAGE_REGISTRY

Review Comment:
   How did you get this situation?
   Did you install Azure SDK for C++ to `~/.cmake/packages/` manually?



-- 
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]

Reply via email to