diff --git a/cmake/FindCurl.cmake b/cmake/FindCurl.cmake index 696d50fd4..ac001c95b 100644 --- a/cmake/FindCurl.cmake +++ b/cmake/FindCurl.cmake @@ -26,6 +26,25 @@ if(CURL_FOUND) is_bundled(CURL_BUNDLED "${CURL_LIBRARY}") set(CURL_LIBRARIES ${CURL_LIBRARY}) set(CURL_INCLUDE_DIRS ${CURL_INCLUDEDIR}) + if(CURL_BUNDLED AND TARGET_OS STREQUAL "linux") + find_library(CURL_LIBRARY_SSL + NAMES ssl + HINTS ${EXTRA_CURL_LIBDIR} + ) + find_library(CURL_LIBRARY_CRYPTO + NAMES crypto + HINTS ${EXTRA_CURL_LIBDIR} + ) + # If we don't add `dl`, we get a missing reference to `dlclose`: + # ``` + # /usr/bin/ld: ../ddnet-libs/curl/linux/lib64/libcrypto.a(dso_dlfcn.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5' + # ``` + # + # Order matters, SSL needs to be linked before CRYPTO, otherwise we also get + # undefined symbols. + list(APPEND CURL_LIBRARIES ${CURL_LIBRARY_SSL} ${CURL_LIBRARY_CRYPTO} dl) + endif() + if(CURL_BUNDLED AND TARGET_OS STREQUAL "windows") set(CURL_COPY_FILES "${EXTRA_CURL_LIBDIR}/libcurl.dll" diff --git a/ddnet-libs b/ddnet-libs index 88acfd442..5ea046d7e 160000 --- a/ddnet-libs +++ b/ddnet-libs @@ -1 +1 @@ -Subproject commit 88acfd44263b6e6c1fcfa1d8e67c224481c2297d +Subproject commit 5ea046d7e709e56bb4bbfef69681cb1b57e304e0