zhjwpku commented on code in PR #236:
URL: https://github.com/apache/iceberg-cpp/pull/236#discussion_r2359012442


##########
cmake_modules/IcebergThirdpartyToolchain.cmake:
##########
@@ -430,6 +430,196 @@ function(resolve_zlib_dependency)
 
 endfunction()
 
+# ----------------------------------------------------------------------
+# CURL (for cpr)
+
+function(resolve_curl_dependency)
+  prepare_fetchcontent()
+
+  set(BUILD_CURL_EXE
+      OFF
+      CACHE BOOL "" FORCE)
+  set(BUILD_TESTING
+      OFF
+      CACHE BOOL "" FORCE)
+  set(CURL_ENABLE_EXPORT_TARGET
+      OFF
+      CACHE BOOL "" FORCE)
+  set(BUILD_SHARED_LIBS
+      OFF
+      CACHE BOOL "" FORCE)
+  set(CURL_STATICLIB
+      ON
+      CACHE BOOL "" FORCE)
+  set(HTTP_ONLY
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_LDAP
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_LDAPS
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_RTSP
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_FTP
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_FILE
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_TELNET
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_DICT
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_TFTP
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_GOPHER
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_POP3
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_IMAP
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_SMTP
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_DISABLE_SMB
+      ON
+      CACHE BOOL "" FORCE)
+  set(CURL_CA_BUNDLE
+      "auto"
+      CACHE STRING "" FORCE)
+  set(USE_LIBIDN2
+      OFF
+      CACHE BOOL "" FORCE)
+
+  fetchcontent_declare(CURL
+                       ${FC_DECLARE_COMMON_OPTIONS}
+                       GIT_REPOSITORY https://github.com/curl/curl.git
+                       GIT_TAG curl-8_11_0
+                       FIND_PACKAGE_ARGS
+                       NAMES
+                       CURL
+                       CONFIG)
+
+  fetchcontent_makeavailable(CURL)
+
+  if(TARGET OpenSSL::SSL)
+    message(STATUS "Adding OpenSSL to the system dependency list.")
+    list(APPEND ICEBERG_SYSTEM_DEPENDENCIES OpenSSL)
+  endif()
+
+  if(curl_SOURCE_DIR)
+    if(NOT TARGET CURL::libcurl)
+      add_library(CURL::libcurl INTERFACE IMPORTED)
+      target_link_libraries(CURL::libcurl INTERFACE libcurl_static)
+      target_include_directories(CURL::libcurl INTERFACE 
${curl_BINARY_DIR}/include
+                                                         
${curl_SOURCE_DIR}/include)
+    endif()
+
+    set(CURL_VENDORED TRUE)
+    set_target_properties(libcurl_static PROPERTIES OUTPUT_NAME 
"iceberg_vendored_curl"
+                                                    POSITION_INDEPENDENT_CODE 
ON)
+    add_library(Iceberg::libcurl_static ALIAS libcurl_static)
+    install(TARGETS libcurl_static
+            EXPORT iceberg_targets
+            RUNTIME DESTINATION "${ICEBERG_INSTALL_BINDIR}"
+            ARCHIVE DESTINATION "${ICEBERG_INSTALL_LIBDIR}"
+            LIBRARY DESTINATION "${ICEBERG_INSTALL_LIBDIR}")
+    message(STATUS "Use vendored CURL")
+
+    list(APPEND ICEBERG_SYSTEM_DEPENDENCIES OpenSSL)
+  else()
+    set(CURL_VENDORED FALSE)
+    list(APPEND ICEBERG_SYSTEM_DEPENDENCIES CURL)
+    message(STATUS "Use system CURL")
+  endif()
+
+  set(ICEBERG_SYSTEM_DEPENDENCIES
+      ${ICEBERG_SYSTEM_DEPENDENCIES}
+      PARENT_SCOPE)
+  set(CURL_VENDORED
+      ${CURL_VENDORED}
+      PARENT_SCOPE)
+endfunction()
+
+# ----------------------------------------------------------------------
+# cpr (C++ Requests)
+
+function(resolve_cpr_dependency)
+  prepare_fetchcontent()
+
+  set(CPR_BUILD_TESTS
+      OFF
+      CACHE BOOL "" FORCE)
+  set(CPR_BUILD_TESTS_SSL
+      OFF
+      CACHE BOOL "" FORCE)
+  set(CPR_ENABLE_SSL
+      ON
+      CACHE BOOL "" FORCE)
+  set(CPR_USE_SYSTEM_CURL
+      ON
+      CACHE BOOL "" FORCE)
+  set(CPR_CURL_NOSIGNAL
+      ON
+      CACHE BOOL "" FORCE)
+
+  set(CURL_VERSION_STRING
+      "8.11.0"
+      CACHE STRING "" FORCE)
+  set(CURL_LIB
+      "CURL::libcurl"
+      CACHE STRING "" FORCE)
+
+  fetchcontent_declare(cpr
+                       ${FC_DECLARE_COMMON_OPTIONS}
+                       GIT_REPOSITORY https://github.com/libcpr/cpr.git

Review Comment:
   Yes, code is the same, but using a release package requires less network 
bandwidth compared to the git repo.
   



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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to