aboutsummaryrefslogtreecommitdiff
path: root/tests/fuzzer/makefile.unix
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fuzzer/makefile.unix')
-rw-r--r--tests/fuzzer/makefile.unix30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/fuzzer/makefile.unix b/tests/fuzzer/makefile.unix
new file mode 100644
index 00000000..e2425639
--- /dev/null
+++ b/tests/fuzzer/makefile.unix
@@ -0,0 +1,30 @@
+# This Makefile will compile all fuzzing targets. It doesn't check tool
+# requirements and paths may need to be updated depending on your environment.
+# Note a clang 6+ toolchain is assumed for use of -fsanitize=fuzzer.
+
+CC = clang
+CXX = clang++
+CFLAGS = -fsanitize=fuzzer -I../../src -I../.. -Wall -Wextra
+CXXFLAGS = $(CFLAGS)
+LDFLAGS = -fsanitize=fuzzer
+LDLIBS = ../../src/mux/libwebpmux.a ../../src/demux/libwebpdemux.a
+LDLIBS += ../../src/libwebp.a ../../imageio/libimageio_util.a
+
+FUZZERS = advanced_api_fuzzer animation_api_fuzzer animencoder_fuzzer
+FUZZERS += animdecoder_fuzzer mux_demux_api_fuzzer enc_dec_fuzzer
+FUZZERS += simple_api_fuzzer
+
+%.o: fuzz_utils.h img_alpha.h img_grid.h img_peak.h
+all: $(FUZZERS)
+
+define FUZZER_template
+$(1): $$(addsuffix .o, $(1)) $(LDLIBS)
+OBJS += $$(addsuffix .o, $(1))
+endef
+
+$(foreach fuzzer, $(FUZZERS), $(eval $(call FUZZER_template, $(fuzzer))))
+
+clean:
+ $(RM) $(FUZZERS) $(OBJS)
+
+.PHONY: all clean