xref: /freebsd/contrib/libfido2/examples/CMakeLists.txt (revision d4eeb02986980bf33dd56c41ceb9fc5f180c0d47)
1# Copyright (c) 2018 Yubico AB. All rights reserved.
2# Use of this source code is governed by a BSD-style
3# license that can be found in the LICENSE file.
4
5list(APPEND COMPAT_SOURCES
6	../openbsd-compat/clock_gettime.c
7	../openbsd-compat/getopt_long.c
8	../openbsd-compat/strlcat.c
9	../openbsd-compat/strlcpy.c
10)
11
12if(WIN32 AND BUILD_SHARED_LIBS AND NOT CYGWIN AND NOT MSYS)
13	list(APPEND COMPAT_SOURCES ../openbsd-compat/posix_win.c)
14endif()
15
16# set the library to link against
17if(BUILD_STATIC_LIBS)
18	# drop -rdynamic
19	set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
20	set(_FIDO2_LIBRARY fido2)
21elseif(BUILD_SHARED_LIBS)
22	set(_FIDO2_LIBRARY fido2_shared)
23else()
24	set(_FIDO2_LIBRARY ${CRYPTO_LIBRARIES} fido2)
25endif()
26
27# enable -Wconversion -Wsign-conversion
28if(NOT MSVC)
29	set_source_files_properties(assert.c cred.c info.c manifest.c reset.c
30	    retries.c setpin.c util.c PROPERTIES COMPILE_FLAGS
31	    "-Wconversion -Wsign-conversion")
32endif()
33
34# manifest
35add_executable(manifest manifest.c ${COMPAT_SOURCES})
36target_link_libraries(manifest ${_FIDO2_LIBRARY})
37
38# info
39add_executable(info info.c ${COMPAT_SOURCES})
40target_link_libraries(info ${_FIDO2_LIBRARY})
41
42# reset
43add_executable(reset reset.c util.c ${COMPAT_SOURCES})
44target_link_libraries(reset ${_FIDO2_LIBRARY})
45
46# cred
47add_executable(cred cred.c util.c ${COMPAT_SOURCES})
48target_link_libraries(cred ${_FIDO2_LIBRARY})
49
50# assert
51add_executable(assert assert.c util.c ${COMPAT_SOURCES})
52target_link_libraries(assert ${_FIDO2_LIBRARY})
53
54# setpin
55add_executable(setpin setpin.c ${COMPAT_SOURCES})
56target_link_libraries(setpin ${_FIDO2_LIBRARY})
57
58# retries
59add_executable(retries retries.c ${COMPAT_SOURCES})
60target_link_libraries(retries ${_FIDO2_LIBRARY})
61
62# select
63add_executable(select select.c ${COMPAT_SOURCES})
64target_link_libraries(select ${_FIDO2_LIBRARY})
65
66if(MINGW)
67	# needed for nanosleep() in mingw
68	target_link_libraries(select winpthread)
69endif()
70