diff options
author | Colin Watson <cjwatson@debian.org> | 2020-04-17 20:57:17 +0100 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2020-04-17 20:57:17 +0100 |
commit | 75073d0a8478441cc97a6efa10b566c5fb1dac81 (patch) | |
tree | b73bff259e1b16829ed8b19ee92df2bbbf36ef7d /CMakeLists.txt | |
parent | c923f422b1e455bdd8ec3bdb10d005e3bfbacfe0 (diff) |
New upstream version 1.4.0
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 80 |
1 files changed, 63 insertions, 17 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 9481c46..0bb2e87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
@@ -19,14 +19,19 @@ set(CMAKE_VERBOSE_MAKEFILE on) | |||
19 | set(CMAKE_POSITION_INDEPENDENT_CODE ON) | 19 | set(CMAKE_POSITION_INDEPENDENT_CODE ON) |
20 | 20 | ||
21 | set(FIDO_MAJOR "1") | 21 | set(FIDO_MAJOR "1") |
22 | set(FIDO_MINOR "3") | 22 | set(FIDO_MINOR "4") |
23 | set(FIDO_PATCH "1") | 23 | set(FIDO_PATCH "0") |
24 | set(FIDO_VERSION ${FIDO_MAJOR}.${FIDO_MINOR}.${FIDO_PATCH}) | 24 | set(FIDO_VERSION ${FIDO_MAJOR}.${FIDO_MINOR}.${FIDO_PATCH}) |
25 | 25 | ||
26 | add_definitions(-D_FIDO_MAJOR=${FIDO_MAJOR}) | 26 | add_definitions(-D_FIDO_MAJOR=${FIDO_MAJOR}) |
27 | add_definitions(-D_FIDO_MINOR=${FIDO_MINOR}) | 27 | add_definitions(-D_FIDO_MINOR=${FIDO_MINOR}) |
28 | add_definitions(-D_FIDO_PATCH=${FIDO_PATCH}) | 28 | add_definitions(-D_FIDO_PATCH=${FIDO_PATCH}) |
29 | 29 | ||
30 | if(CYGWIN OR MSYS) | ||
31 | set(WIN32 1) | ||
32 | add_definitions(-DWINVER=0x0a00) | ||
33 | endif() | ||
34 | |||
30 | if(WIN32) | 35 | if(WIN32) |
31 | add_definitions(-DWIN32_LEAN_AND_MEAN) | 36 | add_definitions(-DWIN32_LEAN_AND_MEAN) |
32 | endif() | 37 | endif() |
@@ -36,11 +41,6 @@ if(APPLE) | |||
36 | "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") | 41 | "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") |
37 | endif() | 42 | endif() |
38 | 43 | ||
39 | # /dev/urandom | ||
40 | if(UNIX) | ||
41 | add_definitions(-DHAS_DEV_URANDOM) | ||
42 | endif() | ||
43 | |||
44 | # Observe OpenBSD's library versioning scheme. | 44 | # Observe OpenBSD's library versioning scheme. |
45 | if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | 45 | if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") |
46 | set(LIB_VERSION ${FIDO_MAJOR}.${FIDO_MINOR}) | 46 | set(LIB_VERSION ${FIDO_MAJOR}.${FIDO_MINOR}) |
@@ -79,7 +79,7 @@ if(MSVC) | |||
79 | else() | 79 | else() |
80 | include(FindPkgConfig) | 80 | include(FindPkgConfig) |
81 | pkg_search_module(CBOR libcbor) | 81 | pkg_search_module(CBOR libcbor) |
82 | pkg_search_module(CRYPTO libcrypto REQUIRED) | 82 | pkg_search_module(CRYPTO libcrypto) |
83 | 83 | ||
84 | # XXX workaround libcbor's missing .pc file | 84 | # XXX workaround libcbor's missing .pc file |
85 | if(NOT CBOR_FOUND) | 85 | if(NOT CBOR_FOUND) |
@@ -90,12 +90,24 @@ else() | |||
90 | set(CBOR_LIBRARIES "cbor") | 90 | set(CBOR_LIBRARIES "cbor") |
91 | endif() | 91 | endif() |
92 | 92 | ||
93 | # XXX workaround libcrypto's missing .pc file | ||
94 | if(NOT CRYPTO_FOUND) | ||
95 | check_include_files(openssl/opensslv.h HAVE_OPENSSLV_H) | ||
96 | if(NOT HAVE_OPENSSLV_H) | ||
97 | message(FATAL_ERROR "could not find crypto header files") | ||
98 | endif() | ||
99 | set(CRYPTO_LIBRARIES "crypto") | ||
100 | endif() | ||
101 | |||
93 | if(CMAKE_SYSTEM_NAME STREQUAL "Linux") | 102 | if(CMAKE_SYSTEM_NAME STREQUAL "Linux") |
94 | pkg_search_module(UDEV libudev REQUIRED) | 103 | pkg_search_module(UDEV libudev REQUIRED) |
95 | set(UDEV_NAME "udev") | 104 | set(UDEV_NAME "udev") |
96 | # Define be32toh(). | 105 | # Define be32toh(). |
97 | add_definitions(-D_GNU_SOURCE) | 106 | add_definitions(-D_GNU_SOURCE) |
98 | elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | 107 | # If using hidapi, use hidapi-hidraw. |
108 | set(HIDAPI_SUFFIX -hidraw) | ||
109 | elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR | ||
110 | CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") | ||
99 | set(BASE_LIBRARIES usbhid) | 111 | set(BASE_LIBRARIES usbhid) |
100 | endif() | 112 | endif() |
101 | 113 | ||
@@ -103,6 +115,15 @@ else() | |||
103 | # MinGW is stuck with a flavour of C89. | 115 | # MinGW is stuck with a flavour of C89. |
104 | add_definitions(-DFIDO_NO_DIAGNOSTIC) | 116 | add_definitions(-DFIDO_NO_DIAGNOSTIC) |
105 | add_definitions(-DWC_ERR_INVALID_CHARS=0x80) | 117 | add_definitions(-DWC_ERR_INVALID_CHARS=0x80) |
118 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter") | ||
119 | endif() | ||
120 | |||
121 | if(USE_HIDAPI) | ||
122 | add_definitions(-DUSE_HIDAPI) | ||
123 | pkg_search_module(HIDAPI hidapi${HIDAPI_SUFFIX} REQUIRED) | ||
124 | if(HIDAPI_FOUND) | ||
125 | set(HIDAPI_LIBRARIES hidapi${HIDAPI_SUFFIX}) | ||
126 | endif() | ||
106 | endif() | 127 | endif() |
107 | 128 | ||
108 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") | 129 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") |
@@ -114,7 +135,12 @@ else() | |||
114 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wbad-function-cast") | 135 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wbad-function-cast") |
115 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic") | 136 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic") |
116 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") | 137 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") |
117 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all") | 138 | check_c_compiler_flag("-fstack-protector-all" HAVE_STACK_PROTECTOR_ALL) |
139 | if(HAVE_STACK_PROTECTOR_ALL) | ||
140 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all") | ||
141 | endif() | ||
142 | |||
143 | add_definitions(-D_DEFAULT_SOURCE) | ||
118 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") | 144 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") |
119 | 145 | ||
120 | set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g2") | 146 | set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g2") |
@@ -123,6 +149,7 @@ else() | |||
123 | if(FUZZ) | 149 | if(FUZZ) |
124 | if(LIBFUZZER) | 150 | if(LIBFUZZER) |
125 | set(FUZZ_LDFLAGS "-fsanitize=fuzzer") | 151 | set(FUZZ_LDFLAGS "-fsanitize=fuzzer") |
152 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=fuzzer-no-link") | ||
126 | endif() | 153 | endif() |
127 | add_definitions(-DFIDO_FUZZ) | 154 | add_definitions(-DFIDO_FUZZ) |
128 | endif() | 155 | endif() |
@@ -192,6 +219,12 @@ if(HAVE_SIGNAL_H) | |||
192 | add_definitions(-DHAVE_SIGNAL_H) | 219 | add_definitions(-DHAVE_SIGNAL_H) |
193 | endif() | 220 | endif() |
194 | 221 | ||
222 | # sys/random.h | ||
223 | check_include_files(sys/random.h HAVE_SYS_RANDOM_H) | ||
224 | if(HAVE_SYS_RANDOM_H) | ||
225 | add_definitions(-DHAVE_SYS_RANDOM_H) | ||
226 | endif() | ||
227 | |||
195 | # strlcpy | 228 | # strlcpy |
196 | check_function_exists(strlcpy HAVE_STRLCPY) | 229 | check_function_exists(strlcpy HAVE_STRLCPY) |
197 | if(HAVE_STRLCPY) | 230 | if(HAVE_STRLCPY) |
@@ -289,21 +322,32 @@ if(HAVE_ARC4RANDOM_BUF) | |||
289 | add_definitions(-DHAVE_ARC4RANDOM_BUF) | 322 | add_definitions(-DHAVE_ARC4RANDOM_BUF) |
290 | endif() | 323 | endif() |
291 | 324 | ||
292 | # getentropy | 325 | # getrandom |
293 | check_function_exists(getentropy HAVE_GETENTROPY) | 326 | check_function_exists(getrandom HAVE_GETRANDOM) |
294 | if(HAVE_GETENTROPY) | 327 | if(HAVE_GETRANDOM) |
295 | add_definitions(-DHAVE_GETENTROPY) | 328 | add_definitions(-DHAVE_GETRANDOM) |
329 | endif() | ||
330 | |||
331 | # /dev/urandom | ||
332 | if(UNIX) | ||
333 | add_definitions(-DHAVE_DEV_URANDOM) | ||
296 | endif() | 334 | endif() |
297 | 335 | ||
298 | # export list | 336 | # export list |
299 | if(CMAKE_C_COMPILER_ID STREQUAL "AppleClang") | 337 | if(APPLE AND (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR |
338 | CMAKE_C_COMPILER_ID STREQUAL "AppleClang")) | ||
300 | # clang + lld | 339 | # clang + lld |
301 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} | 340 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} |
302 | " -exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/src/export.llvm") | 341 | " -exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/src/export.llvm") |
303 | elseif(NOT MSVC) | 342 | elseif(NOT MSVC) |
304 | # clang/gcc + gnu ld | 343 | # clang/gcc + gnu ld |
305 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} | 344 | if(FUZZ) |
306 | " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/export.gnu") | 345 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} |
346 | " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/fuzz/export.gnu") | ||
347 | else() | ||
348 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} | ||
349 | " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/export.gnu") | ||
350 | endif() | ||
307 | if(NOT WIN32) | 351 | if(NOT WIN32) |
308 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS | 352 | string(CONCAT CMAKE_SHARED_LINKER_FLAGS |
309 | ${CMAKE_SHARED_LINKER_FLAGS} | 353 | ${CMAKE_SHARED_LINKER_FLAGS} |
@@ -344,6 +388,7 @@ message(STATUS "CRYPTO_INCLUDE_DIRS: ${CRYPTO_INCLUDE_DIRS}") | |||
344 | message(STATUS "CRYPTO_LIBRARY_DIRS: ${CRYPTO_LIBRARY_DIRS}") | 388 | message(STATUS "CRYPTO_LIBRARY_DIRS: ${CRYPTO_LIBRARY_DIRS}") |
345 | message(STATUS "CRYPTO_LIBRARIES: ${CRYPTO_LIBRARIES}") | 389 | message(STATUS "CRYPTO_LIBRARIES: ${CRYPTO_LIBRARIES}") |
346 | message(STATUS "BASE_LIBRARIES: ${BASE_LIBRARIES}") | 390 | message(STATUS "BASE_LIBRARIES: ${BASE_LIBRARIES}") |
391 | message(STATUS "HIDAPI_LIBRARIES: ${HIDAPI_LIBRARIES}") | ||
347 | message(STATUS "VERSION: ${FIDO_VERSION}") | 392 | message(STATUS "VERSION: ${FIDO_VERSION}") |
348 | message(STATUS "LIB_VERSION: ${LIB_VERSION}") | 393 | message(STATUS "LIB_VERSION: ${LIB_VERSION}") |
349 | message(STATUS "LIB_SOVERSION: ${LIB_SOVERSION}") | 394 | message(STATUS "LIB_SOVERSION: ${LIB_SOVERSION}") |
@@ -354,6 +399,7 @@ message(STATUS "ASAN: ${ASAN}") | |||
354 | message(STATUS "MSAN: ${MSAN}") | 399 | message(STATUS "MSAN: ${MSAN}") |
355 | message(STATUS "COVERAGE: ${COVERAGE}") | 400 | message(STATUS "COVERAGE: ${COVERAGE}") |
356 | message(STATUS "TLS: ${TLS}") | 401 | message(STATUS "TLS: ${TLS}") |
402 | message(STATUS "USE_HIDAPI: ${USE_HIDAPI}") | ||
357 | 403 | ||
358 | if(CMAKE_SYSTEM_NAME STREQUAL "Linux") | 404 | if(CMAKE_SYSTEM_NAME STREQUAL "Linux") |
359 | message(STATUS "UDEV_INCLUDE_DIRS: ${UDEV_INCLUDE_DIRS}") | 405 | message(STATUS "UDEV_INCLUDE_DIRS: ${UDEV_INCLUDE_DIRS}") |