|
1 |
| -set(LIBCURL_SOURCE_DIR ${CMAKE_SOURCE_DIR}/vendor/curl) |
| 1 | +include(FetchContent) |
2 | 2 |
|
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}") |
8 | 5 |
|
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) |
18 | 10 | 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) |
32 | 11 |
|
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() |
38 | 36 | 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