Skip to content

Commit 99cd110

Browse files
committed
; [cmake/generate_header_and_source_from_header_only.cmake] Improve docstring ; [acquire/CMakeLists.txt] Refactor so set_source_files_properties sources are sorted ; add a bunch of networking, crypto, and checksumming libraries to be conditionally included and conditionally set properties on (BUILD WORKS NOW!) ; [*.h] Carefully move around macros until build succeeds
1 parent 6383d17 commit 99cd110

13 files changed

+133
-72
lines changed

acquire/CMakeLists.txt

Lines changed: 95 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ option(DEBUG_TOKENISER "OFF")
7171
include("${CMAKE_SOURCE_DIR}/cmake/generate_header_and_source_from_header_only.cmake")
7272

7373
if (LIBACQUIRE_HEADER_ONLY)
74+
message(STATUS "LIBACQUIRE_HEADER_ONLY")
7475
add_library("${LIBRARY_NAME}" INTERFACE "${_Header_Files}" "${Header_Files}")
7576
set(lib_vis "INTERFACE")
7677
else ()
@@ -80,11 +81,9 @@ else ()
8081
set(header_impls
8182
"acquire_checksums.h"
8283
"acquire_common_defs.h"
83-
"acquire_crc32c.h"
8484
"acquire_download.h"
8585
"acquire_extract.h"
8686
"acquire_fileutils.h"
87-
"acquire_librhash.h"
8887
"acquire_net_common.h"
8988
"acquire_string_extras.h"
9089
"acquire_url_utils.h"
@@ -101,16 +100,42 @@ else ()
101100
endif ()
102101
list(APPEND header_impls "${NETWORK_LIB}")
103102

103+
message(STATUS "CRYPTO_LIB was ${CRYPTO_LIB}")
104+
set(CHECKSUM_SRC_CRC32c "")
105+
# TODO: Decide more granularly which implementation to take for SHA256, &etc.
106+
# E.g., on Windows you might want librhash if `USE_LIBRHASH` but on non-Windows OpenSSL.
107+
if (CRYPTO_LIB STREQUAL "CommonCrypto" OR
108+
CRYPTO_LIB STREQUAL "OpenSSL" OR
109+
CRYPTO_LIB STREQUAL "LibreSSL"
110+
)
111+
set(CHECKSUM_SRC "acquire_openssl.h")
112+
set(CHECKSUM_SRC_CRC32c "acquire_crc32c.h")
113+
list(APPEND header_impls "${CHECKSUM_SRC_CRC32c}")
114+
elseif (USE_LIBRHASH)
115+
set(CHECKSUM_SRC "acquire_librhash.h")
116+
elseif (CRYPTO_LIB STREQUAL "WinCrypt")
117+
set(CHECKSUM_SRC "acquire_wincrypt.h")
118+
elseif (USE_CRC32C)
119+
set(CHECKSUM_SRC "acquire_crc32c.h")
120+
else ()
121+
# set(CRYPTO_LIB "acquire_crc32c.h")
122+
message(FATAL_ERROR "TODO")
123+
endif ()
124+
list(APPEND header_impls "${CHECKSUM_SRC}")
104125

105126
foreach (header_file IN LISTS header_impls)
106127
get_filename_component(name_no_ext "${header_file}" NAME_WE)
107128
set(gen_header_file "${CMAKE_BINARY_DIR}/gen/gen_${name_no_ext}.h")
108129
set(gen_source_file "${CMAKE_BINARY_DIR}/gen/gen_${name_no_ext}.c")
109130

110131
set(associated_header "")
111-
if(header_file STREQUAL NETWORK_LIB)
132+
if (header_file STREQUAL NETWORK_LIB)
112133
set(associated_header "gen_acquire_download.h")
113-
endif (header_file STREQUAL NETWORK_LIB)
134+
elseif (header_file STREQUAL CHECKSUM_SRC)
135+
# set(associated_header "gen_acquire_checksums.h")
136+
else (header_file STREQUAL CHECKSUM_SRC_CRC32c)
137+
#
138+
endif ()
114139

115140
generate_header_and_source_from_header_only(
116141
"LIBACQUIRE_IMPLEMENTATION"
@@ -133,54 +158,87 @@ else ()
133158
string(REGEX REPLACE "^${CMAKE_BINARY_DIR}." "" gen_source_file_rel "${gen_source_file}")
134159
message(STATUS "Generated source: ${gen_source_file_rel}")
135160
else ()
161+
string(REGEX REPLACE "^${CMAKE_BINARY_DIR}." "" gen_source_file_rel "${gen_source_file}")
136162
message(WARNING "Missing generated source: ${gen_source_file_rel}")
137163
endif ()
138164
endforeach (header_file IN LISTS header_impls)
139165

140166
# Set compile definitions per source file to avoid multiple definitions
141167
foreach (src IN LISTS gen_source_files)
142-
if (src MATCHES "/gen_acquire_librhash.c$")
143-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_LIBRHASH=1")
168+
if (src MATCHES "/gen_acquire_checksums.c$")
169+
set_source_files_properties(
170+
${src} PROPERTIES
171+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;LIBACQUIRE_ACQUIRE_CHECKSUMS_IMPL=1"
172+
)
144173
elseif (src MATCHES "/gen_acquire_crc32c.c$")
145-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_CRC32C=1")
174+
set_source_files_properties(
175+
${src} PROPERTIES
176+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_CRC32C=1"
177+
)
146178
elseif (src MATCHES "/gen_acquire_fileutils.c$")
147-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION")
148-
elseif (src MATCHES "/gen_acquire_checksums.c$")
149-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION")
150-
elseif (src MATCHES "/gen_acquire_download.c$")
151-
if (USE_LIBCURL)
152-
set_source_files_properties(${src}
153-
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_IMPL;USE_LIBCURL=1")
154-
elseif (USE_LIBFETCH)
155-
set_source_files_properties(${src}
156-
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_IMPL;USE_LIBFETCH=1")
157-
elseif (USE_WININET)
158-
set_source_files_properties(${src}
159-
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_IMPL;USE_WININET=1")
160-
elseif (USE_OPENBSD_FTP)
161-
set_source_files_properties(${src}
162-
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_IMPL;USE_OPENBSD_FTP=1")
163-
else ()
164-
set_source_files_properties(${src}
165-
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_IMPL;USE_LIBCURL=1")
166-
endif ()
179+
set_source_files_properties(
180+
${src} PROPERTIES
181+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS=1"
182+
)
183+
elseif (src MATCHES "/gen_acquire_libcurl.c$")
184+
set_source_files_properties(
185+
${src} PROPERTIES
186+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_DIR_IMPL;DOWNLOAD_IMPL;USE_LIBCURL=1"
187+
)
188+
elseif (src MATCHES "/gen_acquire_libfetch.c$")
189+
set_source_files_properties(
190+
${src} PROPERTIES
191+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_DIR_IMPL;DOWNLOAD_IMPL;USE_LIBFETCH=1"
192+
)
193+
elseif (src MATCHES "/gen_acquire_librhash.c$")
194+
set_source_files_properties(
195+
${src} PROPERTIES
196+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_LIBRHASH=1"
197+
)
198+
elseif (src MATCHES "/gen_acquire_libwininet.c$")
199+
set_source_files_properties(
200+
${src} PROPERTIES
201+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_DIR_IMPL;DOWNLOAD_IMPL;USE_WININET=1"
202+
)
203+
elseif (src MATCHES "/gen_acquire_net_common.c$")
204+
set_source_files_properties(
205+
${src} PROPERTIES
206+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION"
207+
)
208+
elseif (src MATCHES "/gen_acquire_openbsd_ftp.c$")
209+
set_source_files_properties(
210+
${src} PROPERTIES
211+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;DOWNLOAD_DIR_IMPL;DOWNLOAD_IMPL;USE_OPENBSD_FTP=1"
212+
)
213+
elseif (src MATCHES "/gen_acquire_openssl.c$")
214+
set_source_files_properties(
215+
${src} PROPERTIES
216+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;STRCASESTR_IMPL;STRERRORLEN_IMPL;LIBACQUIRE_CRYPTO_IMPL"
217+
)
218+
elseif (src MATCHES "/gen_acquire_string_extras.c$")
219+
set_source_files_properties(
220+
${src} PROPERTIES
221+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;STRCASESTR_IMPL;STRERRORLEN_IMPL"
222+
)
223+
elseif (src MATCHES "/gen_acquire_url_utils.c$")
224+
set_source_files_properties(
225+
${src} PROPERTIES
226+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS=1"
227+
)
167228
elseif (src MATCHES "/gen_acquire_extract.c$")
168229
# For extract, could detect MINIZ or LIBARCHIVE
169230
if (USE_MINIZ)
170-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_MINIZ=1")
231+
set_source_files_properties(${src} PROPERTIES
232+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_MINIZ=1")
171233
elseif (USE_LIBARCHIVE)
172-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_LIBARCHIVE=1")
234+
set_source_files_properties(${src} PROPERTIES
235+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;USE_LIBARCHIVE=1")
173236
else ()
174-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION")
237+
set_source_files_properties(${src} PROPERTIES
238+
COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION")
175239
endif ()
176-
elseif (src MATCHES "/gen_acquire_net_common.c$")
177-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION")
178-
elseif (src MATCHES "/gen_acquire_string_extras.c$")
179-
set_source_files_properties(${src}
180-
PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION;STRCASESTR_IMPL;STRERRORLEN_IMPL")
181-
elseif (src MATCHES "/gen_acquire_url_utils.c$")
182-
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "LIBACQUIRE_IMPLEMENTATION")
183240
else ()
241+
message(STATUS "Nothing special with ${src}")
184242
set_source_files_properties(${src} PROPERTIES COMPILE_DEFINITIONS "")
185243
endif ()
186244
endforeach (src IN LISTS gen_source_files)

acquire/acquire_checksums.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,9 @@ 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-
#ifdef LIBACQUIRE_IMPLEMENTATION
87-
#ifndef LIBACQUIRE_ACQUIRE_CHECKSUMS_IMPL
88-
#define LIBACQUIRE_ACQUIRE_CHECKSUMS_IMPL
86+
#if defined(LIBACQUIRE_IMPLEMENTATION) && \
87+
defined(LIBACQUIRE_ACQUIRE_CHECKSUMS_IMPL)
8988

90-
/* foo foo foo */
9189
enum Checksum string2checksum(const char *const s) {
9290
if (strncasecmp(s, "CRC32C", 6) == 0)
9391
return LIBACQUIRE_CRC32C;
@@ -114,8 +112,8 @@ bool (*get_checksum_function(enum Checksum checksum))(const char *,
114112
}
115113
}
116114

117-
#endif /* !LIBACQUIRE_ACQUIRE_CHECKSUMS_IMPL */
118-
#endif /* LIBACQUIRE_IMPLEMENTATION */
115+
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && \
116+
defined(LIBACQUIRE_ACQUIRE_CHECKSUMS_IMPL) */
119117

120118
#ifdef __cplusplus
121119
}

acquire/acquire_fileutils.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ extern LIBACQUIRE_EXPORT bool exists(const char *path);
6161
* @return `-1` if file doesn't exist otherwise its size
6262
*/
6363
extern LIBACQUIRE_EXPORT off_t filesize(const char *path);
64+
6465
/**
6566
* @brief Get the size of a given path
6667
*
@@ -78,9 +79,8 @@ extern LIBACQUIRE_EXPORT bool is_relative(const char *path);
7879
*/
7980
extern LIBACQUIRE_EXPORT const char *get_extension(const char *path);
8081

81-
#if defined(LIBACQUIRE_IMPLEMENTATION) && \
82-
!defined(LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS)
83-
#define LIBACQUIRE_ACQUIRE_FILEUTILS_IMPL
82+
#ifdef LIBACQUIRE_IMPLEMENTATION
83+
#ifdef LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS
8484

8585
bool is_directory(const char *const path) {
8686
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
@@ -159,8 +159,8 @@ const char *get_extension(const char *const filename) {
159159
return strncmp(ext0, ".tar", 4) == 0 ? ext0 : ext1;
160160
}
161161

162-
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && \
163-
!defined(LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS) */
162+
#endif /* LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS */
163+
#endif /* LIBACQUIRE_IMPLEMENTATION */
164164

165165
#ifdef __cplusplus
166166
}

acquire/acquire_libcurl.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,17 @@
1717
extern "C" {
1818
#endif /* __cplusplus */
1919

20+
#include <errno.h>
21+
#include <memory.h>
2022
#include <stdint.h>
2123
#include <stdlib.h>
2224

25+
#include <acquire_common_defs.h>
2326
#include <acquire_fileutils.h>
24-
25-
#include "acquire_common_defs.h"
26-
#include "acquire_string_extras.h"
27+
#include <acquire_string_extras.h>
2728

2829
#include <curl/curl.h>
2930

30-
#include <memory.h>
31-
3231
const char *get_download_dir(void) { return ".downloads"; }
3332

3433
int download_to_stdout(const char *url, const char *checksum,

acquire/acquire_libfetch.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -789,10 +789,9 @@ static int fetch(char *URL, const char *path) {
789789
}
790790

791791
/* CUSTOM libacquire stuff */
792-
#ifndef DOWNLOAD_DIR_IMPL
793-
#define DOWNLOAD_DIR_IMPL
792+
#ifdef DOWNLOAD_DIR_IMPL
794793
const char *get_download_dir(void) { return ".downloads"; }
795-
#endif /* !DOWNLOAD_DIR_IMPL */
794+
#endif /* DOWNLOAD_DIR_IMPL */
796795

797796
#ifdef DOWNLOAD_IMPL
798797
int download(const char *url, enum Checksum checksum, const char *hash,

acquire/acquire_net_common.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@ extern LIBACQUIRE_EXPORT bool is_downloaded(const char *url,
3434
!defined(LIBACQUIRE_IMPL_ACQUIRE_NET_COMMON)
3535
#define LIBACQUIRE_IMPL_ACQUIRE_NET_COMMON 1
3636

37-
#ifndef DOWNLOAD_DIR_IMPL
38-
#define DOWNLOAD_DIR_IMPL
37+
#ifdef DOWNLOAD_DIR_IMPL
3938
const char *get_download_dir(void) { return ".downloads"; }
40-
#endif /* !DOWNLOAD_DIR_IMPL */
39+
#endif /* DOWNLOAD_DIR_IMPL */
4140

4241
/**
4342
* Implementation of is_downloaded.

acquire/acquire_openbsd_ftp.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ extern "C" {
1313

1414
#include "openbsd.ftp/extern.h"
1515

16-
#ifndef DOWNLOAD_DIR_IMPL
17-
#define DOWNLOAD_DIR_IMPL
16+
#ifdef DOWNLOAD_DIR_IMPL
1817
const char *get_download_dir(void) { return ".downloads"; }
19-
#endif /* !DOWNLOAD_DIR_IMPL */
18+
#endif /* DOWNLOAD_DIR_IMPL */
2019

2120
#ifdef DOWNLOAD_IMPL
2221
int download(const char *url, enum Checksum checksum, const char *hash,

acquire/acquire_openssl.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* YMMV. Any issues, post to source GitHub.
99
* */
1010

11-
#if !defined(LIBACQUIRE_OPENSSL_H) && defined(LIBACQUIRE_IMPLEMENTATION)
11+
#ifndef LIBACQUIRE_OPENSSL_H
1212
#define LIBACQUIRE_OPENSSL_H
1313

1414
#ifdef __cplusplus
@@ -55,6 +55,8 @@ extern "C" {
5555
#include <errno.h>
5656
#include <stdio.h>
5757

58+
#if defined(LIBACQUIRE_IMPLEMENTATION) && defined(LIBACQUIRE_CRYPTO_IMPL)
59+
5860
int sha256_file(const char *filename,
5961
unsigned char sha_output[SHA256_DIGEST_LENGTH * 2 + 1]) {
6062
/* mostly from BSD licensed balrog/zanka-full */
@@ -246,11 +248,13 @@ bool sha512(const char *filename, const char *hash) {
246248
}
247249
#endif /* !LIBACQUIRE_IMPL_SHA512 */
248250

251+
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && \
252+
defined(LIBACQUIRE_CRYPTO_IMPL) */
253+
249254
#endif /* defined(USE_COMMON_CRYPTO) || defined(USE_OPENSSL) */
250255

251256
#ifdef __cplusplus
252257
}
253258
#endif /* __cplusplus */
254259

255-
#endif /* !defined(LIBACQUIRE_OPENSSL_H) && defined(LIBACQUIRE_IMPLEMENTATION) \
256-
*/
260+
#endif /* !LIBACQUIRE_OPENSSL_H */

acquire/acquire_url_utils.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ extern LIBACQUIRE_EXPORT const char *get_path_from_url(const char *url);
4949
*/
5050
extern LIBACQUIRE_EXPORT bool is_url(const char *maybe_url);
5151

52-
#ifdef LIBACQUIRE_IMPLEMENTATION
52+
#if defined(LIBACQUIRE_IMPLEMENTATION) && \
53+
defined(LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS)
5354

5455
const char *get_path_from_url(const char *url) {
5556
static char buf[NAME_MAX + 1];
@@ -92,7 +93,8 @@ bool is_url(const char *maybe_url) {
9293
return false /* strchr(maybe_url, '/') != NULL */;
9394
}
9495

95-
#endif /* LIBACQUIRE_IMPLEMENTATION */
96+
#endif /* defined(LIBACQUIRE_IMPLEMENTATION) && \
97+
defined(LIBACQUIRE_IMPL_ACQUIRE_FILEUTILS) */
9698

9799
#ifdef __cplusplus
98100
}

acquire/acquire_wincrypt.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* */
66

77
#if !defined(LIBACQUIRE_WINCRYPT_H) && defined(USE_WINCRYPT) && \
8-
defined(LIBACQUIRE_IMPLEMENTATION)
8+
defined(LIBACQUIRE_IMPLEMENTATION) && defined(LIBACQUIRE_CRYPTO_IMPL)
99
#define LIBACQUIRE_WINCRYPT_H
1010

1111
#include <stdio.h>
@@ -146,4 +146,5 @@ bool sha512(const char *filename, const char *hash) {
146146
#endif /* __cplusplus */
147147

148148
#endif /* !defined(LIBACQUIRE_WINCRYPT_H) && defined(USE_WINCRYPT) && \
149-
defined(LIBACQUIRE_IMPLEMENTATION) */
149+
defined(LIBACQUIRE_IMPLEMENTATION) && \
150+
defined(LIBACQUIRE_CRYPTO_IMPL) */

0 commit comments

Comments
 (0)