From 3b898a8fdfa8ce0da2754232b72a8ea38a1e2df7 Mon Sep 17 00:00:00 2001 From: Kim-jy0819 Date: Tue, 22 Oct 2024 21:31:36 +0900 Subject: [PATCH 1/7] feat: upgrade curl latest version --- 3rdparty/README.md | 2 +- 3rdparty/curl/curl.cmake | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) 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..f2bfccb790e 100644 --- a/3rdparty/curl/curl.cmake +++ b/3rdparty/curl/curl.cmake @@ -29,8 +29,8 @@ 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 + 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= @@ -69,12 +69,12 @@ else() # 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 + # 4. tar -czvf curl_8.10.1_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 + URL https://github.com/isl-org/open3d_downloads/releases/download/boringssl-bin/curl_8.10.1_linux_x86_64.tar.bz2 + URL_HASH SHA256=511e9c7a42b2b21a57cda901e4f036a62a46c2fcd74834791f79820d6eb4a3fb DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/curl" UPDATE_COMMAND "" CONFIGURE_COMMAND "" From 76a6659901beb037fcf5671d9219eab67eb271ce Mon Sep 17 00:00:00 2001 From: Kim-jy0819 Date: Tue, 22 Oct 2024 23:42:05 +0900 Subject: [PATCH 2/7] chore: change sha256 --- 3rdparty/curl/curl.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/curl/curl.cmake b/3rdparty/curl/curl.cmake index f2bfccb790e..c1b2fa1dcb7 100644 --- a/3rdparty/curl/curl.cmake +++ b/3rdparty/curl/curl.cmake @@ -74,7 +74,7 @@ else() ext_curl PREFIX curl URL https://github.com/isl-org/open3d_downloads/releases/download/boringssl-bin/curl_8.10.1_linux_x86_64.tar.bz2 - URL_HASH SHA256=511e9c7a42b2b21a57cda901e4f036a62a46c2fcd74834791f79820d6eb4a3fb + URL_HASH SHA256=4977fc20d00b22ab36e3bebd556f06c720b6c03316cd476487ab37fc79d44163 DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/curl" UPDATE_COMMAND "" CONFIGURE_COMMAND "" From 0e3baa81b274acac42bfcf5e1da35d4dff94376e Mon Sep 17 00:00:00 2001 From: Sameer Sheorey Date: Sun, 17 Nov 2024 00:48:26 -0800 Subject: [PATCH 3/7] Fix macOS linker error (USE_APPLE_IDN in curl). End hosting curl binaries to allow easy version updates. --- 3rdparty/curl/curl.cmake | 151 ++++++++++++++++++++------------------- 1 file changed, 79 insertions(+), 72 deletions(-) diff --git a/3rdparty/curl/curl.cmake b/3rdparty/curl/curl.cmake index c1b2fa1dcb7..a1f1ea6d60f 100644 --- a/3rdparty/curl/curl.cmake +++ b/3rdparty/curl/curl.cmake @@ -11,84 +11,91 @@ 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() +# Ending hosting of new curl binaries to allow easy version updates. +# Keep config comments for future reference. +# +# 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.") +# 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-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} - ) +# if(BUILD_CURL_FROM_SOURCE) +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() - set(CURL_LIBRARIES ${curl_lib_name}) - endif() +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_8.10.1_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_8.10.1_linux_x86_64.tar.bz2 - URL_HASH SHA256=4977fc20d00b22ab36e3bebd556f06c720b6c03316cd476487ab37fc79d44163 - 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() + # 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_8.10.1_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_8.10.1_linux_x86_64.tar.bz2 + # URL_HASH SHA256=4977fc20d00b22ab36e3bebd556f06c720b6c03316cd476487ab37fc79d44163 + # 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() add_dependencies(ext_curl ext_boringssl) From 5e05a9a0f53b5379de7acc4df3a46d93d4df6dff Mon Sep 17 00:00:00 2001 From: Benjamin Ummenhofer Date: Fri, 20 Dec 2024 09:29:43 -0800 Subject: [PATCH 4/7] add idn2 to target_link_libraries for curl --- 3rdparty/find_dependencies.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/3rdparty/find_dependencies.cmake b/3rdparty/find_dependencies.cmake index c3dc3885565..5baf5ec5aab 100644 --- a/3rdparty/find_dependencies.cmake +++ b/3rdparty/find_dependencies.cmake @@ -907,6 +907,8 @@ if(NOT USE_SYSTEM_CURL) # ``` # The "Foundation" framework is already linked by GLFW. target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration") + elseif(UNIX) + target_link_libraries(3rdparty_curl INTERFACE idn2) endif() target_link_libraries(3rdparty_curl INTERFACE 3rdparty_openssl) endif() From ed1575866863b3a31aa1537649044951cf488487 Mon Sep 17 00:00:00 2001 From: Benjamin Ummenhofer Date: Sat, 21 Dec 2024 02:31:14 -0800 Subject: [PATCH 5/7] explicitly search for libidn2 --- 3rdparty/find_dependencies.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/3rdparty/find_dependencies.cmake b/3rdparty/find_dependencies.cmake index 5baf5ec5aab..bf1889dbbe4 100644 --- a/3rdparty/find_dependencies.cmake +++ b/3rdparty/find_dependencies.cmake @@ -908,7 +908,8 @@ if(NOT USE_SYSTEM_CURL) # The "Foundation" framework is already linked by GLFW. target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration") elseif(UNIX) - target_link_libraries(3rdparty_curl INTERFACE idn2) + find_library(LIBIDN2 NAMES idn2 libidn2 libidn2.so.0 ) + target_link_libraries(3rdparty_curl INTERFACE ${LIBIDN2}) endif() target_link_libraries(3rdparty_curl INTERFACE 3rdparty_openssl) endif() From d0d31fbc73578a7e68b1c786690a93bbb6c176ec Mon Sep 17 00:00:00 2001 From: Benjamin Ummenhofer Date: Sat, 21 Dec 2024 04:22:32 -0800 Subject: [PATCH 6/7] add icucore and iconv libs for macos --- 3rdparty/find_dependencies.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/find_dependencies.cmake b/3rdparty/find_dependencies.cmake index bf1889dbbe4..229cbceef80 100644 --- a/3rdparty/find_dependencies.cmake +++ b/3rdparty/find_dependencies.cmake @@ -906,7 +906,7 @@ if(NOT USE_SYSTEM_CURL) # _Curl_resolv in libcurl.a(hostip.c.o) # ``` # The "Foundation" framework is already linked by GLFW. - target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration") + target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration icucore iconv") elseif(UNIX) find_library(LIBIDN2 NAMES idn2 libidn2 libidn2.so.0 ) target_link_libraries(3rdparty_curl INTERFACE ${LIBIDN2}) From 5c339d69c079276a67ef83ad3d255f7a1d608bbc Mon Sep 17 00:00:00 2001 From: Benjamin Ummenhofer Date: Sat, 21 Dec 2024 12:37:17 -0800 Subject: [PATCH 7/7] rm icucore and iconv libs --- 3rdparty/find_dependencies.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/find_dependencies.cmake b/3rdparty/find_dependencies.cmake index 229cbceef80..bf1889dbbe4 100644 --- a/3rdparty/find_dependencies.cmake +++ b/3rdparty/find_dependencies.cmake @@ -906,7 +906,7 @@ if(NOT USE_SYSTEM_CURL) # _Curl_resolv in libcurl.a(hostip.c.o) # ``` # The "Foundation" framework is already linked by GLFW. - target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration icucore iconv") + target_link_libraries(3rdparty_curl INTERFACE "-framework SystemConfiguration") elseif(UNIX) find_library(LIBIDN2 NAMES idn2 libidn2 libidn2.so.0 ) target_link_libraries(3rdparty_curl INTERFACE ${LIBIDN2})