Skip to content

Commit 15ab408

Browse files
committed
[cmake/libacquire_helpers.cmake] Remove hacky miniz / zip DL in favour of vcpkg ; [vcpkg.json] Depend on this new one and send PR to vcpkg ; [*.h,CMakeLists.txt] Various improvements to try and get build to work again
1 parent 851acc2 commit 15ab408

File tree

9 files changed

+96
-153
lines changed

9 files changed

+96
-153
lines changed

acquire/acquire_checksums.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ extern LIBACQUIRE_EXPORT enum Checksum string2checksum(const char *);
8383
extern LIBACQUIRE_EXPORT bool (*get_checksum_function(enum Checksum checksum))(
8484
const char *, const char *);
8585

86-
#if defined(LIBACQUIRE_IMPLEMENTATION) && !defined(CHECKSUM_IMPL)
87-
#define CHECKSUM_IMPL
86+
#if defined(LIBACQUIRE_IMPLEMENTATION) && defined(CHECKSUM_IMPL)
8887

8988
enum Checksum string2checksum(const char *const s) {
9089
if (s == NULL)
@@ -114,7 +113,7 @@ bool (*get_checksum_function(enum Checksum checksum))(const char *,
114113
}
115114
}
116115

117-
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && !defined(CHECKSUM_IMPL) */
116+
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && defined(CHECKSUM_IMPL) */
118117

119118
#ifdef __cplusplus
120119
}

acquire/acquire_crc32c.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,7 @@ static const unsigned int crctable[256] = {
9393
};
9494

9595
#if defined(LIBACQUIRE_IMPLEMENTATION) && \
96-
!defined(LIBACQUIRE_ACQUIRE_CRC32C_IMPL)
97-
#define LIBACQUIRE_ACQUIRE_CRC32C_IMPL
96+
defined(LIBACQUIRE_ACQUIRE_CRC32C_IMPL)
9897

9998
unsigned int crc32_algo(unsigned int iv, unsigned char *buf, long long len) {
10099
unsigned int crc = iv ^ ~0;
@@ -144,7 +143,7 @@ bool crc32c(const char *const filename, const char *const hash) {
144143
}
145144

146145
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && \
147-
!defined(LIBACQUIRE_ACQUIRE_CRC32C_IMPL) */
146+
defined(LIBACQUIRE_ACQUIRE_CRC32C_IMPL) */
148147

149148
#ifdef __cplusplus
150149
}

acquire/acquire_net_common.h

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* Networking helper API
33
*
44
* Provides minimal networking-related helpers used throughout libacquire.
5+
* Does NOT implement fileutils functions (moved to acquire_fileutils.h).
56
* */
67

78
#ifndef LIBACQUIRE_ACQUIRE_NET_COMMON_H
@@ -30,6 +31,56 @@ extern LIBACQUIRE_EXPORT bool is_downloaded(const char *url,
3031
const char *hash,
3132
const char *target_location);
3233

34+
#include "acquire_common_defs.h"
35+
#include "acquire_config.h"
36+
37+
#ifdef DOWNLOAD_DIR_IMPL
38+
const char *get_download_dir(void) { return ".downloads"; }
39+
#endif /* DOWNLOAD_DIR_IMPL */
40+
41+
#if defined(LIBACQUIRE_IMPLEMENTATION) && \
42+
defined(LIBACQUIRE_ACQUIRE_NET_COMMON_IMPL)
43+
/**
44+
* Implementation of is_downloaded.
45+
* Uses fileutils functions for existence checks and checksum functions for
46+
* verification.
47+
*/
48+
bool is_downloaded(const char *url, enum Checksum checksum, const char *hash,
49+
const char *target_location) {
50+
char full_local_fname[NAME_MAX + 1];
51+
const char *filename = is_url(url) ? get_path_from_url(url) : url;
52+
53+
if (target_location == NULL) {
54+
target_location = get_download_dir();
55+
}
56+
57+
if (filename == NULL || strlen(filename) == 0 ||
58+
!is_directory(target_location)) {
59+
return false;
60+
}
61+
62+
snprintf(full_local_fname, NAME_MAX + 1, "%s" PATH_SEP "%s", target_location,
63+
filename);
64+
65+
if (!is_file(full_local_fname)) {
66+
return false;
67+
}
68+
69+
switch (checksum) {
70+
case LIBACQUIRE_SHA256:
71+
return sha256(full_local_fname, hash);
72+
case LIBACQUIRE_SHA512:
73+
/* TODO: can add sha512 once implemented and enabled */
74+
return false;
75+
case LIBACQUIRE_UNSUPPORTED_CHECKSUM:
76+
default:
77+
return false;
78+
}
79+
}
80+
81+
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && \
82+
defined(LIBACQUIRE_ACQUIRE_NET_COMMON_IMPL) */
83+
3384
#ifdef __cplusplus
3485
}
3586
#endif /* __cplusplus */

