diff --git a/3rdparty/README.md b/3rdparty/README.md index b494ac77fc7..3e6b74a8d9b 100644 --- a/3rdparty/README.md +++ b/3rdparty/README.md @@ -28,7 +28,7 @@ As an alternative, you can modify 3rdparty/zeromq/zeromq_build.cmake to fetch zeromq from our fork https://github.com/isl-org/libzmq -------------------------------------------------------------------------------- -curl 7.88.0 Curl license +curl 8.10.1 Curl license Curl is a command-line tool for transferring data specified with URL syntax. https://github.com/curl/curl -------------------------------------------------------------------------------- diff --git a/3rdparty/curl/curl.cmake b/3rdparty/curl/curl.cmake index 7a73051c1c0..673ac3b47a0 100644 --- a/3rdparty/curl/curl.cmake +++ b/3rdparty/curl/curl.cmake @@ -11,83 +11,45 @@ else() set(curl_lib_name curl) endif() -if(UNIX AND NOT APPLE AND NOT LINUX_AARCH64) - # For ubuntu x86, we do not compile from source. Instead, we use the - # downloaded libcurl binaries. - option(BUILD_CURL_FROM_SOURCE "Build CURL from source" OFF) -else() - option(BUILD_CURL_FROM_SOURCE "Build CURL from source" ON) -endif() - -mark_as_advanced(BUILD_CURL_FROM_SOURCE) -if((MSVC OR APPLE OR LINUX_AARCH64) AND NOT BUILD_CURL_FROM_SOURCE) - message(FATAL_ERROR "BUILD_CURL_FROM_SOURCE is required to be ON.") +if (APPLE) # homebrew does not package libidn2 + set(curl_cmake_extra_args -DUSE_APPLE_IDN=ON -DUSE_LIBIDN2=OFF) endif() -if(BUILD_CURL_FROM_SOURCE) - ExternalProject_Add( - ext_curl - PREFIX curl - URL https://github.com/curl/curl/releases/download/curl-7_88_0/curl-7.88.0.tar.xz - URL_HASH SHA256=fd17432cf28714a4cf39d89e26b8ace0d8901199fe5d01d75eb0ae3bbfcc731f - DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/curl" - CMAKE_ARGS - -DCMAKE_INSTALL_PREFIX= - -DBUILD_SHARED_LIBS=OFF - -DBUILD_CURL_EXE=OFF - -DBUILD_TESTING=OFF - -DCURL_DISABLE_LDAP=ON - -DCURL_DISABLE_LDAPS=ON - -DCURL_DISABLE_IMAP=ON - -DCURL_DISABLE_MQTT=ON - -DCURL_DISABLE_POP3=ON - -DCURL_DISABLE_SMTP=ON - -DCURL_DISABLE_TELNET=ON - -DCURL_USE_LIBSSH2=OFF - -DCURL_USE_OPENSSL=ON - -DOPENSSL_ROOT_DIR=${BORINGSSL_ROOT_DIR} - ${curl_cmake_extra_args} - ${ExternalProject_CMAKE_ARGS_hidden} - BUILD_BYPRODUCTS - /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}${CMAKE_STATIC_LIBRARY_SUFFIX} - /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}-d${CMAKE_STATIC_LIBRARY_SUFFIX} - ) - - ExternalProject_Get_Property(ext_curl INSTALL_DIR) - set(CURL_INCLUDE_DIRS ${INSTALL_DIR}/include/) # "/" is critical. - set(CURL_LIB_DIR ${INSTALL_DIR}/${Open3D_INSTALL_LIB_DIR}) - if(MSVC) - set(CURL_LIBRARIES ${curl_lib_name}$<$:-d>) - else() - set(CURL_LIBRARIES ${curl_lib_name}) - endif() +ExternalProject_Add( + ext_curl + PREFIX curl + URL https://github.com/curl/curl/releases/download/curl-8_10_1/curl-8.10.1.tar.xz + URL_HASH SHA256=73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee + DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/curl" + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX= + -DBUILD_SHARED_LIBS=OFF + -DBUILD_CURL_EXE=OFF + -DBUILD_TESTING=OFF + -DCURL_DISABLE_LDAP=ON + -DCURL_DISABLE_LDAPS=ON + -DCURL_DISABLE_IMAP=ON + -DCURL_DISABLE_MQTT=ON + -DCURL_DISABLE_POP3=ON + -DCURL_DISABLE_SMTP=ON + -DCURL_DISABLE_TELNET=ON + -DCURL_USE_LIBSSH2=OFF + -DCURL_USE_OPENSSL=ON + -DOPENSSL_ROOT_DIR=${BORINGSSL_ROOT_DIR} + ${curl_cmake_extra_args} + ${ExternalProject_CMAKE_ARGS_hidden} + BUILD_BYPRODUCTS + /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}${CMAKE_STATIC_LIBRARY_SUFFIX} + /${Open3D_INSTALL_LIB_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}-d${CMAKE_STATIC_LIBRARY_SUFFIX} +) + +ExternalProject_Get_Property(ext_curl INSTALL_DIR) +set(CURL_INCLUDE_DIRS ${INSTALL_DIR}/include/) # "/" is critical. +set(CURL_LIB_DIR ${INSTALL_DIR}/${Open3D_INSTALL_LIB_DIR}) +if(MSVC) + set(CURL_LIBRARIES ${curl_lib_name}$<$:-d>) else() - # Optimize for Ubuntu x86. Curl can take a long time to configure. - # - # To generate pre-compiled curl: - # 1. Use oldest supported Ubuntu (eg. in docker), not the latest. - # 2. -DBUILD_CURL_FROM_SOURCE=ON, build Open3D: make ext_curl - # 3. cd build/curl - # 4. tar -czvf curl_7.88.0_linux_x86_64.tar.gz include lib - ExternalProject_Add( - ext_curl - PREFIX curl - URL https://github.com/isl-org/open3d_downloads/releases/download/boringssl-bin/curl_7.88.0_linux_x86_64.tar.bz2 - URL_HASH SHA256=745f33ad65c550e1885a5341945a8a952123565cfb83b477433f3784857ec0ea - DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/curl" - UPDATE_COMMAND "" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - BUILD_BYPRODUCTS - /lib/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}${CMAKE_STATIC_LIBRARY_SUFFIX} - /lib/${CMAKE_STATIC_LIBRARY_PREFIX}${curl_lib_name}-d${CMAKE_STATIC_LIBRARY_SUFFIX} - ) - - ExternalProject_Get_Property(ext_curl SOURCE_DIR) - set(CURL_INCLUDE_DIRS ${SOURCE_DIR}/include/) # "/" is critical. - set(CURL_LIB_DIR ${SOURCE_DIR}/lib) set(CURL_LIBRARIES ${curl_lib_name}) endif() diff --git a/3rdparty/find_dependencies.cmake b/3rdparty/find_dependencies.cmake index 13f6501c8de..1c43349915b 100644 --- a/3rdparty/find_dependencies.cmake +++ b/3rdparty/find_dependencies.cmake @@ -909,6 +909,11 @@ if(NOT USE_SYSTEM_CURL) # ``` # The "Foundation" framework is already linked by GLFW. target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration") + elseif(UNIX) + find_library(LIBIDN2 NAMES idn2 libidn2 libidn2.so.0 ) + if(LIBIDN2) + target_link_libraries(3rdparty_curl INTERFACE ${LIBIDN2}) + endif() endif() target_link_libraries(3rdparty_curl INTERFACE 3rdparty_openssl) endif()