xref: /freebsd/contrib/libfido2/fuzz/CMakeLists.txt (revision febb0da5bf4bc99828ebede7abcb039514ac367a)
1# Copyright (c) 2019-2024 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# SPDX-License-Identifier: BSD-2-Clause
5
6list(APPEND COMPAT_SOURCES
7	../openbsd-compat/strlcpy.c
8	../openbsd-compat/strlcat.c
9)
10
11list(APPEND COMMON_SOURCES
12	libfuzzer.c
13	mutator_aux.c
14)
15
16# XXX: OSS-Fuzz require linking using CXX
17set(FUZZ_LINKER_LANGUAGE "C" CACHE STRING "Linker language for fuzz harnesses")
18mark_as_advanced(FUZZ_LINKER_LANGUAGE)
19enable_language(${FUZZ_LINKER_LANGUAGE})
20
21if(NOT FUZZ_LDFLAGS)
22	message(FATAL_ERROR "Please define FUZZ_LDFLAGS")
23endif()
24
25# fuzz_cred
26add_executable(fuzz_cred fuzz_cred.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
27set_target_properties(fuzz_cred PROPERTIES
28	LINK_FLAGS ${FUZZ_LDFLAGS}
29	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
30target_link_libraries(fuzz_cred fido2_shared)
31
32# fuzz_assert
33add_executable(fuzz_assert fuzz_assert.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
34set_target_properties(fuzz_assert PROPERTIES
35	LINK_FLAGS ${FUZZ_LDFLAGS}
36	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
37target_link_libraries(fuzz_assert fido2_shared)
38
39# fuzz_mgmt
40add_executable(fuzz_mgmt fuzz_mgmt.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
41set_target_properties(fuzz_mgmt PROPERTIES
42	LINK_FLAGS ${FUZZ_LDFLAGS}
43	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
44target_link_libraries(fuzz_mgmt fido2_shared)
45
46# fuzz_credman
47add_executable(fuzz_credman fuzz_credman.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
48set_target_properties(fuzz_credman PROPERTIES
49	LINK_FLAGS ${FUZZ_LDFLAGS}
50	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
51target_link_libraries(fuzz_credman fido2_shared)
52
53# fuzz_bio
54add_executable(fuzz_bio fuzz_bio.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
55set_target_properties(fuzz_bio PROPERTIES
56	LINK_FLAGS ${FUZZ_LDFLAGS}
57	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
58target_link_libraries(fuzz_bio fido2_shared)
59
60# fuzz_hid
61add_executable(fuzz_hid fuzz_hid.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
62set_target_properties(fuzz_hid PROPERTIES
63	LINK_FLAGS ${FUZZ_LDFLAGS}
64	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
65target_link_libraries(fuzz_hid fido2_shared)
66
67# fuzz_netlink
68add_executable(fuzz_netlink fuzz_netlink.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
69set_target_properties(fuzz_netlink PROPERTIES
70	LINK_FLAGS ${FUZZ_LDFLAGS}
71	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
72target_link_libraries(fuzz_netlink fido2_shared)
73
74# fuzz_largeblob
75add_executable(fuzz_largeblob fuzz_largeblob.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
76set_target_properties(fuzz_largeblob PROPERTIES
77	LINK_FLAGS ${FUZZ_LDFLAGS}
78	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
79target_link_libraries(fuzz_largeblob fido2_shared)
80
81# fuzz_pcsc
82add_executable(fuzz_pcsc fuzz_pcsc.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
83set_target_properties(fuzz_pcsc PROPERTIES
84	LINK_FLAGS ${FUZZ_LDFLAGS}
85	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
86target_link_libraries(fuzz_pcsc fido2_shared)
87
88# fuzz_attobj
89add_executable(fuzz_attobj fuzz_attobj.c ${COMMON_SOURCES} ${COMPAT_SOURCES})
90set_target_properties(fuzz_attobj PROPERTIES
91	LINK_FLAGS ${FUZZ_LDFLAGS}
92	LINKER_LANGUAGE ${FUZZ_LINKER_LANGUAGE})
93target_link_libraries(fuzz_attobj fido2_shared)
94