@@ -71,6 +71,7 @@ option(DEBUG_TOKENISER "OFF")
7171include ("${CMAKE_SOURCE_DIR} /cmake/generate_header_and_source_from_header_only.cmake" )
7272
7373if (LIBACQUIRE_HEADER_ONLY)
74+ message (STATUS "LIBACQUIRE_HEADER_ONLY" )
7475 add_library ("${LIBRARY_NAME} " INTERFACE "${_Header_Files} " "${Header_Files} " )
7576 set (lib_vis "INTERFACE" )
7677else ()
@@ -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)
0 commit comments