acquire/cli/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ target_link_libraries(
5858
"${PROJECT_NAME}"
5959
)
6060

61+
include("${CMAKE_SOURCE_DIR}/cmake/FindExtractLib.cmake")
6162
set_extract_lib()
6263
if (WIN32 AND (NOT DEFINED EXTRACT_LIB OR EXTRACT_LIB STREQUAL "" OR EXTRACT_LIB STREQUAL "WINCOMPRESSAPI"))
6364
set(LIBACQUIRE_USE_MINIZ 1)

acquire/tests/CMakeLists.txt

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,12 @@ foreach (EXEC_NAME ${_targets})
130130
#"${CHECKSUM_LIBRARIES}"
131131
)
132132

133+
if (LIBACQUIRE_USE_MINIZ)
134+
find_package(zip CONFIG REQUIRED)
135+
target_link_libraries("${EXEC_NAME}" PRIVATE "zip")
136+
message(STATUS "LINKING zip here")
137+
endif (LIBACQUIRE_USE_MINIZ)
138+
133139
target_include_directories(
134140
"${EXEC_NAME}"
135141
PRIVATE
@@ -139,19 +145,6 @@ foreach (EXEC_NAME ${_targets})
139145
test_wrapper()
140146
endforeach (EXEC_NAME ${_targets})
141147

142-
if (LIBACQUIRE_USE_MINIZ)
143-
set(Header_Files_Zip
144-
"${PROJECT_BINARY_DIR}/third_party/${EXTRACT_LIB}/miniz.h"
145-
"${PROJECT_BINARY_DIR}/third_party/${EXTRACT_LIB}/zip.h")
146-
source_group("Header Files zip_miniz" FILES "${Header_Files_Zip}")
147-
148-
set(Source_Files_Zip
149-
"${PROJECT_BINARY_DIR}/third_party/${EXTRACT_LIB}/zip.c")
150-
source_group("Source Files zip_miniz" FILES "${Source_Files_Zip}")
151-
152-
add_library("${PROJECT_NAME}_zip_miniz" "${Header_Files_Zip}" "${Source_Files_Zip}")
153-
endif (LIBACQUIRE_USE_MINIZ)
154-
155148
# Extraction archive tests
156149
foreach (ARCHIVE_LIB ${_archives})
157150
set(EXEC_NAME "test_extract_${ARCHIVE_LIB}")
@@ -178,9 +171,10 @@ foreach (ARCHIVE_LIB ${_archives})
178171
if (LIBACQUIRE_USE_MINIZ)
179172
set_source_files_properties("test_extract.c"
180173
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION=1;LIBACQUIRE_USE_MINIZ=1")
181-
target_include_directories("${PROJECT_NAME}_zip_miniz" PUBLIC
182-
"${PROJECT_BINARY_DIR}/third_party/${EXTRACT_LIB}")
183-
target_link_libraries("${EXEC_NAME}" PRIVATE "${PROJECT_NAME}_zip_miniz")
174+
175+
find_package(zip CONFIG REQUIRED)
176+
target_link_libraries("${EXEC_NAME}" PRIVATE "zip")
177+
message(STATUS "LINKING zip")
184178
elseif (LIBACQUIRE_USE_LIBARCHIVE)
185179
set_source_files_properties("test_extract.c"
186180
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION=1;LIBACQUIRE_USE_LIBARCHIVE=1")

cmake/FindExtractLib.cmake

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
function(set_extract_lib)
2+
if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT DEFINED LIBACQUIRE_USE_ZLIB AND NOT DEFINED LIBACQUIRE_USE_LIBARCHIVE)
3+
set(LIBACQUIRE_USE_WINCOMPRESSAPI 1 PARENT_SCOPE)
4+
set(EXTRACT_LIB "WINCOMPRESSAPI" PARENT_SCOPE)
5+
list(APPEND _Header_Files "acquire_compressapi.h")
6+
elseif (DEFINED LIBACQUIRE_USE_LIBARCHIVE)
7+
set(EXTRACT_LIB "LIBARCHIVE" PARENT_SCOPE)
8+
list(APPEND _Header_Files "acquire_libarchive.h")
9+
include("${CMAKE_SOURCE_DIR}/cmake/FindLibArchiveCustom.cmake")
10+
set(EXTRACT_INCLUDE_DIRECTORIES "${LibArchive_INCLUDE_DIRS}" PARENT_SCOPE)
11+
list(APPEND LIBACQUIRE_LIBRARIES "${LibArchive_LIBRARIES}")
12+
elseif (DEFINED LIBACQUIRE_USE_ZLIB)
13+
set(LIBACQUIRE_USE_ZLIB 1 PARENT_SCOPE)
14+
set(EXTRACT_LIB "ZLIB" PARENT_SCOPE)
15+
list(APPEND _Header_Files "acquire_zlib.h")
16+
else ()
17+
set(LIBACQUIRE_USE_MINIZ 1 PARENT_SCOPE)
18+
set(EXTRACT_LIB "MINIZ" PARENT_SCOPE)
19+
list(APPEND _Header_Files "acquire_miniz.h")
20+
endif ()
21+
endfunction(set_extract_lib)

cmake/FindLibAcquire.cmake

Lines changed: 6 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -125,110 +125,7 @@ message(STATUS "crypt LIBACQUIRE_LIBRARIES = ${LIBACQUIRE_LIBRARIES}")
125125
# Compression libraries #
126126
#########################
127127

128-
macro(download_extract_miniz download_dir)
129-
set(MINIZ_VERSION "3.0.2")
130-
set(MINIZ_BASENAME "miniz-${MINIZ_VERSION}.zip")
131-
get_filename_component(MINIZ_BASENAME_NO_EXT "${MINIZ_BASENAME}" NAME_WLE)
132-
set(MINIZ_BASENAME_NO_EXT "${MINIZ_BASENAME_NO_EXT}" CACHE "STRING"
133-
"Basename extension free location of miniz zip archive")
134-
set(MINIZ_ZIP_FILE "${download_dir}/${MINIZ_BASENAME}" CACHE "FILEPATH" "Location of miniz zip archive")
135-
if (NOT EXISTS "${MINIZ_ZIP_FILE}")
136-
file(DOWNLOAD
137-
"https://github.com/richgel999/miniz/releases/download/${MINIZ_VERSION}/miniz-${MINIZ_VERSION}.zip"
138-
"${MINIZ_ZIP_FILE}"
139-
EXPECTED_HASH "SHA256=ada38db0b703a56d3dd6d57bf84a9c5d664921d870d8fea4db153979fb5332c5")
140-
file(ARCHIVE_EXTRACT INPUT "${MINIZ_ZIP_FILE}"
141-
DESTINATION "${download_dir}")
142-
endif (NOT EXISTS "${MINIZ_ZIP_FILE}")
143-
144-
if (NOT EXISTS "${download_dir}/zip.h")
145-
set(KUBA_ZIP_VER "d7a2252")
146-
file(DOWNLOAD
147-
"https://raw.githubusercontent.com/kuba--/zip/${KUBA_ZIP_VER}/src/zip.h"
148-
"${download_dir}/zip.h"
149-
EXPECTED_HASH "SHA256=3dda9a244fe05a8f003477a6e1dfb6844071d003773ab18a7708b860d8896506")
150-
151-
file(DOWNLOAD
152-
"https://raw.githubusercontent.com/SamuelMarks/zip/refs/heads/msvc-type-coercion/src/zip.c"
153-
"${download_dir}/zip.c"
154-
EXPECTED_HASH "SHA256=729701ab2f0ae291a920cee448afa06e2932f08468f27c3cfbcc45f283013688")
155-
156-
file(DOWNLOAD
157-
"https://raw.githubusercontent.com/kuba--/zip/${KUBA_ZIP_VER}/src/miniz.h"
158-
"${download_dir}/miniz.h"
159-
EXPECTED_HASH "SHA256=6f2b1d7d368fecadf21ddf330634dabb250e505834fe1b76394aa5834e6e0869")
160-
endif (NOT EXISTS "${download_dir}/zip.h")
161-
162-
file(TO_NATIVE_PATH "${MINIZ_ZIP_FILE}" MINIZ_ZIP_FILE)
163-
164-
if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT MSYS AND NOT CYGWIN)
165-
string(REPLACE "\\" "\\\\" MINIZ_ZIP_FILE "${MINIZ_ZIP_FILE}")
166-
endif (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT MSYS AND NOT CYGWIN)
167-
endmacro(download_extract_miniz download_dir)
168-
169-
function(download_unarchiver EXTRACT_LIB)
170-
###############################################################
171-
# Download and setup miniz, a modern zero-dependency zlib alt #
172-
###############################################################
173-
set(EXTRACT_LIB "miniz")
174-
set(EXTRACT_LIB "miniz" PARENT_SCOPE)
175-
176-
if (NOT TARGET "${EXTRACT_LIB}")
177-
set(DOWNLOAD_DIR "${PROJECT_BINARY_DIR}/third_party/${EXTRACT_LIB}")
178-
download_extract_miniz("${DOWNLOAD_DIR}")
179-
180-
set(Header_Files "${DOWNLOAD_DIR}/${EXTRACT_LIB}.h" "${DOWNLOAD_DIR}/zip.h")
181-
source_group("Header Files" FILES "${Header_Files}")
182-
183-
set(Source_Files "${DOWNLOAD_DIR}/zip.c")
184-
source_group("Source Files" FILES "${Source_Files}")
185-
186-
add_library("${EXTRACT_LIB}" "${Header_Files}" "${Source_Files}")
187-
188-
target_compile_features("${EXTRACT_LIB}" PRIVATE "c_std_${CMAKE_C_STANDARD}")
189-
190-
set(gcc_like "$<COMPILE_LANG_AND_ID:C,CXX,ARMClang,AppleClang,Clang,GNU,LCC>")
191-
set(msvc "$<COMPILE_LANG_AND_ID:C,CXX,MSVC>")
192-
target_compile_options(
193-
"${EXTRACT_LIB}"
194-
PRIVATE
195-
"$<${gcc_like}:$<BUILD_INTERFACE:-Wno-long-long>>"
196-
"$<${msvc}:$<BUILD_INTERFACE:-W3;-WX;-Zi>>"
197-
)
198-
target_compile_definitions(
199-
"${EXTRACT_LIB}"
200-
PRIVATE
201-
-D_CRT_SECURE_NO_WARNINGS
202-
)
203-
include(GNUInstallDirs)
204-
target_include_directories(
205-
"${EXTRACT_LIB}"
206-
PUBLIC
207-
"$<BUILD_INTERFACE:${DOWNLOAD_DIR}>"
208-
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
209-
)
210-
211-
set_target_properties(
212-
"${EXTRACT_LIB}"
213-
PROPERTIES
214-
LINKER_LANGUAGE
215-
C
216-
)
217-
218-
include(GNUInstallDirs)
219-
install(TARGETS "${EXTRACT_LIB}"
220-
EXPORT "${EXTRACT_LIB}Targets"
221-
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
222-
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
223-
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
224-
install(FILES ${Header_Files}
225-
TYPE "INCLUDE")
226-
install(EXPORT "${EXTRACT_LIB}Targets" DESTINATION "${CMAKE_INSTALL_DATADIR}/${EXTRACT_LIB}")
227-
endif (NOT TARGET "${EXTRACT_LIB}")
228-
endfunction(download_unarchiver EXTRACT_LIB)
229-
230-
function(set_download_unarchiver EXTRACT_LIB)
231-
download_unarchiver(EXTRACT_LIB)
128+
function(set_extract_lib EXTRACT_LIB)
232129
if (NOT DEFINED EXTRACT_LIB)
233130
message(FATAL_ERROR "EXTRACT_LIB is not defined")
234131
endif (NOT DEFINED EXTRACT_LIB)
@@ -239,7 +136,7 @@ function(set_download_unarchiver EXTRACT_LIB)
239136
add_compile_definitions(LIBACQUIRE_USE_MINIZ=1)
240137
set(LIBACQUIRE_USE_MINIZ 1)
241138
set(LIBACQUIRE_USE_MINIZ "${LIBACQUIRE_USE_MINIZ}" PARENT_SCOPE)
242-
endfunction(set_download_unarchiver EXTRACT_LIB)
139+
endfunction(set_extract_lib EXTRACT_LIB)
243140

244141
if (DEFINED EXTRACT_LIB)
245142
set("USE_${EXTRACT_LIB}" "1" PARENT_SCOPE)
@@ -260,16 +157,16 @@ function(set_extraction_api)
260157
list(APPEND extract_libraries "${UNZIP_LIBRARIES}")
261158
set(MINIZIP 1)
262159
else ()
263-
set_download_unarchiver(EXTRACT_LIB)
160+
set_extract_lib(EXTRACT_LIB)
264161
endif (UNZIP_FOUND)
265162
else ()
266-
set_download_unarchiver(EXTRACT_LIB)
163+
set_extract_lib(EXTRACT_LIB)
267164
endif (PKG_CONFIG_FOUND)
268165
else ()
269-
set_download_unarchiver(EXTRACT_LIB)
166+
set_extract_lib(EXTRACT_LIB)
270167
endif (ZLIB_FOUND)
271168
else ()
272-
set_download_unarchiver(EXTRACT_LIB)
169+
set_extract_lib(EXTRACT_LIB)
273170
set(EXTRACT_LIB "${EXTRACT_LIB}" PARENT_SCOPE)
274171
endif (DEFINED LIBACQUIRE_USE_ZLIB)
275172
set(EXTRACT_LIBRARIES "${EXTRACT_LIB}" PARENT_SCOPE)

cmake/libacquire_helpers.cmake

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -147,27 +147,7 @@ endmacro(set_http_https_lib)
147147
# Extraction libraries #
148148
########################
149149

150-
function(set_extract_lib)
151-
if (CMAKE_SYSTEM_NAME STREQUAL "Windows" AND NOT DEFINED LIBACQUIRE_USE_ZLIB AND NOT DEFINED LIBACQUIRE_USE_LIBARCHIVE)
152-
set(LIBACQUIRE_USE_WINCOMPRESSAPI 1 PARENT_SCOPE)
153-
set(EXTRACT_LIB "WINCOMPRESSAPI" PARENT_SCOPE)
154-
list(APPEND _Header_Files "acquire_compressapi.h")
155-
elseif (DEFINED LIBACQUIRE_USE_LIBARCHIVE)
156-
set(EXTRACT_LIB "LIBARCHIVE" PARENT_SCOPE)
157-
list(APPEND _Header_Files "acquire_libarchive.h")
158-
include("${CMAKE_SOURCE_DIR}/cmake/FindLibArchiveCustom.cmake")
159-
set(EXTRACT_INCLUDE_DIRECTORIES "${LibArchive_INCLUDE_DIRS}" PARENT_SCOPE)
160-
list(APPEND LIBACQUIRE_LIBRARIES "${LibArchive_LIBRARIES}")
161-
elseif (DEFINED LIBACQUIRE_USE_ZLIB)
162-
set(LIBACQUIRE_USE_ZLIB 1 PARENT_SCOPE)
163-
set(EXTRACT_LIB "ZLIB" PARENT_SCOPE)
164-
list(APPEND _Header_Files "acquire_zlib.h")
165-
else ()
166-
set(LIBACQUIRE_USE_MINIZ 1 PARENT_SCOPE)
167-
set(EXTRACT_LIB "MINIZ" PARENT_SCOPE)
168-
list(APPEND _Header_Files "acquire_miniz.h")
169-
endif ()
170-
endfunction(set_extract_lib)
150+
include("${CMAKE_SOURCE_DIR}/cmake/FindExtractLib.cmake")
171151

172152
######################
173153
# Checksum libraries #

vcpkg.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version-string": "0.0.1",
44
"dependencies": [
55
"libarchive",
6-
"rhash"
6+
"rhash",
7+
"zip"
78
]
89
}

0 commit comments

Comments
 (0)