diff --git a/CMakeLists.txt b/CMakeLists.txt index a19f7aeb..a1e9f1cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -291,8 +291,19 @@ endif() if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER)) add_library(bundled_curl_int INTERFACE) + set(CURL_CMAKE_ARGS + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} + -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} + -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DENABLE_ARES=OFF -DENABLE_THREADED_RESOLVER=ON -DENABLE_DEBUG=OFF + -DENABLE_CURLDEBUG=OFF -DBUILD_TESTING=OFF -DENABLE_IPV6=ON -DENABLE_MANUAL=OFF -DCURL_USE_LIBSSH=OFF -DCURL_USE_LIBSSH2=OFF + -DUSE_NGHTTP2=OFF -DCURL_WINDOWS_SSPI=OFF -DCURL_ZLIB=AUTO -DCMAKE_USE_GSSAPI=OFF + -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCURL_DISABLE_TELNET=ON -DCURL_DISABLE_DICT=ON + -DCURL_DISABLE_FILE=ON -DCURL_DISABLE_TFTP=ON -DCURL_DISABLE_RTSP=ON -DCURL_DISABLE_POP3=ON + -DCURL_DISABLE_IMAP=ON -DCURL_DISABLE_SMTP=ON -DCURL_DISABLE_GOPHER=ON -DENABLE_UNIX_SOCKETS=ON + -DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/curl) + set(binary_dir "${LIBS_BINARY_DIR}/curl") + if (WIN32) - set(binary_dir "${LIBS_BINARY_DIR}/curl") if(VSTUDIO) set(CURL_BUNDLED_LIBRARIES optimized "${binary_dir}/lib/Release/libcurl${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${binary_dir}/lib/Debug/libcurl-d${CMAKE_STATIC_LIBRARY_SUFFIX}") @@ -302,17 +313,6 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER)) set(CURL_BUNDLED_LIBRARIES "${binary_dir}/libcurl${CMAKE_STATIC_LIBRARY_SUFFIX}") endif() - set(CURL_CMAKE_ARGS - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} - -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} - -DBUILD_CURL_EXE=OFF -DBUILD_SHARED_LIBS=OFF -DENABLE_ARES=OFF -DENABLE_THREADED_RESOLVER=ON -DENABLE_DEBUG=OFF - -DENABLE_CURLDEBUG=OFF -DBUILD_TESTING=OFF -DENABLE_IPV6=ON -DENABLE_MANUAL=OFF -DCURL_USE_LIBSSH2=OFF - -DUSE_NGHTTP2=OFF -DCURL_WINDOWS_SSPI=OFF -DCURL_ZLIB=AUTO -DCMAKE_USE_GSSAPI=OFF - -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCURL_DISABLE_TELNET=ON -DCURL_DISABLE_DICT=ON - -DCURL_DISABLE_FILE=ON -DCURL_DISABLE_TFTP=ON -DCURL_DISABLE_RTSP=ON -DCURL_DISABLE_POP3=ON - -DCURL_DISABLE_IMAP=ON -DCURL_DISABLE_SMTP=ON -DCURL_DISABLE_GOPHER=ON -DENABLE_UNIX_SOCKETS=ON - -DCMAKE_INSTALL_PREFIX=${LIBS_BINARY_DIR}/curl) - if(MSVC) list(APPEND CURL_CMAKE_ARGS -DCURL_STATIC_CRT=ON) endif() @@ -361,18 +361,50 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER)) target_link_libraries(bundled_curl_int INTERFACE bcrypt) endif() target_include_directories(bundled_curl_int INTERFACE "${LIBS_BINARY_DIR}/curl/include") - elseif (UNIX) + elseif (APPLE) - if(APPLE) - if(CROSS_COMPILE32) - set(CURL_BUILD_APPEND CFLAGS=-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}\ -O3\ -m32\ -DLUA_USE_MACOSX LDFLAGS=-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}\ -m32) - else() - set(CURL_BUILD_APPEND CFLAGS=-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}\ -arch=x86_64\ -pipe\ -Os\ -gdwarf-2\ -fembed-bitcode) - endif() + list(APPEND CURL_CMAKE_ARGS -DCMAKE_OSX_DEPLOYMENT_TARGET="${CMAKE_OSX_DEPLOYMENT_TARGET}" -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES_}) + if(BUNDLED_WOLFSSL) + include(CheckTypeSize) + check_type_size("long long" SIZEOF_LONG_LONG) + + list(APPEND CURL_CMAKE_ARGS + -DCMAKE_C_FLAGS=-DSIZEOF_LONG_LONG=${SIZEOF_LONG_LONG} + -DCURL_USE_OPENSSL=OFF -DCURL_DISABLE_CRYPTO_AUTH=ON + -DCURL_USE_WOLFSSL=ON + -DCMAKE_LIBRARY_PATH=${LIBS_BINARY_DIR}/wolfssl/lib + -DCMAKE_INCLUDE_PATH=${LIBS_BINARY_DIR}/wolfssl/include + ) + elseif(BUNDLED_OPENSSL) + list(APPEND CURL_CMAKE_ARGS -DOPENSSL_ROOT_DIR=${OPENSSL_PREFIX} -DCURL_USE_OPENSSL=ON) else() - set(CURL_BUILD_APPEND "") + list(APPEND CURL_CMAKE_ARGS -DCURL_USE_OPENSSL=OFF -DCURL_USE_SECTRANSP=ON) endif() + set(CURL_BUNDLED_LIBRARIES optimized "${binary_dir}/lib/libcurl${CMAKE_STATIC_LIBRARY_SUFFIX}" debug "${binary_dir}/lib/libcurl-d${CMAKE_STATIC_LIBRARY_SUFFIX}") + etl_find_lib_path(CURL_BUNDLED_LIBRARIES _CURL_OUTPUT) + + # -DHTTP_ONLY=ON + ExternalProject_Add(bundled_curl + DEPENDS bundled_wolfssl bundled_openssl + DOWNLOAD_DIR ${LIBS_DOWNLOAD_DIR} + URL https://github.com/curl/curl/archive/curl-7_87_0.tar.gz + URL_HASH MD5=ade16c73e4a4d42bc526e852757660f4 + SOURCE_DIR "${LIBS_DOWNLOAD_SRC_DIR}/curl" + PREFIX ${LIBS_BINARY_DIR}/curl + BINARY_DIR ${binary_dir} + BUILD_BYPRODUCTS ${_CURL_OUTPUT} + CMAKE_ARGS ${CURL_CMAKE_ARGS} + ) + + set_target_properties(bundled_curl PROPERTIES FOLDER ${BUNDLED_TARGETS_FOLDER}) + + add_dependencies(bundled_curl_int bundled_curl) + target_link_libraries(bundled_curl_int INTERFACE ${CURL_BUNDLED_LIBRARIES}) + target_include_directories(bundled_curl_int INTERFACE "${LIBS_BINARY_DIR}/curl/include") + elseif (UNIX) + + # TODO: swap out to CMake at some point set(CURL_CONFIGURE autoreconf -iv && ./configure --prefix=${LIBS_BINARY_DIR}/curl --enable-shared=no --enable-static=yes --enable-http --enable-ftp --disable-file @@ -388,11 +420,7 @@ if(BUNDLED_CURL AND (BUILD_CLIENT OR BUILD_SERVER)) --disable-manual ) - if(APPLE) - list(APPEND CURL_CONFIGURE --host=x86_64-apple-darwin ${CURL_BUILD_APPEND}) - else() - list(APPEND CURL_CONFIGURE --enable-unix-sockets --enable-libgcc) - endif() + list(APPEND CURL_CONFIGURE --enable-unix-sockets --enable-libgcc) if(FEATURE_SSL) if(BUNDLED_WOLFSSL)