···
4
+
cmake_minimum_required(VERSION 3.22)
5
+
OPTION (ENABLE_CHECK_VERSION "Check for version updates" ON)
6
+
OPTION (ENABLE_TELEMETRY "Enable sending telemetry" ON)
7
+
+OPTION (ENABLE_VENDORING "Use vendored dependencies" ON)
9
+
# We use FetchContent_Populate() instead of FetchContent_MakeAvailable() to allow EXCLUDE_FROM_ALL
10
+
# This prevents the dependencies from being built by default, which is our desired behavior
11
+
@@ -58,410 +59,156 @@ if (APPLE)
15
+
+## Preferentially build the bundled code. Full vendoring is to follow in a later version.
17
+
# Bundled code will occasionally use identical options - eg, BUILD_TESTING.
18
+
set(BUILD_TESTING OFF)
19
+
set(BUILD_STATIC_LIBS ON)
20
+
set(BUILD_SHARED_LIBS OFF)
22
+
-include(FetchContent)
25
+
-set(LIBLZMA_VERSION "5.8.1")
26
+
-FetchContent_Declare(xz
27
+
- GIT_REPOSITORY https://github.com/tukaani-project/xz.git
28
+
- GIT_TAG v${LIBLZMA_VERSION}
29
+
- ${USE_OVERRIDE_FIND_PACKAGE}
31
+
-set(XZ_MICROLZMA_DECODER OFF CACHE BOOL "" FORCE)
32
+
-set(XZ_MICROLZMA_ENCODER OFF CACHE BOOL "" FORCE)
33
+
-set(XZ_LZIP_DECODER OFF CACHE BOOL "" FORCE)
34
+
-set(XZ_ENABLE_SANDBOX OFF CACHE BOOL "" FORCE)
35
+
-set(XZ_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
36
+
-set(XZ_ENABLE_DOXYGEN OFF CACHE BOOL "" FORCE)
47
+
-set(CREATE_LZMA_SYMLINKS OFF CACHE BOOL "" FORCE)
48
+
-set(CREATE_XZ_SYMLINKS OFF CACHE BOOL "" FORCE)
49
+
-FetchContent_GetProperties(xz)
50
+
-if(NOT xz_POPULATED)
51
+
- FetchContent_Populate(xz)
52
+
- add_subdirectory(${xz_SOURCE_DIR} ${xz_BINARY_DIR} EXCLUDE_FROM_ALL)
54
+
-unset(XZ_MICROLZMA_DECODER)
55
+
-unset(XZ_MICROLZMA_ENCODER)
56
+
-unset(XZ_LZIP_DECODER)
57
+
-unset(XZ_ENABLE_SANDBOX)
58
+
-unset(XZ_BUILD_SHARED_LIBS)
59
+
-unset(XZ_ENABLE_DOXYGEN)
60
+
-unset(CREATE_LZMA_SYMLINKS)
61
+
-unset(CREATE_XZ_SYMLINKS)
62
+
-set(LIBLZMA_FOUND true CACHE BOOL "" FORCE)
63
+
-set(LIBLZMA_INCLUDE_DIR ${xz_SOURCE_DIR}/src/liblzma/api CACHE PATH "" FORCE)
64
+
-set(LIBLZMA_INCLUDE_DIRS ${xz_SOURCE_DIR}/src/liblzma/api CACHE PATH "" FORCE)
65
+
-set(LIBLZMA_LIBRARY liblzma CACHE FILEPATH "" FORCE)
66
+
-set(LIBLZMA_LIBRARIES ${xz_BINARY_DIR}/liblzma.a CACHE FILEPATH "" FORCE)
67
+
-set(LIBLZMA_HAS_AUTO_DECODER true CACHE BOOL "" FORCE)
68
+
-set(LIBLZMA_HAS_EASY_ENCODER true CACHE BOOL "" FORCE)
69
+
-set(LIBLZMA_HAS_LZMA_PRESET true CACHE BOOL "" FORCE)
72
+
-set(ZSTD_VERSION "1.5.7")
73
+
-FetchContent_Declare(zstd
74
+
- GIT_REPOSITORY https://github.com/facebook/zstd.git
75
+
- GIT_TAG v${ZSTD_VERSION}
76
+
- SOURCE_SUBDIR build/cmake
77
+
- ${USE_OVERRIDE_FIND_PACKAGE}
79
+
-set(ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "" FORCE)
80
+
-set(ZSTD_BUILD_SHARED OFF CACHE BOOL "" FORCE)
81
+
-set(ZSTD_BUILD_STATIC ON CACHE BOOL "" FORCE)
82
+
-set(ZSTD_BUILD_TESTS OFF CACHE BOOL "" FORCE)
83
+
-set(ZSTD_BUILD_DICTBUILDER OFF CACHE BOOL "" FORCE)
84
+
-FetchContent_GetProperties(zstd)
85
+
-if(NOT zstd_POPULATED)
86
+
- FetchContent_Populate(zstd)
87
+
- add_subdirectory(${zstd_SOURCE_DIR}/build/cmake ${zstd_BINARY_DIR} EXCLUDE_FROM_ALL)
89
+
-unset(ZSTD_BUILD_PROGRAMS)
90
+
-unset(ZSTD_BUILD_SHARED)
91
+
-unset(ZSTD_BUILD_STATIC)
92
+
-unset(ZSTD_BUILD_TESTS)
93
+
-unset(ZSTD_BUILD_DICTBUILDER)
94
+
-set(ZSTD_FOUND true CACHE BOOL "" FORCE)
95
+
-set(Zstd_VERSION ${ZSTD_VERSION} CACHE STRING "" FORCE)
96
+
-set(Zstd_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE)
97
+
-set(ZSTD_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE)
98
+
-set(Zstd_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE)
99
+
-set(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-src/lib CACHE PATH "" FORCE)
100
+
-set(Zstd_LIBRARIES libzstd_static CACHE FILEPATH "" FORCE)
101
+
-set(ZSTD_LIBRARIES libzstd_static CACHE FILEPATH "" FORCE)
102
+
-set(ZSTD_LIBRARY ${CMAKE_CURRENT_BINARY_DIR}/_deps/zstd-build/lib/libzstd.a CACHE FILEPATH "" FORCE)
105
+
-set(NGHTTP2_VERSION "1.65.0")
106
+
-FetchContent_Declare(nghttp2
107
+
- GIT_REPOSITORY https://github.com/nghttp2/nghttp2.git
108
+
- GIT_TAG v${NGHTTP2_VERSION}
109
+
- ${USE_OVERRIDE_FIND_PACKAGE}
111
+
-set(BUILD_EXAMPLES OFF)
112
+
-set(ENABLE_LIB_ONLY ON)
113
+
-set(ENABLE_FAILMALLOC OFF)
114
+
-FetchContent_GetProperties(nghttp2)
115
+
-if(NOT nghttp2_POPULATED)
116
+
- FetchContent_Populate(nghttp2)
117
+
- add_subdirectory(${nghttp2_SOURCE_DIR} ${nghttp2_BINARY_DIR} EXCLUDE_FROM_ALL)
119
+
-unset(ENABLE_LIB_ONLY)
120
+
-unset(ENABLE_FAILMALLOC)
121
+
-unset(BUILD_EXAMPLES)
122
+
-set(NGHTTP2_LIBRARIES nghttp2_static CACHE FILEPATH "" FORCE)
123
+
-set(NGHTTP2_LIBRARY nghttp2_static CACHE FILEPATH "" FORCE)
124
+
-set(NGHTTP2_INCLUDE_DIR ${nghttp2_SOURCE_DIR}/lib CACHE PATH "" FORCE)
125
+
-set(NGHTTP2_INCLUDE_DIRS ${nghttp2_SOURCE_DIR}/lib CACHE PATH "" FORCE)
126
+
-set(NGHTTP2_FOUND true CACHE BOOL "" FORCE)
130
+
-set(ZLIB_VERSION "1.4.1.1")
131
+
-set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
132
+
-set(ZLIB_BUILD_SHARED OFF CACHE BOOL "" FORCE)
133
+
-set(ZLIB_BUILD_STATIC ON CACHE BOOL "" FORCE)
134
+
-set(ZLIB_BUILD_TESTS OFF CACHE BOOL "" FORCE)
135
+
-set(SKIP_INSTALL_ALL ON CACHE BOOL "" FORCE)
136
+
-FetchContent_Declare(zlib
137
+
- GIT_REPOSITORY https://github.com/madler/zlib.git
138
+
- GIT_TAG 5a82f71ed1dfc0bec044d9702463dbdf84ea3b71 # v1.4.1.1, as of 27/05/2025
139
+
- ${USE_OVERRIDE_FIND_PACKAGE}
141
+
-FetchContent_GetProperties(zlib)
142
+
-if(NOT zlib_POPULATED)
143
+
- FetchContent_Populate(zlib)
144
+
- add_subdirectory(${zlib_SOURCE_DIR} ${zlib_BINARY_DIR} EXCLUDE_FROM_ALL)
146
+
-unset(ZLIB_BUILD_EXAMPLES)
147
+
-unset(ZLIB_BUILD_SHARED)
148
+
-unset(ZLIB_BUILD_STATIC)
149
+
-unset(ZLIB_BUILD_TESTS)
150
+
-unset(SKIP_INSTALL_ALL)
151
+
-# Set zlib variables that libarchive's CMake will use
152
+
-set(ZLIB_USE_STATIC_LIBS ON CACHE BOOL "" FORCE) # This is to help FindZlib.cmake find the static library over the shared one
153
+
-set(ZLIB_ROOT ${zlib_SOURCE_DIR} CACHE PATH "" FORCE)
155
+
-# On Windows with MinGW, zlib builds with .a extension, not .lib
156
+
-# Set the correct library path before find_package
157
+
-if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
158
+
- set(ZLIB_LIBRARY ${zlib_BINARY_DIR}/libzlibstatic.a CACHE FILEPATH "" FORCE)
159
+
- set(ZLIB_LIBRARIES ${zlib_BINARY_DIR}/libzlibstatic.a CACHE STRING "" FORCE)
161
+
- set(ZLIB_LIBRARY ${zlib_BINARY_DIR}/libz.a CACHE FILEPATH "" FORCE)
162
+
- set(ZLIB_LIBRARIES ${zlib_BINARY_DIR}/libz.a CACHE STRING "" FORCE)
165
+
-# Since we're building zlib ourselves with EXCLUDE_FROM_ALL, we don't need find_package
166
+
-# Instead, we'll create the ZLIB::ZLIB target manually and set all required variables
167
+
-set(ZLIB_INCLUDE_DIR ${zlib_SOURCE_DIR} CACHE PATH "" FORCE)
168
+
-set(ZLIB_INCLUDE_DIRS ${zlib_SOURCE_DIR} CACHE PATH "" FORCE)
170
+
-# Create ZLIB::ZLIB target manually since we're not using find_package
171
+
-# Set zlib variables that other packages expect
172
+
-set(ZLIB_FOUND TRUE CACHE BOOL "" FORCE)
173
+
-add_library(ZLIB::ZLIB STATIC IMPORTED)
174
+
-if (WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
175
+
- set_target_properties(ZLIB::ZLIB PROPERTIES
176
+
- IMPORTED_LOCATION "${zlib_BINARY_DIR}/libzlibstatic.a"
177
+
- INTERFACE_INCLUDE_DIRECTORIES "${zlib_SOURCE_DIR};${zlib_BINARY_DIR}"
179
+
- add_dependencies(ZLIB::ZLIB zlibstatic)
181
+
- set_target_properties(ZLIB::ZLIB PROPERTIES
182
+
- IMPORTED_LOCATION "${zlib_BINARY_DIR}/libz.a"
183
+
- INTERFACE_INCLUDE_DIRECTORIES "${zlib_SOURCE_DIR};${zlib_BINARY_DIR}"
184
+
+if(ENABLE_VENDORING)
185
+
+ # Bundled liblzma
186
+
+ set(XZ_MICROLZMA_DECODER OFF)
187
+
+ set(XZ_MICROLZMA_ENCODER OFF)
188
+
+ set(XZ_LZIP_DECODER OFF)
189
+
+ set(XZ_ENABLE_SANDBOX OFF)
190
+
+ set(XZ_BUILD_SHARED_LIBS OFF)
191
+
+ set(XZ_ENABLE_DOXYGEN OFF)
197
+
- add_dependencies(ZLIB::ZLIB zlibstatic)
201
+
-message(STATUS "ZLIB_LIBRARY set to: ${ZLIB_LIBRARY}")
202
+
-message(STATUS "ZLIB_LIBRARIES set to: ${ZLIB_LIBRARIES}")
203
+
-message(STATUS "ZLIB_INCLUDE_DIRS set to: ${ZLIB_INCLUDE_DIRS}")
205
+
-# Bundled libarchive
207
+
-set(ENABLE_WERROR OFF CACHE BOOL "")
208
+
-set(ENABLE_INSTALL OFF CACHE BOOL "")
209
+
-set(ENABLE_TEST OFF CACHE BOOL "")
210
+
-set(ENABLE_CNG OFF CACHE BOOL "")
211
+
-set(ENABLE_MBEDTLS OFF CACHE BOOL "")
212
+
-set(ENABLE_NETTLE OFF CACHE BOOL "")
213
+
-set(ENABLE_OPENSSL OFF CACHE BOOL "")
214
+
-# Configure libarchive with explicit zlib support
215
+
-set(ENABLE_ZLIB ON CACHE BOOL "")
216
+
-set(ENABLE_BZip2 OFF CACHE BOOL "")
217
+
-set(ENABLE_LZ4 OFF CACHE BOOL "")
218
+
-set(ENABLE_LZO OFF CACHE BOOL "")
219
+
-set(ENABLE_LIBB2 OFF CACHE BOOL "")
220
+
-set(ENABLE_LIBXML2 OFF CACHE BOOL "")
221
+
-set(ENABLE_EXPAT OFF CACHE BOOL "")
222
+
-set(ENABLE_PCREPOSIX OFF CACHE BOOL "")
223
+
-set(ENABLE_PCRE2POSIX OFF CACHE BOOL "")
224
+
-set(ENABLE_LIBGCC OFF CACHE BOOL "")
225
+
-set(ENABLE_TAR OFF CACHE BOOL "")
226
+
-set(ENABLE_CPIO OFF CACHE BOOL "")
227
+
-set(ENABLE_CAT OFF CACHE BOOL "")
228
+
-set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
229
+
-set(ARCHIVE_BUILD_STATIC_LIBS ON CACHE BOOL "")
230
+
-set(ARCHIVE_BUILD_EXAMPLES OFF CACHE BOOL "")
231
+
-set(ENABLE_ZSTD ON CACHE BOOL "")
232
+
-set(POSIX_REGEX_LIB "libc" CACHE STRING "" FORCE)
233
+
-set(LIBARCHIVE_VERSION "3.8.0")
235
+
-# Create a patch script to fix ZSTD detection in libarchive
236
+
-set(LIBARCHIVE_PATCH_FILE "${CMAKE_CURRENT_BINARY_DIR}/libarchive_zstd_patch.cmake")
237
+
-file(WRITE ${LIBARCHIVE_PATCH_FILE} "
238
+
-# Read the original CMakeLists.txt
239
+
-file(READ \"\${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\" CONTENT)
241
+
-# Find the start and end of the ZSTD section
242
+
-string(FIND \"\${CONTENT}\" \"IF(ZSTD_FOUND)\" ZSTD_START)
243
+
-string(FIND \"\${CONTENT}\" \"MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)\" ZSTD_END)
245
+
-if(ZSTD_START GREATER -1 AND ZSTD_END GREATER -1)
246
+
- # Calculate positions
247
+
- math(EXPR ZSTD_END \"\${ZSTD_END} + 40\") # Length of \"MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)\"
249
+
- # Extract parts before and after the ZSTD section
250
+
- string(SUBSTRING \"\${CONTENT}\" 0 \${ZSTD_START} BEFORE_ZSTD)
251
+
- string(SUBSTRING \"\${CONTENT}\" \${ZSTD_END} -1 AFTER_ZSTD)
253
+
- # Create the new ZSTD section
254
+
- set(NEW_ZSTD_SECTION \"IF(ZSTD_FOUND)
255
+
- SET(HAVE_ZSTD_H 1)
256
+
- INCLUDE_DIRECTORIES(\\\${ZSTD_INCLUDE_DIR})
257
+
- LIST(APPEND ADDITIONAL_LIBS \\\${ZSTD_LIBRARY})
259
+
- # Check if ZSTD variables were provided externally (indicating static build)
260
+
- get_property(ZSTD_LIB_IS_CACHE CACHE ZSTD_LIBRARY PROPERTY TYPE)
261
+
- get_property(ZSTD_INC_IS_CACHE CACHE ZSTD_INCLUDE_DIR PROPERTY TYPE)
262
+
- if(ZSTD_LIB_IS_CACHE AND ZSTD_INC_IS_CACHE)
263
+
- # Skip function checks for static builds and assume all functions are available
264
+
- message(STATUS \\\"Using provided ZSTD library: \\\${ZSTD_LIBRARY}\\\")
265
+
- SET(HAVE_LIBZSTD 1)
266
+
- SET(HAVE_ZSTD_compressStream 1)
267
+
- SET(HAVE_ZSTD_minCLevel 1)
269
+
- # Original function checks for dynamic builds
270
+
- CMAKE_PUSH_CHECK_STATE()
271
+
- SET(CMAKE_REQUIRED_LIBRARIES \\\${ZSTD_LIBRARY})
272
+
- SET(CMAKE_REQUIRED_INCLUDES \\\${ZSTD_INCLUDE_DIR})
273
+
- CHECK_FUNCTION_EXISTS(ZSTD_decompressStream HAVE_LIBZSTD)
274
+
- CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_ZSTD_compressStream)
275
+
- CHECK_FUNCTION_EXISTS(ZSTD_minCLevel HAVE_ZSTD_minCLevel)
276
+
- CMAKE_POP_CHECK_STATE()
279
+
-MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)\")
281
+
- # Combine the parts
282
+
- set(NEW_CONTENT \"\${BEFORE_ZSTD}\${NEW_ZSTD_SECTION}\")
284
+
- # Write the modified content back
285
+
- file(WRITE \"\${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt\" \"\${NEW_CONTENT}\${AFTER_ZSTD}\")
286
+
- message(STATUS \"Patched libarchive CMakeLists.txt for static ZSTD support\")
288
+
- message(WARNING \"Could not find ZSTD section in libarchive CMakeLists.txt\")
292
+
-FetchContent_Declare(libarchive
293
+
- GIT_REPOSITORY https://github.com/libarchive/libarchive.git
294
+
- GIT_TAG v${LIBARCHIVE_VERSION}
295
+
- PATCH_COMMAND ${CMAKE_COMMAND} -P ${LIBARCHIVE_PATCH_FILE}
296
+
- ${USE_OVERRIDE_FIND_PACKAGE}
298
+
-FetchContent_GetProperties(libarchive)
299
+
-if(NOT libarchive_POPULATED)
300
+
- FetchContent_Populate(libarchive)
301
+
- add_subdirectory(${libarchive_SOURCE_DIR} ${libarchive_BINARY_DIR} EXCLUDE_FROM_ALL)
304
+
-# Ensure libarchive is built after zlib
305
+
-if (TARGET archive_static AND TARGET ZLIB::ZLIB)
306
+
- add_dependencies(archive_static ZLIB::ZLIB)
309
+
-unset(POSIX_REGEX_LIB)
310
+
-unset(ENABLE_WERROR)
311
+
-unset(ENABLE_INSTALL)
312
+
-unset(ENABLE_TEST)
314
+
-unset(ENABLE_MBEDTLS)
315
+
-unset(ENABLE_NETTLE)
316
+
-unset(ENABLE_OPENSSL)
317
+
-unset(ENABLE_ZLIB)
318
+
-unset(ENABLE_BZip2)
321
+
-unset(ENABLE_LIBB2)
322
+
-unset(ENABLE_LIBXML2)
323
+
-unset(ENABLE_EXPAT)
324
+
-unset(ENABLE_PCREPOSIX)
325
+
-unset(ENABLE_PCRE2POSIX)
326
+
-unset(ENABLE_LIBGCC)
328
+
-unset(ENABLE_CPIO)
330
+
-unset(ARCHIVE_BUILD_SHARED_LIBS)
331
+
-unset(ENABLE_ZSTD)
332
+
-set(LibArchive_FOUND true CACHE BOOL "" FORCE)
333
+
-set(LibArchive_LIBRARIES archive_static CACHE FILEPATH "" FORCE)
334
+
-set(LibArchive_INCLUDE_DIR ${libarchive_SOURCE_DIR}/libarchive CACHE PATH "" FORCE)
335
+
-set(LibArchive_INCLUDE_DIRS ${libarchive_SOURCE_DIR}/libarchive CACHE PATH "" FORCE)
338
+
-set(CURL_VERSION "8.13.0")
339
+
-string(REPLACE "." "_" CURL_TAG ${CURL_VERSION})
340
+
-FetchContent_Declare(curl
341
+
- GIT_REPOSITORY https://github.com/curl/curl.git
342
+
- GIT_TAG curl-${CURL_TAG}
343
+
- ${USE_OVERRIDE_FIND_PACKAGE}
345
+
-set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE)
346
+
-set(BUILD_LIBCURL_DOCS OFF CACHE BOOL "" FORCE)
347
+
-set(BUILD_MISC_DOCS OFF CACHE BOOL "" FORCE)
348
+
-set(ENABLE_CURL_MANUAL OFF CACHE BOOL "" FORCE)
349
+
-set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
350
+
-set(CURL_USE_LIBPSL OFF CACHE BOOL "" FORCE)
351
+
-set(CURL_USE_LIBSSH2 OFF CACHE BOOL "" FORCE)
352
+
-set(CURL_DISABLE_ALTSVC ON CACHE BOOL "" FORCE)
353
+
-set(CURL_DISABLE_KERBEROS_AUTH ON CACHE BOOL "" FORCE)
354
+
-set(CURL_DISABLE_DICT ON CACHE BOOL "" FORCE)
355
+
-set(CURL_DISABLE_DISABLE_FORM_API ON CACHE BOOL "" FORCE)
356
+
-set(CURL_DISABLE_FTP ON CACHE BOOL "" FORCE)
357
+
-set(CURL_DISABLE_GOPHER ON CACHE BOOL "" FORCE)
358
+
-set(CURL_DISABLE_IMAP ON CACHE BOOL "" FORCE)
359
+
-set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
360
+
-set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE)
361
+
-set(CURL_DISABLE_MQTT ON CACHE BOOL "" FORCE)
362
+
-set(CURL_DISABLE_NETRC ON CACHE BOOL "" FORCE)
363
+
-set(CURL_DISABLE_POP3 ON CACHE BOOL "" FORCE)
364
+
-set(CURL_DISABLE_RTSP ON CACHE BOOL "" FORCE)
365
+
-set(CURL_DISABLE_SMTP ON CACHE BOOL "" FORCE)
366
+
-set(CURL_DISABLE_TELNET ON CACHE BOOL "" FORCE)
367
+
-set(CURL_DISABLE_TFTP ON CACHE BOOL "" FORCE)
369
+
-set(CURL_ENABLE_EXPORT_TARGET OFF CACHE BOOL "" FORCE)
370
+
-set(CURL_DISABLE_INSTALL ON)
372
+
- # TODO: SecureTransport is a deprecated API in macOS, supporting
373
+
- # only up to TLS v1.2. cURL has not implemented the replacement,
374
+
- # Network.framework, and so we will need to select an alternative.
375
+
- # Best recommendation: Libressl, as used by Apple in the curl binary
377
+
- set(CURL_USE_SECTRANSP ON)
378
+
- set(CURL_DEFAULT_SSL_BACKEND "secure-transport")
379
+
- set(USE_APPLE_IDN ON)
382
+
- set(CURL_USE_SCHANNEL ON)
383
+
- set(CURL_DEFAULT_SSL_BACKEND "schannel")
385
+
- set(CURL_USE_GNUTLS ON)
386
+
- set(CURL_DEFAULT_SSL_BACKEND "gnutls")
390
+
-FetchContent_GetProperties(curl)
391
+
-if(NOT curl_POPULATED)
392
+
- FetchContent_Populate(curl)
393
+
- add_subdirectory(${curl_SOURCE_DIR} ${curl_BINARY_DIR} EXCLUDE_FROM_ALL)
394
+
+ set(XZ_ENCODERS "")
395
+
+ set(CREATE_LZMA_SYMLINKS OFF)
396
+
+ set(CREATE_XZ_SYMLINKS OFF)
397
+
+ add_subdirectory(dependencies/xz-5.8.1)
398
+
+ set(LIBLZMA_FOUND true)
399
+
+ set(LIBLZMA_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/xz-5.8.1/src/liblzma/api FORCE)
400
+
+ set(LIBLZMA_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/xz-5.8.1/src/liblzma/api FORCE)
401
+
+ set(LIBLZMA_LIBRARY liblzma)
402
+
+ set(LIBLZMA_LIBRARIES liblzma)
405
+
+ set(ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "" FORCE)
406
+
+ set(ZSTD_BUILD_SHARED OFF CACHE BOOL "" FORCE)
407
+
+ set(ZSTD_BUILD_TESTS OFF CACHE BOOL "" FORCE)
408
+
+ set(ZSTD_BUILD_DICTBUILDER OFF CACHE BOOL "" FORCE)
409
+
+ add_subdirectory(dependencies/zstd-1.5.7/build/cmake)
410
+
+ set(Zstd_FOUND true)
411
+
+ set(ZSTD_FOUND true)
412
+
+ set(Zstd_VERSION "1.5.7")
413
+
+ set(ZSTD_VERSION "1.5.7")
414
+
+ set(Zstd_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib)
415
+
+ set(ZSTD_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib)
416
+
+ set(Zstd_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib)
417
+
+ set(ZSTD_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/zstd-1.5.7/lib)
418
+
+ set(Zstd_LIBRARIES libzstd_static)
419
+
+ set(ZSTD_LIBRARIES libzstd_static)
420
+
+ set(ZSTD_LIBRARY libzstd_static)
423
+
+ set(ZLIB_BUILD_EXAMPLES OFF)
424
+
+ set(SKIP_INSTALL_ALL ON)
425
+
+ add_subdirectory(dependencies/zlib-1.4.1.1)
426
+
+ set(ZLIB_FOUND TRUE)
427
+
+ set(ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/zlib-1.4.1.1 CACHE PATH "zlib include dir")
428
+
+ set(ZLIB_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/zlib-1.4.1.1 CACHE PATH "zlib include dir")
429
+
+ set(ZLIB_LIBRARY zlibstatic)
430
+
+ set(ZLIB_LIBRARIES zlibstatic)
432
+
+ # Bundled libarchive
433
+
+ set(ARCHIVE_ENABLE_WERROR OFF CACHE BOOL "")
434
+
+ set(ARCHIVE_ENABLE_INSTALL OFF CACHE BOOL "")
435
+
+ set(ARCHIVE_ENABLE_TEST OFF CACHE BOOL "")
436
+
+ set(ARCHIVE_ENABLE_CNG OFF CACHE BOOL "")
437
+
+ set(ARCHIVE_ENABLE_MBEDTLS OFF CACHE BOOL "")
438
+
+ set(ARCHIVE_ENABLE_NETTLE OFF CACHE BOOL "")
439
+
+ set(ARCHIVE_ENABLE_OPENSSL OFF CACHE BOOL "")
440
+
+ set(ARCHIVE_ENABLE_BZip2 OFF CACHE BOOL "")
441
+
+ set(ARCHIVE_ENABLE_LZ4 OFF CACHE BOOL "")
442
+
+ set(ARCHIVE_ENABLE_LZO OFF CACHE BOOL "")
443
+
+ set(ARCHIVE_ENABLE_LIBB2 OFF CACHE BOOL "")
444
+
+ set(ARCHIVE_ENABLE_LIBXML2 OFF CACHE BOOL "")
445
+
+ set(ARCHIVE_ENABLE_EXPAT OFF CACHE BOOL "")
446
+
+ set(ARCHIVE_ENABLE_PCREPOSIX OFF CACHE BOOL "")
447
+
+ set(ARCHIVE_ENABLE_PCRE2POSIX OFF CACHE BOOL "")
448
+
+ set(ARCHIVE_ENABLE_LIBGCC OFF CACHE BOOL "")
449
+
+ set(ARCHIVE_ENABLE_TAR OFF CACHE BOOL "")
450
+
+ set(ARCHIVE_ENABLE_CPIO OFF CACHE BOOL "")
451
+
+ set(ARCHIVE_ENABLE_CAT OFF CACHE BOOL "")
452
+
+ set(ARCHIVE_BUILD_SHARED_LIBS OFF CACHE BOOL "")
453
+
+ add_subdirectory(dependencies/libarchive-3.7.7)
454
+
+ set(LibArchive_FOUND true)
455
+
+ set(LibArchive_LIBRARIES archive_static)
456
+
+ set(LibArchive_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/libarchive-3.7.8/libarchive)
458
+
+ # Bundled libcurl
459
+
+ set(CMAKE_CURL_INCLUDES)
460
+
+ set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE)
461
+
+ set(BUILD_LIBCURL_DOCS OFF CACHE BOOL "" FORCE)
462
+
+ set(ENABLE_CURL_MANUAL OFF CACHE BOOL "" FORCE)
463
+
+ set(CURL_USE_LIBPSL OFF)
464
+
+ set(CURL_USE_LIBSSH2 OFF)
465
+
+ set(CURL_DISABLE_ALTSVC ON)
466
+
+ set(CURL_DISABLE_KERBEROS_AUTH ON)
467
+
+ set(CURL_DISABLE_DICT ON)
468
+
+ set(CURL_DISABLE_DISABLE_FORM_API ON)
469
+
+ set(CURL_DISABLE_FTP ON)
470
+
+ set(CURL_DISABLE_GOPHER ON)
471
+
+ set(CURL_DISABLE_IMAP ON)
472
+
+ set(CURL_DISABLE_LDAP ON)
473
+
+ set(CURL_DISABLE_LDAPS ON)
474
+
+ set(CURL_DISABLE_MQTT ON)
475
+
+ set(CURL_DISABLE_NETRC ON)
476
+
+ set(CURL_DISABLE_POP3 ON)
477
+
+ set(CURL_DISABLE_RTSP ON)
478
+
+ set(CURL_DISABLE_SMTP ON)
479
+
+ set(CURL_DISABLE_TELNET ON)
480
+
+ set(CURL_DISABLE_TFTP ON)
481
+
+ set(CURL_ZSTD ON)
482
+
+ set(CURL_ENABLE_EXPORT_TARGET OFF CACHE BOOL "" FORCE)
483
+
+ set(CURL_DISABLE_INSTALL ON)
485
+
+ # TODO: SecureTransport is a deprecated API in macOS, supporting
486
+
+ # only up to TLS v1.2. cURL has not implemented the replacement,
487
+
+ # Network.framework, and so we will need to select an alternative.
488
+
+ # Best recommendation: Libressl, as used by Apple in the curl binary
490
+
+ set(CURL_USE_SECTRANSP ON)
491
+
+ set(CURL_DEFAULT_SSL_BACKEND "secure-transport")
492
+
+ set(USE_APPLE_IDN ON)
495
+
+ set(CURL_USE_SCHANNEL ON)
496
+
+ set(CURL_DEFAULT_SSL_BACKEND "schannel")
498
+
+ set(CURL_USE_GNUTLS ON)
499
+
+ set(CURL_DEFAULT_SSL_BACKEND "gnutls")
503
+
+ add_subdirectory(dependencies/curl-8.13.0)
504
+
+ set(CURL_FOUND true)
505
+
+ set(CURL_LIBRARIES libcurl_static)
506
+
+ set(CURL_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/dependencies/curl-8.13.0/include)
507
+
+ set(CURL_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/dependencies/curl-8.13.0/include)
509
+
+elseif (NOT ENABLE_VENDORING AND UNIX)
510
+
+ # Find the libraries that were subject to vendoring in the system instead,
511
+
+ # To keep the possibility of delivery via Linux distro packages
512
+
+ find_package(ZLIB)
514
+
+ set(EXTRALIBS ${EXTRALIBS} ZLIB::ZLIB)
516
+
+ find_package(LibLZMA)
517
+
+ if(LIBLZMA_FOUND)
518
+
+ set(EXTRALIBS ${EXTRALIBS} LibLZMA::LibLZMA)
520
+
+ find_package(CURL 8.13.0 REQUIRED)
521
+
+ find_package(LibArchive 3.7.8 REQUIRED)
524
+
-unset(BUILD_CURL_EXE)
525
+
-unset(BUILD_LIBCURL_DOCS)
526
+
-unset(BUILD_MISC_DOCS)
527
+
-unset(ENABLE_CURL_MANUAL)
528
+
-unset(BUILD_EXAMPLES)
529
+
-unset(CURL_USE_LIBPSL)
530
+
-unset(CURL_USE_LIBSSH2)
531
+
-unset(CURL_DISABLE_ALTSVC)
532
+
-unset(CURL_DISABLE_KERBEROS_AUTH)
533
+
-unset(CURL_DISABLE_DICT)
534
+
-unset(CURL_DISABLE_DISABLE_FORM_API)
535
+
-unset(CURL_DISABLE_FTP)
536
+
-unset(CURL_DISABLE_GOPHER)
537
+
-unset(CURL_DISABLE_IMAP)
538
+
-unset(CURL_DISABLE_LDAP)
539
+
-unset(CURL_DISABLE_LDAPS)
540
+
-unset(CURL_DISABLE_MQTT)
541
+
-unset(CURL_DISABLE_NETRC)
542
+
-unset(CURL_DISABLE_POP3)
543
+
-unset(CURL_DISABLE_RTSP)
544
+
-unset(CURL_DISABLE_SMTP)
545
+
-unset(CURL_DISABLE_TELNET)
546
+
-unset(CURL_DISABLE_TFTP)
548
+
-unset(CURL_ENABLE_EXPORT_TARGET)
549
+
-unset(CURL_DISABLE_INSTALL)
550
+
-unset(CURL_USE_SECTRANSP)
551
+
-unset(CURL_DEFAULT_SSL_BACKEND)
552
+
-unset(USE_APPLE_IDN)
553
+
-unset(CURL_USE_SCHANNEL)
554
+
-unset(CURL_USE_GNUTLS)
556
+
-set(CURL_FOUND true CACHE BOOL "" FORCE)
557
+
-set(CURL_LIBRARIES libcurl_static CACHE FILEPATH "" FORCE)
558
+
-set(CURL_INCLUDE_DIR ${curl_SOURCE_DIR}/include CACHE PATH "" FORCE)
559
+
-set(CURL_INCLUDE_DIRS ${curl_SOURCE_DIR}/include CACHE PATH "" FORCE)
561
+
# Adding headers explicity so they are displayed in Qt Creator
562
+
set(HEADERS config.h imagewriter.h networkaccessmanagerfactory.h nan.h drivelistitem.h drivelistmodel.h drivelistmodelpollthread.h driveformatthread.h powersaveblocker.h cli.h
563
+
devicewrapper.h devicewrapperblockcacheentry.h devicewrapperpartition.h devicewrapperstructs.h devicewrapperfatpartition.h wlancredentials.h
564
+
@@ -928,11 +675,6 @@ else()
566
+
message(FATAL_ERROR "Unable to locate lsblk (used for disk enumeration)")
569
+
- execute_process(COMMAND "${LSBLK}" "--json" OUTPUT_QUIET RESULT_VARIABLE ret)
570
+
- if (ret EQUAL "1")
571
+
- message(FATAL_ERROR "util-linux package too old. lsblk does not support --json (used for disk enumeration)")
575
+
install(TARGETS ${PROJECT_NAME} DESTINATION bin)