aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt88
1 files changed, 54 insertions, 34 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c496ad9..8437e02 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@ if(MSVC)
3 cmake_policy(SET CMP0091 NEW) 3 cmake_policy(SET CMP0091 NEW)
4endif() 4endif()
5 5
6project (LibreSSL C ASM) 6project(LibreSSL LANGUAGES C ASM)
7 7
8include(CheckFunctionExists) 8include(CheckFunctionExists)
9include(CheckSymbolExists) 9include(CheckSymbolExists)
@@ -72,10 +72,6 @@ endforeach()
72 72
73set(BUILD_NC true) 73set(BUILD_NC true)
74 74
75if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
76 add_definitions(-fno-common)
77endif()
78
79if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") 75if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
80 add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__) 76 add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__)
81 add_definitions(-DHAVE_ATTRIBUTE__DEAD__) 77 add_definitions(-DHAVE_ATTRIBUTE__DEAD__)
@@ -89,6 +85,10 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
89 set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread) 85 set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread)
90endif() 86endif()
91 87
88if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
89 set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread)
90endif()
91
92if(WIN32) 92if(WIN32)
93 set(BUILD_NC false) 93 set(BUILD_NC false)
94 if(MINGW) 94 if(MINGW)
@@ -127,7 +127,7 @@ add_definitions(-D__END_HIDDEN_DECLS=)
127set(CMAKE_POSITION_INDEPENDENT_CODE true) 127set(CMAKE_POSITION_INDEPENDENT_CODE true)
128 128
129if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang") 129if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
130 add_definitions(-Wno-pointer-sign) 130 add_compile_options(-Wno-pointer-sign)
131endif() 131endif()
132 132
133if(WIN32) 133if(WIN32)
@@ -158,17 +158,21 @@ if(MSVC)
158 set(MSVC_DISABLED_WARNINGS_LIST 158 set(MSVC_DISABLED_WARNINGS_LIST
159 "C4018" # 'expression' : signed/unsigned mismatch 159 "C4018" # 'expression' : signed/unsigned mismatch
160 "C4057" # 'operator' : 'identifier1' indirection to 160 "C4057" # 'operator' : 'identifier1' indirection to
161 # slightly different base types from 'identifier2' 161 # slightly different base types from 'identifier2'
162 "C4100" # 'identifier' : unreferenced formal parameter 162 "C4100" # 'identifier' : unreferenced formal parameter
163 "C4127" # conditional expression is constant 163 "C4127" # conditional expression is constant
164 "C4132" # 'object' : const object should be initialized
164 "C4146" # unary minus operator applied to unsigned type, 165 "C4146" # unary minus operator applied to unsigned type,
165 # result still unsigned 166 # result still unsigned
167 "C4206" # nonstandard extension used : translation unit is empty
166 "C4244" # 'argument' : conversion from 'type1' to 'type2', 168 "C4244" # 'argument' : conversion from 'type1' to 'type2',
167 # possible loss of data 169 # possible loss of data
168 "C4245" # 'conversion' : conversion from 'type1' to 'type2', 170 "C4245" # 'conversion' : conversion from 'type1' to 'type2',
169 # signed/unsigned mismatch 171 # signed/unsigned mismatch
170 "C4267" # 'var' : conversion from 'size_t' to 'type', 172 "C4267" # 'var' : conversion from 'size_t' to 'type',
171 # possible loss of data 173 # possible loss of data
174 "C4295" # 'array' : array is too small to include a terminating
175 # null character
172 "C4389" # 'operator' : signed/unsigned mismatch 176 "C4389" # 'operator' : signed/unsigned mismatch
173 "C4706" # assignment within conditional expression 177 "C4706" # assignment within conditional expression
174 "C4996" # The POSIX name for this item is deprecated. 178 "C4996" # The POSIX name for this item is deprecated.
@@ -200,21 +204,33 @@ else()
200 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") 204 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
201endif() 205endif()
202 206
207# XXX - needs _GNU_SOURCE on linux
203check_function_exists(asprintf HAVE_ASPRINTF) 208check_function_exists(asprintf HAVE_ASPRINTF)
204if(HAVE_ASPRINTF) 209if(HAVE_ASPRINTF)
205 add_definitions(-DHAVE_ASPRINTF) 210 add_definitions(-DHAVE_ASPRINTF)
206endif() 211endif()
207 212
208check_function_exists(getopt HAVE_GETOPT) 213check_symbol_exists(getdelim "stdio.h" HAVE_GETDELIM)
214if(HAVE_GETDELIM)
215 add_definitions(-DHAVE_GETDELIM)
216endif()
217
218check_symbol_exists(getline "stdio.h" HAVE_GETLINE)
219if(HAVE_GETLINE)
220 add_definitions(-DHAVE_GETLINE)
221endif()
222
223check_symbol_exists(getopt "unistd.h" HAVE_GETOPT)
209if(HAVE_GETOPT) 224if(HAVE_GETOPT)
210 add_definitions(-DHAVE_GETOPT) 225 add_definitions(-DHAVE_GETOPT)
211endif() 226endif()
212 227
213check_function_exists(reallocarray HAVE_REALLOCARRAY) 228check_symbol_exists(reallocarray "stdlib.h" HAVE_REALLOCARRAY)
214if(HAVE_REALLOCARRAY) 229if(HAVE_REALLOCARRAY)
215 add_definitions(-DHAVE_REALLOCARRAY) 230 add_definitions(-DHAVE_REALLOCARRAY)
216endif() 231endif()
217 232
233# XXX strcasecmp() is in strings.h which isn't available everywhere
218check_function_exists(strcasecmp HAVE_STRCASECMP) 234check_function_exists(strcasecmp HAVE_STRCASECMP)
219if(HAVE_STRCASECMP) 235if(HAVE_STRCASECMP)
220 add_definitions(-DHAVE_STRCASECMP) 236 add_definitions(-DHAVE_STRCASECMP)
@@ -222,18 +238,18 @@ endif()
222 238
223# Emscripten's strlcat and strlcpy triggers ASAN errors 239# Emscripten's strlcat and strlcpy triggers ASAN errors
224if(NOT EMSCRIPTEN) 240if(NOT EMSCRIPTEN)
225 check_function_exists(strlcat HAVE_STRLCAT) 241 check_symbol_exists(strlcat "string.h" HAVE_STRLCAT)
226 if(HAVE_STRLCAT) 242 if(HAVE_STRLCAT)
227 add_definitions(-DHAVE_STRLCAT) 243 add_definitions(-DHAVE_STRLCAT)
228 endif() 244 endif()
229 245
230 check_function_exists(strlcpy HAVE_STRLCPY) 246 check_symbol_exists(strlcpy "string.h" HAVE_STRLCPY)
231 if(HAVE_STRLCPY) 247 if(HAVE_STRLCPY)
232 add_definitions(-DHAVE_STRLCPY) 248 add_definitions(-DHAVE_STRLCPY)
233 endif() 249 endif()
234endif() 250endif()
235 251
236check_function_exists(strndup HAVE_STRNDUP) 252check_symbol_exists(strndup "string.h" HAVE_STRNDUP)
237if(HAVE_STRNDUP) 253if(HAVE_STRNDUP)
238 add_definitions(-DHAVE_STRNDUP) 254 add_definitions(-DHAVE_STRNDUP)
239endif() 255endif()
@@ -242,62 +258,64 @@ if(WIN32)
242 set(HAVE_STRNLEN true) 258 set(HAVE_STRNLEN true)
243 add_definitions(-DHAVE_STRNLEN) 259 add_definitions(-DHAVE_STRNLEN)
244else() 260else()
245 check_function_exists(strnlen HAVE_STRNLEN) 261 check_symbol_exists(strnlen "string.h" HAVE_STRNLEN)
246 if(HAVE_STRNLEN) 262 if(HAVE_STRNLEN)
247 add_definitions(-DHAVE_STRNLEN) 263 add_definitions(-DHAVE_STRNLEN)
248 endif() 264 endif()
249endif() 265endif()
250 266
251check_function_exists(strsep HAVE_STRSEP) 267check_symbol_exists(strsep "string.h" HAVE_STRSEP)
252if(HAVE_STRSEP) 268if(HAVE_STRSEP)
253 add_definitions(-DHAVE_STRSEP) 269 add_definitions(-DHAVE_STRSEP)
254endif() 270endif()
255 271
256check_function_exists(strtonum HAVE_STRTONUM) 272check_symbol_exists(strtonum "stdlib.h" HAVE_STRTONUM)
257if(HAVE_STRTONUM) 273if(HAVE_STRTONUM)
258 add_definitions(-DHAVE_STRTONUM) 274 add_definitions(-DHAVE_STRTONUM)
259endif() 275endif()
260 276
261check_function_exists(arc4random_buf HAVE_ARC4RANDOM_BUF) 277check_symbol_exists(arc4random_buf "stdlib.h" HAVE_ARC4RANDOM_BUF)
262if(HAVE_ARC4RANDOM_BUF) 278if(HAVE_ARC4RANDOM_BUF)
263 add_definitions(-DHAVE_ARC4RANDOM_BUF) 279 add_definitions(-DHAVE_ARC4RANDOM_BUF)
264endif() 280endif()
265 281
266check_function_exists(arc4random_uniform HAVE_ARC4RANDOM_UNIFORM) 282check_symbol_exists(arc4random_uniform "stdlib.h" HAVE_ARC4RANDOM_UNIFORM)
267if(HAVE_ARC4RANDOM_UNIFORM) 283if(HAVE_ARC4RANDOM_UNIFORM)
268 add_definitions(-DHAVE_ARC4RANDOM_UNIFORM) 284 add_definitions(-DHAVE_ARC4RANDOM_UNIFORM)
269endif() 285endif()
270 286
271check_function_exists(explicit_bzero HAVE_EXPLICIT_BZERO) 287check_symbol_exists(explicit_bzero "string.h" HAVE_EXPLICIT_BZERO)
272if(HAVE_EXPLICIT_BZERO) 288if(HAVE_EXPLICIT_BZERO)
273 add_definitions(-DHAVE_EXPLICIT_BZERO) 289 add_definitions(-DHAVE_EXPLICIT_BZERO)
274endif() 290endif()
275 291
276check_function_exists(getauxval HAVE_GETAUXVAL) 292check_symbol_exists(getauxval "sys/auxv.h" HAVE_GETAUXVAL)
277if(HAVE_GETAUXVAL) 293if(HAVE_GETAUXVAL)
278 add_definitions(-DHAVE_GETAUXVAL) 294 add_definitions(-DHAVE_GETAUXVAL)
279endif() 295endif()
280 296
297# XXX macos fails to find getentropy with check_symbol_exists()
281check_function_exists(getentropy HAVE_GETENTROPY) 298check_function_exists(getentropy HAVE_GETENTROPY)
282if(HAVE_GETENTROPY) 299if(HAVE_GETENTROPY)
283 add_definitions(-DHAVE_GETENTROPY) 300 add_definitions(-DHAVE_GETENTROPY)
284endif() 301endif()
285 302
286check_symbol_exists(getpagesize unistd.h HAVE_GETPAGESIZE) 303check_symbol_exists(getpagesize "unistd.h" HAVE_GETPAGESIZE)
287if(HAVE_GETPAGESIZE) 304if(HAVE_GETPAGESIZE)
288 add_definitions(-DHAVE_GETPAGESIZE) 305 add_definitions(-DHAVE_GETPAGESIZE)
289endif() 306endif()
290 307
291check_function_exists(getprogname HAVE_GETPROGNAME) 308check_symbol_exists(getprogname "stdlib.h" HAVE_GETPROGNAME)
292if(HAVE_GETPROGNAME) 309if(HAVE_GETPROGNAME)
293 add_definitions(-DHAVE_GETPROGNAME) 310 add_definitions(-DHAVE_GETPROGNAME)
294endif() 311endif()
295 312
296check_function_exists(syslog_r HAVE_SYSLOG_R) 313check_symbol_exists(syslog_r "syslog.h;stdarg.h" HAVE_SYSLOG_R)
297if(HAVE_SYSLOG_R) 314if(HAVE_SYSLOG_R)
298 add_definitions(-DHAVE_SYSLOG_R) 315 add_definitions(-DHAVE_SYSLOG_R)
299endif() 316endif()
300 317
318# XXX - needs _GNU_SOURCE on linux
301check_function_exists(syslog HAVE_SYSLOG) 319check_function_exists(syslog HAVE_SYSLOG)
302if(HAVE_SYSLOG) 320if(HAVE_SYSLOG)
303 add_definitions(-DHAVE_SYSLOG) 321 add_definitions(-DHAVE_SYSLOG)
@@ -308,16 +326,17 @@ if(HAVE_TIMESPECSUB)
308 add_definitions(-DHAVE_TIMESPECSUB) 326 add_definitions(-DHAVE_TIMESPECSUB)
309endif() 327endif()
310 328
311check_function_exists(timingsafe_bcmp HAVE_TIMINGSAFE_BCMP) 329check_symbol_exists(timingsafe_bcmp "string.h" HAVE_TIMINGSAFE_BCMP)
312if(HAVE_TIMINGSAFE_BCMP) 330if(HAVE_TIMINGSAFE_BCMP)
313 add_definitions(-DHAVE_TIMINGSAFE_BCMP) 331 add_definitions(-DHAVE_TIMINGSAFE_BCMP)
314endif() 332endif()
315 333
316check_function_exists(timingsafe_memcmp HAVE_TIMINGSAFE_MEMCMP) 334check_symbol_exists(timingsafe_memcmp "string.h" HAVE_TIMINGSAFE_MEMCMP)
317if(HAVE_TIMINGSAFE_MEMCMP) 335if(HAVE_TIMINGSAFE_MEMCMP)
318 add_definitions(-DHAVE_TIMINGSAFE_MEMCMP) 336 add_definitions(-DHAVE_TIMINGSAFE_MEMCMP)
319endif() 337endif()
320 338
339# XXX - needs _GNU_SOURCE on linux
321check_function_exists(memmem HAVE_MEMMEM) 340check_function_exists(memmem HAVE_MEMMEM)
322if(HAVE_MEMMEM) 341if(HAVE_MEMMEM)
323 add_definitions(-DHAVE_MEMMEM) 342 add_definitions(-DHAVE_MEMMEM)
@@ -366,6 +385,8 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64|AMD64)")
366elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)") 385elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|[xX]86)")
367 set(ENABLE_ASM false) 386 set(ENABLE_ASM false)
368 set(HOST_I386 true) 387 set(HOST_I386 true)
388elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
389 set(HOST_LOONGARCH64 true)
369elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64") 390elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64")
370 set(HOST_MIPS64 true) 391 set(HOST_MIPS64 true)
371elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips") 392elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips")
@@ -373,7 +394,7 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips")
373elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc") 394elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "powerpc")
374 set(HOST_POWERPC true) 395 set(HOST_POWERPC true)
375elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64") 396elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64")
376 set(HOST_PPC64 true) 397 set(HOST_POWERPC64 true)
377elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") 398elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64")
378 set(HOST_RISCV64 true) 399 set(HOST_RISCV64 true)
379elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc64") 400elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "sparc64")
@@ -384,21 +405,20 @@ endif()
384 405
385if(ENABLE_ASM) 406if(ENABLE_ASM)
386 if(CMAKE_C_COMPILER_ABI STREQUAL "ELF") 407 if(CMAKE_C_COMPILER_ABI STREQUAL "ELF")
387 if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64)") 408 if(HOST_X86_64)
388 set(HOST_ASM_ELF_X86_64 true) 409 set(HOST_ASM_ELF_X86_64 true)
389 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm" AND 410 elseif(HOST_ARM)
390 NOT CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
391 set(HOST_ASM_ELF_ARMV4 true) 411 set(HOST_ASM_ELF_ARMV4 true)
392 elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i386") 412 elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND HOST_I386)
393 set(HOST_ASM_ELF_X86_64 true) 413 set(HOST_ASM_ELF_X86_64 true)
394 endif() 414 endif()
395 add_definitions(-DHAVE_GNU_STACK) 415 add_definitions(-DHAVE_GNU_STACK)
396 elseif(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") 416 elseif(APPLE AND HOST_X86_64)
397 set(HOST_ASM_MACOSX_X86_64 true) 417 set(HOST_ASM_MACOSX_X86_64 true)
398 elseif(MSVC AND (CMAKE_GENERATOR MATCHES "Win64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64")) 418 elseif(MSVC AND (CMAKE_GENERATOR MATCHES "Win64" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64"))
399 set(HOST_ASM_MASM_X86_64 true) 419 set(HOST_ASM_MASM_X86_64 true)
400 ENABLE_LANGUAGE(ASM_MASM) 420 ENABLE_LANGUAGE(ASM_MASM)
401 elseif(MINGW AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") 421 elseif(MINGW AND HOST_X86_64)
402 set(HOST_ASM_MINGW64_X86_64 true) 422 set(HOST_ASM_MINGW64_X86_64 true)
403 endif() 423 endif()
404endif() 424endif()
@@ -441,10 +461,10 @@ if(OPENSSLDIR STREQUAL "")
441 if(WIN32) 461 if(WIN32)
442 set(OPENSSLDIR "C:/Windows/libressl/ssl") 462 set(OPENSSLDIR "C:/Windows/libressl/ssl")
443 else() 463 else()
444 set(OPENSSLDIR "${CMAKE_INSTALL_PREFIX}/etc/ssl") 464 set(OPENSSLDIR "${CMAKE_INSTALL_SYSCONFDIR}/ssl")
445 endif() 465 endif()
446 466
447 set(CONF_DIR "${CMAKE_INSTALL_PREFIX}/etc/ssl") 467 set(CONF_DIR "${CMAKE_INSTALL_SYSCONFDIR}/ssl")
448else() 468else()
449 set(CONF_DIR "${OPENSSLDIR}") 469 set(CONF_DIR "${OPENSSLDIR}")
450endif() 470endif()
@@ -513,7 +533,7 @@ if(ENABLE_LIBRESSL_INSTALL)
513 set(prefix ${CMAKE_INSTALL_PREFIX}) 533 set(prefix ${CMAKE_INSTALL_PREFIX})
514 set(exec_prefix \${prefix}) 534 set(exec_prefix \${prefix})
515 set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR}) 535 set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR})
516 set(includedir \${prefix}/include) 536 set(includedir \${prefix}/${CMAKE_INSTALL_INCLUDEDIR})
517 if(PLATFORM_LIBS) 537 if(PLATFORM_LIBS)
518 string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}") 538 string(REGEX REPLACE ";" " -l" PLATFORM_LDADD ";${PLATFORM_LIBS}")
519 endif() 539 endif()