From 75073d0a8478441cc97a6efa10b566c5fb1dac81 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Fri, 17 Apr 2020 20:57:17 +0100 Subject: New upstream version 1.4.0 --- CMakeLists.txt | 80 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 63 insertions(+), 17 deletions(-) (limited to 'CMakeLists.txt') 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) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(FIDO_MAJOR "1") -set(FIDO_MINOR "3") -set(FIDO_PATCH "1") +set(FIDO_MINOR "4") +set(FIDO_PATCH "0") set(FIDO_VERSION ${FIDO_MAJOR}.${FIDO_MINOR}.${FIDO_PATCH}) add_definitions(-D_FIDO_MAJOR=${FIDO_MAJOR}) add_definitions(-D_FIDO_MINOR=${FIDO_MINOR}) add_definitions(-D_FIDO_PATCH=${FIDO_PATCH}) +if(CYGWIN OR MSYS) + set(WIN32 1) + add_definitions(-DWINVER=0x0a00) +endif() + if(WIN32) add_definitions(-DWIN32_LEAN_AND_MEAN) endif() @@ -36,11 +41,6 @@ if(APPLE) "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") endif() -# /dev/urandom -if(UNIX) - add_definitions(-DHAS_DEV_URANDOM) -endif() - # Observe OpenBSD's library versioning scheme. if(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(LIB_VERSION ${FIDO_MAJOR}.${FIDO_MINOR}) @@ -79,7 +79,7 @@ if(MSVC) else() include(FindPkgConfig) pkg_search_module(CBOR libcbor) - pkg_search_module(CRYPTO libcrypto REQUIRED) + pkg_search_module(CRYPTO libcrypto) # XXX workaround libcbor's missing .pc file if(NOT CBOR_FOUND) @@ -90,12 +90,24 @@ else() set(CBOR_LIBRARIES "cbor") endif() + # XXX workaround libcrypto's missing .pc file + if(NOT CRYPTO_FOUND) + check_include_files(openssl/opensslv.h HAVE_OPENSSLV_H) + if(NOT HAVE_OPENSSLV_H) + message(FATAL_ERROR "could not find crypto header files") + endif() + set(CRYPTO_LIBRARIES "crypto") + endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") pkg_search_module(UDEV libudev REQUIRED) set(UDEV_NAME "udev") # Define be32toh(). add_definitions(-D_GNU_SOURCE) - elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") + # If using hidapi, use hidapi-hidraw. + set(HIDAPI_SUFFIX -hidraw) + elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR + CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(BASE_LIBRARIES usbhid) endif() @@ -103,6 +115,15 @@ else() # MinGW is stuck with a flavour of C89. add_definitions(-DFIDO_NO_DIAGNOSTIC) add_definitions(-DWC_ERR_INVALID_CHARS=0x80) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter") + endif() + + if(USE_HIDAPI) + add_definitions(-DUSE_HIDAPI) + pkg_search_module(HIDAPI hidapi${HIDAPI_SUFFIX} REQUIRED) + if(HIDAPI_FOUND) + set(HIDAPI_LIBRARIES hidapi${HIDAPI_SUFFIX}) + endif() endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") @@ -114,7 +135,12 @@ else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wbad-function-cast") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic-errors") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all") + check_c_compiler_flag("-fstack-protector-all" HAVE_STACK_PROTECTOR_ALL) + if(HAVE_STACK_PROTECTOR_ALL) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-all") + endif() + + add_definitions(-D_DEFAULT_SOURCE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g2") @@ -123,6 +149,7 @@ else() if(FUZZ) if(LIBFUZZER) set(FUZZ_LDFLAGS "-fsanitize=fuzzer") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=fuzzer-no-link") endif() add_definitions(-DFIDO_FUZZ) endif() @@ -192,6 +219,12 @@ if(HAVE_SIGNAL_H) add_definitions(-DHAVE_SIGNAL_H) endif() +# sys/random.h +check_include_files(sys/random.h HAVE_SYS_RANDOM_H) +if(HAVE_SYS_RANDOM_H) + add_definitions(-DHAVE_SYS_RANDOM_H) +endif() + # strlcpy check_function_exists(strlcpy HAVE_STRLCPY) if(HAVE_STRLCPY) @@ -289,21 +322,32 @@ if(HAVE_ARC4RANDOM_BUF) add_definitions(-DHAVE_ARC4RANDOM_BUF) endif() -# getentropy -check_function_exists(getentropy HAVE_GETENTROPY) -if(HAVE_GETENTROPY) - add_definitions(-DHAVE_GETENTROPY) +# getrandom +check_function_exists(getrandom HAVE_GETRANDOM) +if(HAVE_GETRANDOM) + add_definitions(-DHAVE_GETRANDOM) +endif() + +# /dev/urandom +if(UNIX) + add_definitions(-DHAVE_DEV_URANDOM) endif() # export list -if(CMAKE_C_COMPILER_ID STREQUAL "AppleClang") +if(APPLE AND (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR + CMAKE_C_COMPILER_ID STREQUAL "AppleClang")) # clang + lld string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} " -exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/src/export.llvm") elseif(NOT MSVC) # clang/gcc + gnu ld - string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} - " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/export.gnu") + if(FUZZ) + string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} + " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/fuzz/export.gnu") + else() + string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} + " -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/export.gnu") + endif() if(NOT WIN32) string(CONCAT CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} @@ -344,6 +388,7 @@ message(STATUS "CRYPTO_INCLUDE_DIRS: ${CRYPTO_INCLUDE_DIRS}") message(STATUS "CRYPTO_LIBRARY_DIRS: ${CRYPTO_LIBRARY_DIRS}") message(STATUS "CRYPTO_LIBRARIES: ${CRYPTO_LIBRARIES}") message(STATUS "BASE_LIBRARIES: ${BASE_LIBRARIES}") +message(STATUS "HIDAPI_LIBRARIES: ${HIDAPI_LIBRARIES}") message(STATUS "VERSION: ${FIDO_VERSION}") message(STATUS "LIB_VERSION: ${LIB_VERSION}") message(STATUS "LIB_SOVERSION: ${LIB_SOVERSION}") @@ -354,6 +399,7 @@ message(STATUS "ASAN: ${ASAN}") message(STATUS "MSAN: ${MSAN}") message(STATUS "COVERAGE: ${COVERAGE}") message(STATUS "TLS: ${TLS}") +message(STATUS "USE_HIDAPI: ${USE_HIDAPI}") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") message(STATUS "UDEV_INCLUDE_DIRS: ${UDEV_INCLUDE_DIRS}") -- cgit v1.2.3