Merge branch 'upstream' into tizen
[platform/upstream/cryptsetup.git] / tests / fuzz / Makefile.am
1 EXTRA_DIST = README.md oss-fuzz-build.sh
2 dist_noinst_DATA = \
3         LUKS2.proto \
4         LUKS2_plain_JSON.proto \
5         crypt2_load_fuzz.dict \
6         crypt2_load_ondisk_fuzz.dict \
7         crypt2_load_proto_plain_json_fuzz.dict \
8         unpoison-mutated-buffers-from-libfuzzer.patch
9 CLEANFILES = \
10         LUKS2.pb.h \
11         LUKS2.pb.cc \
12         LUKS2_plain_JSON.pb.h \
13         LUKS2_plain_JSON.pb.cc
14
15 distclean-local:
16         -rm -rf out build
17
18 LIB_FUZZING_ENGINE := $(if $(LIB_FUZZING_ENGINE),$(LIB_FUZZING_ENGINE),"-fsanitize=fuzzer")
19 SANITIZER := $(if $(SANITIZER),,"-fsanitize=address")
20
21 DEPS_PATH := $(top_srcdir)/tests/fuzz/build/static_lib_deps
22
23 crypt2_load_fuzz_SOURCES = FuzzerInterface.h crypt2_load_fuzz.cc
24 crypt2_load_fuzz_LDADD  = ../../libcryptsetup.la ../../libcrypto_backend.la -L$(DEPS_PATH)/lib
25 crypt2_load_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER)
26 crypt2_load_fuzz_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/lib -I$(top_srcdir)/tests/fuzz
27
28 crypt2_load_ondisk_fuzz_SOURCES = FuzzerInterface.h crypt2_load_ondisk_fuzz.cc
29 crypt2_load_ondisk_fuzz_LDADD  = ../../libcryptsetup.la -L$(DEPS_PATH)/lib
30 crypt2_load_ondisk_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER)
31 crypt2_load_ondisk_fuzz_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/lib -I$(top_srcdir)/tests/fuzz
32
33 test-environment-m:
34         @ if test ! -d $(DEPS_PATH); then \
35                 echo "You need to build static libraries first; use oss-fuzz-build.sh script."; \
36                 exit 1; \
37         fi
38 test-environment: | test-environment-m $(DEPS_PATH)
39
40 LUKS2.pb.h: LUKS2.proto
41          $(DEPS_PATH)/bin/protoc LUKS2.proto --cpp_out=.
42 LUKS2.pb.cc: LUKS2.pb.h
43
44 LUKS2_plain_JSON.pb.h: LUKS2_plain_JSON.proto
45          $(DEPS_PATH)/bin/protoc LUKS2_plain_JSON.proto --cpp_out=.
46 LUKS2_plain_JSON.pb.cc: LUKS2_plain_JSON.pb.h
47
48 crypt2_load_proto_fuzz-crypt2_load_proto_fuzz.$(OBJEXT): LUKS2.pb.cc
49 crypt2_load_proto_plain_json_fuzz-crypt2_load_proto_plain_json_fuzz.$(OBJEXT): LUKS2_plain_JSON.pb.cc
50
51 nodist_crypt2_load_proto_fuzz_SOURCES = LUKS2.pb.h LUKS2.pb.cc
52 crypt2_load_proto_fuzz_SOURCES = FuzzerInterface.h \
53         crypt2_load_proto_fuzz.cc \
54         proto_to_luks2_converter.h \
55         proto_to_luks2_converter.cc
56 crypt2_load_proto_fuzz_LDADD = \
57         ../../libcryptsetup.la \
58         ../../libcrypto_backend.la \
59         -L$(DEPS_PATH)/lib -lprotobuf-mutator-libfuzzer -lprotobuf-mutator -lprotobuf
60 crypt2_load_proto_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER)
61 crypt2_load_proto_fuzz_CXXFLAGS = $(AM_CXXFLAGS) \
62         -I$(top_srcdir)/lib \
63         -I$(top_srcdir)/tests/fuzz \
64         -I$(DEPS_PATH)/include \
65         -I$(DEPS_PATH)/include/libprotobuf-mutator -I$(DEPS_PATH)/include/libprotobuf-mutator/src
66
67 nodist_crypt2_load_proto_plain_json_fuzz_SOURCES = LUKS2_plain_JSON.pb.h LUKS2_plain_JSON.pb.cc
68 crypt2_load_proto_plain_json_fuzz_SOURCES = FuzzerInterface.h \
69         crypt2_load_proto_plain_json_fuzz.cc \
70         json_proto_converter.h \
71         json_proto_converter.cc \
72         plain_json_proto_to_luks2_converter.h \
73         plain_json_proto_to_luks2_converter.cc
74 crypt2_load_proto_plain_json_fuzz_LDADD = \
75         ../../libcryptsetup.la \
76         ../../libcrypto_backend.la \
77         -L$(DEPS_PATH)/lib -lprotobuf-mutator-libfuzzer -lprotobuf-mutator -lprotobuf
78 crypt2_load_proto_plain_json_fuzz_LDFLAGS = $(AM_LDFLAGS) $(LIB_FUZZING_ENGINE) $(SANITIZER)
79 crypt2_load_proto_plain_json_fuzz_CXXFLAGS = $(AM_CXXFLAGS) \
80         -I$(top_srcdir)/lib \
81         -I$(top_srcdir)/tests/fuzz \
82         -I$(DEPS_PATH)/include \
83         -I$(DEPS_PATH)/include/libprotobuf-mutator -I$(DEPS_PATH)/include/libprotobuf-mutator/src
84
85 nodist_proto_to_luks2_SOURCES = LUKS2.pb.h LUKS2.pb.cc
86 proto_to_luks2_SOURCES = \
87         proto_to_luks2.cc \
88         proto_to_luks2_converter.h \
89         proto_to_luks2_converter.cc
90 proto_to_luks2_LDADD = ../../libcryptsetup.la ../../libcrypto_backend.la -L$(DEPS_PATH)/lib -lprotobuf
91 proto_to_luks2_LDFLAGS = $(AM_LDFLAGS) -fsanitize=fuzzer-no-link $(SANITIZER)
92 proto_to_luks2_CXXFLAGS = $(AM_CXXFLAGS) \
93         -I$(top_srcdir)/lib \
94         -I$(top_srcdir)/tests/fuzz \
95         -I$(DEPS_PATH)/include
96
97 nodist_plain_json_proto_to_luks2_SOURCES = LUKS2_plain_JSON.pb.h LUKS2_plain_JSON.pb.cc
98 plain_json_proto_to_luks2_SOURCES = \
99         plain_json_proto_to_luks2.cc \
100         plain_json_proto_to_luks2_converter.h \
101         plain_json_proto_to_luks2_converter.cc \
102         json_proto_converter.h \
103         json_proto_converter.cc
104 plain_json_proto_to_luks2_LDADD = ../../libcryptsetup.la ../../libcrypto_backend.la -L$(DEPS_PATH)/lib -lprotobuf
105 plain_json_proto_to_luks2_LDFLAGS = $(AM_LDFLAGS) -fsanitize=fuzzer-no-link $(SANITIZER)
106 plain_json_proto_to_luks2_CXXFLAGS = $(AM_CXXFLAGS) \
107         -I$(top_srcdir)/lib \
108         -I$(top_srcdir)/tests/fuzz \
109         -I$(DEPS_PATH)/include
110
111 if ENABLE_FUZZ_TARGETS
112 noinst_PROGRAMS = \
113         crypt2_load_fuzz \
114         crypt2_load_ondisk_fuzz \
115         crypt2_load_proto_fuzz \
116         crypt2_load_proto_plain_json_fuzz \
117         proto_to_luks2 \
118         plain_json_proto_to_luks2
119
120 fuzz-targets: test-environment $(noinst_PROGRAMS)
121 .PHONY: fuzz-targets
122 endif