1*b2055c35SXin Li# This Makefile will compile all fuzzing targets. It doesn't check tool 2*b2055c35SXin Li# requirements and paths may need to be updated depending on your environment. 3*b2055c35SXin Li# Note a clang 6+ toolchain is assumed for use of -fsanitize=fuzzer. 4*b2055c35SXin Li 5*b2055c35SXin LiCC = clang 6*b2055c35SXin LiCXX = clang++ 7*b2055c35SXin LiCFLAGS = -fsanitize=fuzzer -I../../src -I../.. -Wall -Wextra 8*b2055c35SXin LiCXXFLAGS = $(CFLAGS) 9*b2055c35SXin LiLDFLAGS = -fsanitize=fuzzer 10*b2055c35SXin LiLDLIBS = ../../src/mux/libwebpmux.a ../../src/demux/libwebpdemux.a 11*b2055c35SXin LiLDLIBS += ../../src/libwebp.a ../../imageio/libimageio_util.a 12*b2055c35SXin LiLDLIBS += ../../sharpyuv/libsharpyuv.a 13*b2055c35SXin Li 14*b2055c35SXin LiFUZZERS = advanced_api_fuzzer animation_api_fuzzer animdecoder_fuzzer 15*b2055c35SXin LiFUZZERS += animencoder_fuzzer enc_dec_fuzzer huffman_fuzzer 16*b2055c35SXin LiFUZZERS += mux_demux_api_fuzzer simple_api_fuzzer 17*b2055c35SXin Li 18*b2055c35SXin Li%.o: fuzz_utils.h img_alpha.h img_grid.h img_peak.h 19*b2055c35SXin Liall: $(FUZZERS) 20*b2055c35SXin Li 21*b2055c35SXin Lidefine FUZZER_template 22*b2055c35SXin Li$(1): $$(addsuffix .o, $(1)) $(LDLIBS) 23*b2055c35SXin LiOBJS += $$(addsuffix .o, $(1)) 24*b2055c35SXin Liendef 25*b2055c35SXin Li 26*b2055c35SXin Li$(foreach fuzzer, $(FUZZERS), $(eval $(call FUZZER_template, $(fuzzer)))) 27*b2055c35SXin Li 28*b2055c35SXin Liclean: 29*b2055c35SXin Li $(RM) $(FUZZERS) $(OBJS) 30*b2055c35SXin Li 31*b2055c35SXin Li.PHONY: all clean 32