cmake: use cmake to build curl on macos

This commit is contained in:
Jacker 2024-01-15 12:35:26 +02:00
parent d6431d4a3d
commit bb6f0b986a
No known key found for this signature in database
GPG key ID: CC846B58E6BDCFF2

View file

@ -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)