Home | History | Annotate | Line # | Download | only in fuzz
Makefile revision 1.1
      1  1.1  christos # ################################################################
      2  1.1  christos # Copyright (c) Meta Platforms, Inc. and affiliates.
      3  1.1  christos # All rights reserved.
      4  1.1  christos #
      5  1.1  christos # This source code is licensed under both the BSD-style license (found in the
      6  1.1  christos # LICENSE file in the root directory of this source tree) and the GPLv2 (found
      7  1.1  christos # in the COPYING file in the root directory of this source tree).
      8  1.1  christos # You may select, at your option, one of the above-listed licenses.
      9  1.1  christos # ################################################################
     10  1.1  christos 
     11  1.1  christos # Optionally user defined flags
     12  1.1  christos CFLAGS ?= -O3
     13  1.1  christos CXXFLAGS ?= -O3
     14  1.1  christos CPPFLAGS ?=
     15  1.1  christos ASFLAGS ?=
     16  1.1  christos LDFLAGS ?=
     17  1.1  christos ARFLAGS ?=
     18  1.1  christos LIB_FUZZING_ENGINE ?= libregression.a
     19  1.1  christos PYTHON ?= python
     20  1.1  christos ifeq ($(shell uname), Darwin)
     21  1.1  christos 	DOWNLOAD?=curl -L -o
     22  1.1  christos else
     23  1.1  christos 	DOWNLOAD?=wget -O
     24  1.1  christos endif
     25  1.1  christos CORPORA_URL_PREFIX:=https://github.com/facebook/zstd/releases/download/fuzz-corpora/
     26  1.1  christos 
     27  1.1  christos LIBZSTD_MK_DIR = ../../lib
     28  1.1  christos DEBUGLEVEL ?= 2
     29  1.1  christos ZSTD_LEGACY_SUPPORT ?= 1
     30  1.1  christos 
     31  1.1  christos include $(LIBZSTD_MK_DIR)/libzstd.mk
     32  1.1  christos 
     33  1.1  christos PRGDIR = ../../programs
     34  1.1  christos CONTRIBDIR = ../../contrib
     35  1.1  christos 
     36  1.1  christos DEFAULT_SEQ_PROD_DIR = $(CONTRIBDIR)/externalSequenceProducer
     37  1.1  christos DEFAULT_SEQ_PROD_SRC = $(DEFAULT_SEQ_PROD_DIR)/sequence_producer.c
     38  1.1  christos THIRD_PARTY_SEQ_PROD_OBJ ?=
     39  1.1  christos 
     40  1.1  christos FUZZ_CPPFLAGS := -I$(LIB_SRCDIR) -I$(LIB_SRCDIR)/common -I$(LIB_SRCDIR)/compress \
     41  1.1  christos 	-I$(LIB_SRCDIR)/dictBuilder -I$(LIB_SRCDIR)/deprecated -I$(LIB_SRCDIR)/legacy \
     42  1.1  christos 	-I$(CONTRIBDIR)/seekable_format -I$(PRGDIR) -I$(DEFAULT_SEQ_PROD_DIR) \
     43  1.1  christos 	-DZSTD_MULTITHREAD -DZSTD_LEGACY_SUPPORT=1 $(CPPFLAGS)
     44  1.1  christos FUZZ_EXTRA_FLAGS := -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
     45  1.1  christos 	-Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
     46  1.1  christos 	-Wstrict-prototypes -Wundef \
     47  1.1  christos 	-Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
     48  1.1  christos 	-Wredundant-decls -Wno-deprecated-declarations \
     49  1.1  christos 	-g -fno-omit-frame-pointer
     50  1.1  christos FUZZ_CFLAGS := $(FUZZ_EXTRA_FLAGS) $(CFLAGS)
     51  1.1  christos FUZZ_ASFLAGS := $(FUZZ_EXTRA_FLAGS) $(ASFLAGS)
     52  1.1  christos FUZZ_CXXFLAGS := $(FUZZ_EXTRA_FLAGS) -std=c++11 $(CXXFLAGS)
     53  1.1  christos FUZZ_LDFLAGS := -pthread $(LDFLAGS)
     54  1.1  christos FUZZ_ARFLAGS := $(ARFLAGS)
     55  1.1  christos FUZZ_TARGET_FLAGS = $(FUZZ_CPPFLAGS) $(FUZZ_CXXFLAGS) $(FUZZ_LDFLAGS)
     56  1.1  christos 
     57  1.1  christos FUZZ_ROUND_TRIP_FLAGS := -DFUZZING_ASSERT_VALID_SEQUENCE
     58  1.1  christos 
     59  1.1  christos FUZZ_HEADERS := fuzz_helpers.h fuzz.h zstd_helpers.h fuzz_data_producer.h
     60  1.1  christos FUZZ_SRC := $(PRGDIR)/util.c ./fuzz_helpers.c ./zstd_helpers.c ./fuzz_data_producer.c
     61  1.1  christos 
     62  1.1  christos SEEKABLE_HEADERS = $(CONTRIBDIR)/seekable_format/zstd_seekable.h
     63  1.1  christos SEEKABLE_OBJS = $(CONTRIBDIR)/seekable_format/zstdseek_compress.c $(CONTRIBDIR)/seekable_format/zstdseek_decompress.c
     64  1.1  christos 
     65  1.1  christos ZSTDCOMMON_SRC := $(ZSTD_COMMON_FILES)
     66  1.1  christos ZSTDCOMP_SRC   := $(ZSTD_COMPRESS_FILES)
     67  1.1  christos ZSTDDECOMP_SRC := $(ZSTD_DECOMPRESS_FILES)
     68  1.1  christos ZSTDDICT_SRC := $(ZSTD_DICTBUILDER_FILES)
     69  1.1  christos ZSTDLEGACY_SRC := $(ZSTD_LEGACY_FILES)
     70  1.1  christos FUZZ_SRC       := \
     71  1.1  christos 	$(FUZZ_SRC) \
     72  1.1  christos 	$(ZSTDDECOMP_SRC) \
     73  1.1  christos 	$(ZSTDCOMMON_SRC) \
     74  1.1  christos 	$(ZSTDCOMP_SRC) \
     75  1.1  christos 	$(ZSTDDICT_SRC) \
     76  1.1  christos 	$(ZSTDLEGACY_SRC) \
     77  1.1  christos 	$(DEFAULT_SEQ_PROD_SRC)
     78  1.1  christos FUZZ_SRC := $(sort $(wildcard $(FUZZ_SRC)))
     79  1.1  christos 
     80  1.1  christos FUZZ_D_OBJ1 := $(subst $(LIB_SRCDIR)/common/,d_lib_common_,$(FUZZ_SRC))
     81  1.1  christos FUZZ_D_OBJ2 := $(subst $(LIB_SRCDIR)/compress/,d_lib_compress_,$(FUZZ_D_OBJ1))
     82  1.1  christos FUZZ_D_OBJ3 := $(subst $(LIB_SRCDIR)/decompress/,d_lib_decompress_,$(FUZZ_D_OBJ2))
     83  1.1  christos FUZZ_D_OBJ4 := $(subst $(LIB_SRCDIR)/dictBuilder/,d_lib_dictBuilder_,$(FUZZ_D_OBJ3))
     84  1.1  christos FUZZ_D_OBJ5 := $(subst $(LIB_SRCDIR)/legacy/,d_lib_legacy_,$(FUZZ_D_OBJ4))
     85  1.1  christos FUZZ_D_OBJ6 := $(subst $(PRGDIR)/,d_prg_,$(FUZZ_D_OBJ5))
     86  1.1  christos FUZZ_D_OBJ7 := $(subst $(DEFAULT_SEQ_PROD_DIR)/,d_default_seq_prod_,$(FUZZ_D_OBJ6))
     87  1.1  christos FUZZ_D_OBJ8 := $(subst $\./,d_fuzz_,$(FUZZ_D_OBJ7))
     88  1.1  christos FUZZ_D_OBJ9 := $(FUZZ_D_OBJ8:.c=.o)
     89  1.1  christos FUZZ_D_OBJ10 := $(THIRD_PARTY_SEQ_PROD_OBJ) $(FUZZ_D_OBJ9)
     90  1.1  christos FUZZ_DECOMPRESS_OBJ := $(FUZZ_D_OBJ10:.S=.o)
     91  1.1  christos 
     92  1.1  christos FUZZ_RT_OBJ1 := $(subst $(LIB_SRCDIR)/common/,rt_lib_common_,$(FUZZ_SRC))
     93  1.1  christos FUZZ_RT_OBJ2 := $(subst $(LIB_SRCDIR)/compress/,rt_lib_compress_,$(FUZZ_RT_OBJ1))
     94  1.1  christos FUZZ_RT_OBJ3 := $(subst $(LIB_SRCDIR)/decompress/,rt_lib_decompress_,$(FUZZ_RT_OBJ2))
     95  1.1  christos FUZZ_RT_OBJ4 := $(subst $(LIB_SRCDIR)/dictBuilder/,rt_lib_dictBuilder_,$(FUZZ_RT_OBJ3))
     96  1.1  christos FUZZ_RT_OBJ5 := $(subst $(LIB_SRCDIR)/legacy/,rt_lib_legacy_,$(FUZZ_RT_OBJ4))
     97  1.1  christos FUZZ_RT_OBJ6 := $(subst $(PRGDIR)/,rt_prg_,$(FUZZ_RT_OBJ5))
     98  1.1  christos FUZZ_RT_OBJ7 := $(subst $(DEFAULT_SEQ_PROD_DIR)/,rt_default_seq_prod_,$(FUZZ_RT_OBJ6))
     99  1.1  christos FUZZ_RT_OBJ8 := $(subst $\./,rt_fuzz_,$(FUZZ_RT_OBJ7))
    100  1.1  christos FUZZ_RT_OBJ9 := $(FUZZ_RT_OBJ8:.c=.o)
    101  1.1  christos FUZZ_RT_OBJ10 := $(THIRD_PARTY_SEQ_PROD_OBJ) $(FUZZ_RT_OBJ9)
    102  1.1  christos FUZZ_ROUND_TRIP_OBJ := $(FUZZ_RT_OBJ10:.S=.o)
    103  1.1  christos 
    104  1.1  christos .PHONY: default all clean cleanall
    105  1.1  christos 
    106  1.1  christos default: all
    107  1.1  christos 
    108  1.1  christos FUZZ_TARGETS :=       \
    109  1.1  christos 	simple_round_trip \
    110  1.1  christos 	stream_round_trip \
    111  1.1  christos 	block_round_trip  \
    112  1.1  christos 	simple_decompress \
    113  1.1  christos 	stream_decompress \
    114  1.1  christos 	block_decompress  \
    115  1.1  christos 	dictionary_round_trip \
    116  1.1  christos 	dictionary_decompress \
    117  1.1  christos 	zstd_frame_info \
    118  1.1  christos 	simple_compress \
    119  1.1  christos 	dictionary_loader \
    120  1.1  christos 	raw_dictionary_round_trip \
    121  1.1  christos 	dictionary_stream_round_trip \
    122  1.1  christos 	decompress_dstSize_tooSmall \
    123  1.1  christos 	fse_read_ncount \
    124  1.1  christos 	sequence_compression_api \
    125  1.1  christos 	seekable_roundtrip \
    126  1.1  christos 	huf_round_trip \
    127  1.1  christos 	huf_decompress \
    128  1.1  christos 	decompress_cross_format \
    129  1.1  christos 	generate_sequences
    130  1.1  christos 
    131  1.1  christos all: libregression.a $(FUZZ_TARGETS)
    132  1.1  christos 
    133  1.1  christos rt_lib_common_%.o: $(LIB_SRCDIR)/common/%.c
    134  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    135  1.1  christos 
    136  1.1  christos rt_lib_compress_%.o: $(LIB_SRCDIR)/compress/%.c
    137  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    138  1.1  christos 
    139  1.1  christos rt_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.c
    140  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    141  1.1  christos 
    142  1.1  christos rt_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.S
    143  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_ASFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    144  1.1  christos 
    145  1.1  christos rt_lib_dictBuilder_%.o: $(LIB_SRCDIR)/dictBuilder/%.c
    146  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    147  1.1  christos 
    148  1.1  christos rt_lib_legacy_%.o: $(LIB_SRCDIR)/legacy/%.c
    149  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    150  1.1  christos 
    151  1.1  christos rt_prg_%.o: $(PRGDIR)/%.c
    152  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    153  1.1  christos 
    154  1.1  christos rt_fuzz_%.o: %.c
    155  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    156  1.1  christos 
    157  1.1  christos rt_default_seq_prod_%.o: $(DEFAULT_SEQ_PROD_DIR)/%.c
    158  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $(FUZZ_ROUND_TRIP_FLAGS) $< -c -o $@
    159  1.1  christos 
    160  1.1  christos d_lib_common_%.o: $(LIB_SRCDIR)/common/%.c
    161  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    162  1.1  christos 
    163  1.1  christos d_lib_compress_%.o: $(LIB_SRCDIR)/compress/%.c
    164  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    165  1.1  christos 
    166  1.1  christos d_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.c
    167  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    168  1.1  christos 
    169  1.1  christos d_lib_decompress_%.o: $(LIB_SRCDIR)/decompress/%.S
    170  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_ASFLAGS) $< -c -o $@
    171  1.1  christos 
    172  1.1  christos d_lib_dictBuilder_%.o: $(LIB_SRCDIR)/dictBuilder/%.c
    173  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    174  1.1  christos 
    175  1.1  christos d_lib_legacy_%.o: $(LIB_SRCDIR)/legacy/%.c
    176  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    177  1.1  christos 
    178  1.1  christos d_prg_%.o: $(PRGDIR)/%.c
    179  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    180  1.1  christos 
    181  1.1  christos d_fuzz_%.o: %.c
    182  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    183  1.1  christos 
    184  1.1  christos d_default_seq_prod_%.o: $(DEFAULT_SEQ_PROD_DIR)/%.c
    185  1.1  christos 	$(CC) $(FUZZ_CPPFLAGS) $(FUZZ_CFLAGS) $< -c -o $@
    186  1.1  christos 
    187  1.1  christos simple_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_round_trip.o
    188  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    189  1.1  christos 
    190  1.1  christos stream_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_stream_round_trip.o
    191  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_stream_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    192  1.1  christos 
    193  1.1  christos block_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_block_round_trip.o
    194  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_block_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    195  1.1  christos 
    196  1.1  christos simple_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_simple_decompress.o
    197  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_simple_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    198  1.1  christos 
    199  1.1  christos stream_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_stream_decompress.o
    200  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_stream_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    201  1.1  christos 
    202  1.1  christos block_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_block_decompress.o
    203  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_block_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    204  1.1  christos 
    205  1.1  christos dictionary_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_round_trip.o
    206  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    207  1.1  christos 
    208  1.1  christos raw_dictionary_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_raw_dictionary_round_trip.o
    209  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_raw_dictionary_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    210  1.1  christos 
    211  1.1  christos dictionary_stream_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_stream_round_trip.o
    212  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_stream_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    213  1.1  christos 
    214  1.1  christos dictionary_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_dictionary_decompress.o
    215  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_dictionary_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    216  1.1  christos 
    217  1.1  christos simple_compress: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_compress.o
    218  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_simple_compress.o $(LIB_FUZZING_ENGINE) -o $@
    219  1.1  christos 
    220  1.1  christos zstd_frame_info: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_zstd_frame_info.o
    221  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_zstd_frame_info.o $(LIB_FUZZING_ENGINE) -o $@
    222  1.1  christos 
    223  1.1  christos dictionary_loader: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_loader.o
    224  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_dictionary_loader.o $(LIB_FUZZING_ENGINE) -o $@
    225  1.1  christos 
    226  1.1  christos decompress_dstSize_tooSmall: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_dstSize_tooSmall.o
    227  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_dstSize_tooSmall.o $(LIB_FUZZING_ENGINE) -o $@
    228  1.1  christos 
    229  1.1  christos fse_read_ncount: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_fse_read_ncount.o
    230  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_fse_read_ncount.o $(LIB_FUZZING_ENGINE) -o $@
    231  1.1  christos 
    232  1.1  christos sequence_compression_api: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_sequence_compression_api.o
    233  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_sequence_compression_api.o $(LIB_FUZZING_ENGINE) -o $@
    234  1.1  christos 
    235  1.1  christos seekable_roundtrip: $(FUZZ_HEADERS) $(SEEKABLE_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) $(SEEKABLE_OBJS)  rt_fuzz_seekable_roundtrip.o
    236  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) $(SEEKABLE_OBJS) rt_fuzz_seekable_roundtrip.o $(LIB_FUZZING_ENGINE) -o $@
    237  1.1  christos 
    238  1.1  christos huf_round_trip: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_huf_round_trip.o
    239  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_huf_round_trip.o $(LIB_FUZZING_ENGINE) -o $@
    240  1.1  christos 
    241  1.1  christos huf_decompress: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_huf_decompress.o
    242  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_huf_decompress.o $(LIB_FUZZING_ENGINE) -o $@
    243  1.1  christos 
    244  1.1  christos decompress_cross_format: $(FUZZ_HEADERS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_cross_format.o
    245  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_DECOMPRESS_OBJ) d_fuzz_decompress_cross_format.o $(LIB_FUZZING_ENGINE) -o $@
    246  1.1  christos 
    247  1.1  christos generate_sequences: $(FUZZ_HEADERS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_generate_sequences.o
    248  1.1  christos 	$(CXX) $(FUZZ_TARGET_FLAGS) $(FUZZ_ROUND_TRIP_OBJ) rt_fuzz_generate_sequences.o $(LIB_FUZZING_ENGINE) -o $@
    249  1.1  christos 
    250  1.1  christos libregression.a: $(FUZZ_HEADERS) $(PRGDIR)/util.h $(PRGDIR)/util.c d_fuzz_regression_driver.o
    251  1.1  christos 	$(AR) $(FUZZ_ARFLAGS) $@ d_fuzz_regression_driver.o
    252  1.1  christos 
    253  1.1  christos corpora/%_seed_corpus.zip:
    254  1.1  christos 	@mkdir -p corpora
    255  1.1  christos 	$(DOWNLOAD) $@ $(CORPORA_URL_PREFIX)$*_seed_corpus.zip
    256  1.1  christos 
    257  1.1  christos corpora/%: corpora/%_seed_corpus.zip
    258  1.1  christos 	unzip -q $^ -d $@
    259  1.1  christos 
    260  1.1  christos .PHONY: corpora
    261  1.1  christos corpora: $(patsubst %,corpora/%,$(FUZZ_TARGETS))
    262  1.1  christos 
    263  1.1  christos .PHONY: seedcorpora
    264  1.1  christos seedcorpora: $(patsubst %,corpora/%_seed_corpus.zip,$(FUZZ_TARGETS))
    265  1.1  christos 
    266  1.1  christos regressiontest: corpora
    267  1.1  christos 	CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" $(PYTHON) ./fuzz.py build all --debug=$(DEBUGLEVEL)
    268  1.1  christos 	$(PYTHON) ./fuzz.py regression all
    269  1.1  christos 
    270  1.1  christos clean:
    271  1.1  christos 	@$(RM) *.a *.o $(FUZZ_TARGETS)
    272  1.1  christos 	@echo Cleaning completed
    273  1.1  christos 
    274  1.1  christos cleanall:
    275  1.1  christos 	@$(RM) -r Fuzzer
    276  1.1  christos 	@$(RM) -r corpora
    277  1.1  christos 	@echo Cleaning completed
    278