Skip to content

Commit 9e8f206

Browse files
committed
fetch libcurl instead of build
1 parent 5caf95e commit 9e8f206

File tree

1 file changed

+68
-34
lines changed

1 file changed

+68
-34
lines changed

cmake/BuildMyCurl.cmake

Lines changed: 68 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,73 @@
1-
set(LIBCURL_SOURCE_DIR ${CMAKE_SOURCE_DIR}/vendor/curl)
1+
include(FetchContent)
22

3-
find_package(Git QUIET)
4-
execute_process(
5-
COMMAND ${GIT_EXECUTABLE} checkout curl-8_2_0
6-
WORKING_DIRECTORY ${LIBCURL_SOURCE_DIR}
7-
RESULT_VARIABLE GIT_SUBMOD_RESULT)
3+
set(LibCurl_VERSION "8.4.0-1")
4+
set(LibCurl_BASEURL "https://github.com/obs-ai/obs-ai-libcurl-dep/releases/download/${LibCurl_VERSION}")
85

9-
if(OS_MACOS)
10-
set(CURL_USE_OPENSSL OFF)
11-
set(CURL_USE_SECTRANSP ON)
12-
elseif(OS_WINDOWS)
13-
set(CURL_USE_OPENSSL OFF)
14-
set(CURL_USE_SCHANNEL ON)
15-
elseif(OS_LINUX)
16-
add_compile_options(-fPIC)
17-
set(CURL_USE_OPENSSL ON)
6+
if(${CMAKE_BUILD_TYPE} STREQUAL Release OR ${CMAKE_BUILD_TYPE} STREQUAL RelWithDebInfo)
7+
set(LibCurl_BUILD_TYPE Release)
8+
else()
9+
set(LibCurl_BUILD_TYPE Debug)
1810
endif()
19-
set(BUILD_CURL_EXE OFF)
20-
set(BUILD_SHARED_LIBS OFF)
21-
set(HTTP_ONLY ON)
22-
set(CURL_USE_LIBSSH2 OFF)
23-
set(CURL_DISABLE_FTP ON)
24-
set(CURL_DISABLE_LDAP ON)
25-
set(CURL_DISABLE_LDAPS ON)
26-
set(CURL_DISABLE_TELNET ON)
27-
set(CURL_DISABLE_MQTT ON)
28-
set(CURL_DISABLE_POP3 ON)
29-
set(CURL_DISABLE_RTMP ON)
30-
set(CURL_DISABLE_SMTP ON)
31-
set(CURL_DISABLE_GOPHER ON)
3211

33-
add_subdirectory(${LIBCURL_SOURCE_DIR} EXCLUDE_FROM_ALL)
34-
if(OS_MACOS)
35-
target_compile_options(
36-
libcurl PRIVATE -Wno-error=ambiguous-macro -Wno-error=deprecated-declarations -Wno-error=unreachable-code
37-
-Wno-error=unused-parameter -Wno-error=unused-variable)
12+
if(APPLE)
13+
if(LibCurl_BUILD_TYPE STREQUAL Release)
14+
set(LibCurl_URL "${LibCurl_BASEURL}/libcurl-macos-master-Release.tar.gz")
15+
set(LibCurl_HASH MD5=C89D8BC38E221737B7D5C9E5AE18C079)
16+
else()
17+
set(LibCurl_URL "${LibCurl_BASEURL}/libcurl-macos-master-Debug.tar.gz")
18+
set(LibCurl_HASH MD5=F2A643B44D8626119DDB326C5AFFD704)
19+
endif()
20+
elseif(MSVC)
21+
if(LibCurl_BUILD_TYPE STREQUAL Release)
22+
set(LibCurl_URL "${LibCurl_BASEURL}/libcurl-windows-master-Release.zip")
23+
set(LibCurl_HASH MD5=81BC6A5004F0D52AA082A25B813B1362)
24+
else()
25+
set(LibCurl_URL "${LibCurl_BASEURL}/libcurl-windows-master-Debug.zip")
26+
set(LibCurl_HASH MD5=8DC73477E3D427E2EA5124B57985BF47)
27+
endif()
28+
else()
29+
if(LibCurl_BUILD_TYPE STREQUAL Release)
30+
set(LibCurl_URL "${LibCurl_BASEURL}/libcurl-linux-master-Release.tar.gz")
31+
set(LibCurl_HASH MD5=EA9537A0BDBA1C53DC4A54FE767E90E8)
32+
else()
33+
set(LibCurl_URL "${LibCurl_BASEURL}/libcurl-linux-master-Debug.tar.gz")
34+
set(LibCurl_HASH MD5=6F405CFA0398A04ADD1C2FCE9596F8B8)
35+
endif()
3836
endif()
39-
include_directories(SYSTEM ${LIBCURL_SOURCE_DIR}/include)
37+
38+
FetchContent_Declare(
39+
libcurl_fetch
40+
URL ${LibCurl_URL}
41+
URL_HASH ${LibCurl_HASH})
42+
FetchContent_MakeAvailable(libcurl_fetch)
43+
44+
if(MSVC)
45+
set(libcurl_fetch_lib_location "${libcurl_fetch_SOURCE_DIR}/lib/libcurl.lib")
46+
set(libcurl_fetch_link_libs "\$<LINK_ONLY:ws2_32>;\$<LINK_ONLY:advapi32>;\$<LINK_ONLY:crypt32>;\$<LINK_ONLY:bcrypt>")
47+
else()
48+
find_package(ZLIB REQUIRED)
49+
set(libcurl_fetch_lib_location "${libcurl_fetch_SOURCE_DIR}/lib/libcurl.a")
50+
if(UNIX AND NOT APPLE)
51+
find_package(OpenSSL REQUIRED)
52+
set(libcurl_fetch_link_libs "\$<LINK_ONLY:OpenSSL::SSL>;\$<LINK_ONLY:OpenSSL::Crypto>;\$<LINK_ONLY:ZLIB::ZLIB>")
53+
else()
54+
set(libcurl_fetch_link_libs
55+
"-framework SystemConfiguration;-framework Security;-framework CoreFoundation;-framework CoreServices;ZLIB::ZLIB"
56+
)
57+
endif()
58+
endif()
59+
60+
# Create imported target
61+
add_library(libcurl STATIC IMPORTED)
62+
63+
set_target_properties(
64+
libcurl
65+
PROPERTIES INTERFACE_COMPILE_DEFINITIONS "CURL_STATICLIB"
66+
INTERFACE_INCLUDE_DIRECTORIES "${libcurl_fetch_SOURCE_DIR}/include"
67+
INTERFACE_LINK_LIBRARIES "${libcurl_fetch_link_libs}")
68+
set_property(
69+
TARGET libcurl
70+
APPEND
71+
PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
72+
set_target_properties(libcurl PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" IMPORTED_LOCATION_RELEASE
73+
${libcurl_fetch_lib_location})

0 commit comments

Comments
 (0)