contrib/fuzz/Makefile
author C. Masloch <pushbx@ulukai.org>
Wed, 20 Apr 2022 19:24:39 +0200
changeset 49449 cfff73cab721
parent 46818 1977495dbbe2
permissions -rw-r--r--
rebase: add boolean config item rebase.store-source This allows to use rebase without recording a rebase_source extra field. This is useful for example to build a mirror converted from another SCM (such as svn) by converting only new revisions, and then incrementally add them to the destination by pulling from the newly converted (unrelated) repo and rebasing the new revisions onto the last old already stored changeset. Without this patch the rebased changesets would always receive some rebase_source that would depend on the particular history of the conversion process, instead of only depending on the original source revisions. This is used to implement a hg mirror repo of SvarDOS (a partially nonfree but completely redistributable DOS distribution) in the scripts at https://hg.pushbx.org/ecm/svardos.scr/ In particular, cre.sh creates an svn mirror, upd.sh recreates an entire hg repo from the svn mirror (which takes too long to do in a regular job), and akt.sh uses hg convert with the config item convert.svn.startrev to incrementally convert only the two most recent revisions already found in the mirror destination plus any possible new revisions. If any are found, the temporary repo's changesets are pulled into the destination (as changesets from an unrelated repository). Then the changesets corresponding to the new revisions are rebased onto the prior final changeset. (Finally, the two remaining duplicates of the prior head and its parent are stripped from the destination repository.) Without this patch, the particular rebase_source extra field would depend on the order and times at which akt.sh was used, instead of only depending on the source repository. In other words, whatever sequence of upd.sh and akt.sh is used at whatever times, it is desired that the final output repositories always match each other exactly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46609
25b1610f8534 fuzz: if the caller of our makefile sets CC and CXX, trust them
Augie Fackler <augie@google.com>
parents: 46259
diff changeset
     1
CC ?= clang
25b1610f8534 fuzz: if the caller of our makefile sets CC and CXX, trust them
Augie Fackler <augie@google.com>
parents: 46259
diff changeset
     2
CXX ?= clang++
38230
bf901559e647 fuzz: expand variables by make
Yuya Nishihara <yuya@tcha.org>
parents: 38175
diff changeset
     3
43813
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
     4
# By default, use our own standalone_fuzz_target_runner.
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
     5
# This runner does no fuzzing, but simply executes the inputs
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
     6
# provided via parameters.
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
     7
# Run e.g. "make all LIB_FUZZING_ENGINE=/path/to/libFuzzer.a"
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
     8
# to link the fuzzer(s) against a real fuzzing engine.
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
     9
#
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
    10
# OSS-Fuzz will define its own value for LIB_FUZZING_ENGINE.
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
    11
LIB_FUZZING_ENGINE ?= standalone_fuzz_target_runner.o
43810
53f582bee3d1 fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE
Augie Fackler <augie@google.com>
parents: 43615
diff changeset
    12
46818
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    13
# Default to Python 3.
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    14
#
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    15
# Windows ships Python 3 as `python.exe`, which may not be on PATH.  py.exe is.
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    16
ifeq ($(OS),Windows_NT)
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    17
PYTHON?=py -3
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    18
else
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    19
PYTHON?=python3
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    20
endif
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    21
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
    22
PYTHON_CONFIG ?= $$OUT/sanpy/bin/python-config
46259
4e85439c1760 fuzz: fix Makefile default PYTHON_CONFIG_FLAGS to be modern
Augie Fackler <augie@google.com>
parents: 44962
diff changeset
    23
PYTHON_CONFIG_FLAGS ?= --ldflags --embed
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
    24
43811
d1587fadff06 fuzz: suppress deprecated-register warnings in our compile
Augie Fackler <augie@google.com>
parents: 43810
diff changeset
    25
CXXFLAGS += -Wno-deprecated-register
d1587fadff06 fuzz: suppress deprecated-register warnings in our compile
Augie Fackler <augie@google.com>
parents: 43810
diff changeset
    26
43815
19da643dc10c tests: finally fix up test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 43813
diff changeset
    27
all: standalone_fuzz_target_runner.o oss-fuzz
38231
4dd3b6c68f96 fuzz: fix the default make target
Yuya Nishihara <yuya@tcha.org>
parents: 38230
diff changeset
    28
43813
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
    29
standalone_fuzz_target_runner.o: standalone_fuzz_target_runner.cc
5a9e2ae9899b fuzz: use a more standard approach to allow local builds of fuzzers
Augie Fackler <augie@google.com>
parents: 43812
diff changeset
    30
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
    31
$$OUT/%_fuzzer_seed_corpus.zip: %_corpus.py
46818
1977495dbbe2 fuzz: use Python 3 in makefile
Martin von Zweigbergk <martinvonz@google.com>
parents: 46609
diff changeset
    32
	$(PYTHON) $< $@
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
    33
41013
ef103c96ed33 fuzz: extract Python initialization to utility package
Augie Fackler <augie@google.com>
parents: 41012
diff changeset
    34
pyutil.o: pyutil.cc pyutil.h
ef103c96ed33 fuzz: extract Python initialization to utility package
Augie Fackler <augie@google.com>
parents: 41012
diff changeset
    35
	$(CXX) $(CXXFLAGS) -g -O1 \
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
    36
	  `$(PYTHON_CONFIG) --cflags` \
41013
ef103c96ed33 fuzz: extract Python initialization to utility package
Augie Fackler <augie@google.com>
parents: 41012
diff changeset
    37
	  -I../../mercurial -c -o pyutil.o pyutil.cc
ef103c96ed33 fuzz: extract Python initialization to utility package
Augie Fackler <augie@google.com>
parents: 41012
diff changeset
    38
35670
2b9e2415f5b5 contrib: add some basic scaffolding for some fuzz test targets
Augie Fackler <augie@google.com>
parents:
diff changeset
    39
bdiff-oss-fuzz.o: ../../mercurial/bdiff.c
38230
bf901559e647 fuzz: expand variables by make
Yuya Nishihara <yuya@tcha.org>
parents: 38175
diff changeset
    40
	$(CC) $(CFLAGS) -c -o bdiff-oss-fuzz.o ../../mercurial/bdiff.c
35670
2b9e2415f5b5 contrib: add some basic scaffolding for some fuzz test targets
Augie Fackler <augie@google.com>
parents:
diff changeset
    41
43615
6f5c352f41b6 fuzz: clean out most of fuzzutil
Augie Fackler <augie@google.com>
parents: 43153
diff changeset
    42
bdiff_fuzzer: bdiff.cc bdiff-oss-fuzz.o
38230
bf901559e647 fuzz: expand variables by make
Yuya Nishihara <yuya@tcha.org>
parents: 38175
diff changeset
    43
	$(CXX) $(CXXFLAGS) -std=c++17 -I../../mercurial bdiff.cc \
43810
53f582bee3d1 fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE
Augie Fackler <augie@google.com>
parents: 43615
diff changeset
    44
	  bdiff-oss-fuzz.o $(LIB_FUZZING_ENGINE) -o \
38174
36d55f90e2a3 fuzzutil: make it possible to use absl when C++17 isn't supported
Augie Fackler <augie@google.com>
parents: 38173
diff changeset
    45
	  $$OUT/bdiff_fuzzer
35670
2b9e2415f5b5 contrib: add some basic scaffolding for some fuzz test targets
Augie Fackler <augie@google.com>
parents:
diff changeset
    46
38246
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    47
mpatch.o: ../../mercurial/mpatch.c
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    48
	$(CC) -g -O1 -fsanitize=fuzzer-no-link,address -c -o mpatch.o \
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    49
	  ../../mercurial/mpatch.c
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    50
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    51
mpatch-oss-fuzz.o: ../../mercurial/mpatch.c
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    52
	$(CC) $(CFLAGS) -c -o mpatch-oss-fuzz.o ../../mercurial/mpatch.c
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    53
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
    54
mpatch_fuzzer: mpatch.cc mpatch-oss-fuzz.o $$OUT/mpatch_fuzzer_seed_corpus.zip
38246
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    55
	$(CXX) $(CXXFLAGS) -std=c++17 -I../../mercurial mpatch.cc \
43810
53f582bee3d1 fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE
Augie Fackler <augie@google.com>
parents: 43615
diff changeset
    56
	  mpatch-oss-fuzz.o $(LIB_FUZZING_ENGINE) -o \
38246
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    57
	  $$OUT/mpatch_fuzzer
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
    58
36679
624cbd1477a6 fuzz: add a fuzzer for xdiff
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
    59
fuzz-x%.o: ../../mercurial/thirdparty/xdiff/x%.c ../../mercurial/thirdparty/xdiff/*.h
38230
bf901559e647 fuzz: expand variables by make
Yuya Nishihara <yuya@tcha.org>
parents: 38175
diff changeset
    60
	$(CC) $(CFLAGS) -c \
36679
624cbd1477a6 fuzz: add a fuzzer for xdiff
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
    61
	  -o $@ \
624cbd1477a6 fuzz: add a fuzzer for xdiff
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
    62
	  $<
624cbd1477a6 fuzz: add a fuzzer for xdiff
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
    63
43615
6f5c352f41b6 fuzz: clean out most of fuzzutil
Augie Fackler <augie@google.com>
parents: 43153
diff changeset
    64
xdiff_fuzzer: xdiff.cc fuzz-xdiffi.o fuzz-xprepare.o fuzz-xutils.o 
38230
bf901559e647 fuzz: expand variables by make
Yuya Nishihara <yuya@tcha.org>
parents: 38175
diff changeset
    65
	$(CXX) $(CXXFLAGS) -std=c++17 -I../../mercurial xdiff.cc \
43615
6f5c352f41b6 fuzz: clean out most of fuzzutil
Augie Fackler <augie@google.com>
parents: 43153
diff changeset
    66
	  fuzz-xdiffi.o fuzz-xprepare.o fuzz-xutils.o \
43810
53f582bee3d1 fuzz: follow modern guidelines and use LIB_FUZZING_ENGINE
Augie Fackler <augie@google.com>
parents: 43615
diff changeset
    67
	  $(LIB_FUZZING_ENGINE) -o $$OUT/xdiff_fuzzer
36679
624cbd1477a6 fuzz: add a fuzzer for xdiff
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
    68
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    69
parsers-%.o: ../../mercurial/cext/%.c
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    70
	$(CC) -I../../mercurial `$(PYTHON_CONFIG) --cflags` $(CFLAGS) -c \
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    71
	  -o $@ $<
40053
8c692a6b5ad1 fuzz: new fuzzer for cext/manifest.c
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
    72
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    73
PARSERS_OBJS=parsers-manifest.o parsers-charencode.o parsers-parsers.o parsers-dirs.o parsers-pathencode.o parsers-revlog.o
40053
8c692a6b5ad1 fuzz: new fuzzer for cext/manifest.c
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
    74
43844
b7af8a02a304 fuzz: add a seed corpus for the dirs fuzzer
Augie Fackler <augie@google.com>
parents: 43843
diff changeset
    75
dirs_fuzzer: dirs.cc pyutil.o $(PARSERS_OBJS) $$OUT/dirs_fuzzer_seed_corpus.zip
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
    76
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
43150
7ff40418c6bf fuzz: new fuzzer for dirs.c
Augie Fackler <augie@google.com>
parents: 41183
diff changeset
    77
	  -Wno-register -Wno-macro-redefined \
7ff40418c6bf fuzz: new fuzzer for dirs.c
Augie Fackler <augie@google.com>
parents: 41183
diff changeset
    78
	  -I../../mercurial dirs.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    79
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
    80
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
43150
7ff40418c6bf fuzz: new fuzzer for dirs.c
Augie Fackler <augie@google.com>
parents: 41183
diff changeset
    81
	  -o $$OUT/dirs_fuzzer
7ff40418c6bf fuzz: new fuzzer for dirs.c
Augie Fackler <augie@google.com>
parents: 41183
diff changeset
    82
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    83
fncache_fuzzer: fncache.cc 
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
    84
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
43152
b37dd26935ee fuzz: new fuzzer for fncache-related functions
Augie Fackler <augie@google.com>
parents: 43150
diff changeset
    85
	  -Wno-register -Wno-macro-redefined \
b37dd26935ee fuzz: new fuzzer for fncache-related functions
Augie Fackler <augie@google.com>
parents: 43150
diff changeset
    86
	  -I../../mercurial fncache.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    87
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
    88
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
43152
b37dd26935ee fuzz: new fuzzer for fncache-related functions
Augie Fackler <augie@google.com>
parents: 43150
diff changeset
    89
	  -o $$OUT/fncache_fuzzer
b37dd26935ee fuzz: new fuzzer for fncache-related functions
Augie Fackler <augie@google.com>
parents: 43150
diff changeset
    90
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    91
jsonescapeu8fast_fuzzer: jsonescapeu8fast.cc pyutil.o $(PARSERS_OBJS)
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
    92
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
43153
741fb1a95da2 fuzz: new target to fuzz jsonescapeu8fast
Augie Fackler <augie@google.com>
parents: 43152
diff changeset
    93
	  -Wno-register -Wno-macro-redefined \
741fb1a95da2 fuzz: new target to fuzz jsonescapeu8fast
Augie Fackler <augie@google.com>
parents: 43152
diff changeset
    94
	  -I../../mercurial jsonescapeu8fast.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
    95
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
    96
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
43153
741fb1a95da2 fuzz: new target to fuzz jsonescapeu8fast
Augie Fackler <augie@google.com>
parents: 43152
diff changeset
    97
	  -o $$OUT/jsonescapeu8fast_fuzzer
741fb1a95da2 fuzz: new target to fuzz jsonescapeu8fast
Augie Fackler <augie@google.com>
parents: 43152
diff changeset
    98
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
    99
manifest_fuzzer: manifest.cc pyutil.o $(PARSERS_OBJS) $$OUT/manifest_fuzzer_seed_corpus.zip
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
   100
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
40053
8c692a6b5ad1 fuzz: new fuzzer for cext/manifest.c
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
   101
	  -Wno-register -Wno-macro-redefined \
8c692a6b5ad1 fuzz: new fuzzer for cext/manifest.c
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
   102
	  -I../../mercurial manifest.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
   103
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
   104
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
40053
8c692a6b5ad1 fuzz: new fuzzer for cext/manifest.c
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
   105
	  -o $$OUT/manifest_fuzzer
8c692a6b5ad1 fuzz: new fuzzer for cext/manifest.c
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
   106
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
   107
revlog_fuzzer: revlog.cc pyutil.o $(PARSERS_OBJS) $$OUT/revlog_fuzzer_seed_corpus.zip
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
   108
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
41014
c06f0ef9a5ba fuzz: new fuzzer for revlog's parse_index2 method
Augie Fackler <augie@google.com>
parents: 41013
diff changeset
   109
	  -Wno-register -Wno-macro-redefined \
c06f0ef9a5ba fuzz: new fuzzer for revlog's parse_index2 method
Augie Fackler <augie@google.com>
parents: 41013
diff changeset
   110
	  -I../../mercurial revlog.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
   111
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
   112
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
41014
c06f0ef9a5ba fuzz: new fuzzer for revlog's parse_index2 method
Augie Fackler <augie@google.com>
parents: 41013
diff changeset
   113
	  -o $$OUT/revlog_fuzzer
c06f0ef9a5ba fuzz: new fuzzer for revlog's parse_index2 method
Augie Fackler <augie@google.com>
parents: 41013
diff changeset
   114
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
   115
dirstate_fuzzer: dirstate.cc pyutil.o $(PARSERS_OBJS) $$OUT/dirstate_fuzzer_seed_corpus.zip
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
   116
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
41015
b444407f635b fuzz: new fuzzer for dirstate parser
Augie Fackler <augie@google.com>
parents: 41014
diff changeset
   117
	  -Wno-register -Wno-macro-redefined \
b444407f635b fuzz: new fuzzer for dirstate parser
Augie Fackler <augie@google.com>
parents: 41014
diff changeset
   118
	  -I../../mercurial dirstate.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
   119
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
   120
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
41015
b444407f635b fuzz: new fuzzer for dirstate parser
Augie Fackler <augie@google.com>
parents: 41014
diff changeset
   121
	  -o $$OUT/dirstate_fuzzer
b444407f635b fuzz: new fuzzer for dirstate parser
Augie Fackler <augie@google.com>
parents: 41014
diff changeset
   122
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
   123
fm1readmarkers_fuzzer: fm1readmarkers.cc pyutil.o $(PARSERS_OBJS) $$OUT/fm1readmarkers_fuzzer_seed_corpus.zip
43812
bf0453866c80 fuzz: use a variable to allow specifying python-config to use
Augie Fackler <augie@google.com>
parents: 43811
diff changeset
   124
	$(CXX) $(CXXFLAGS) `$(PYTHON_CONFIG) --cflags` \
41024
6a951f535fee fuzz: new fuzzer for parsers.fm1readmarkers
Augie Fackler <augie@google.com>
parents: 41015
diff changeset
   125
	  -Wno-register -Wno-macro-redefined \
6a951f535fee fuzz: new fuzzer for parsers.fm1readmarkers
Augie Fackler <augie@google.com>
parents: 41015
diff changeset
   126
	  -I../../mercurial fm1readmarkers.cc \
43817
d9f85f61f0ed fuzz: clean up some repetition on building parsers.so fuzzers
Augie Fackler <augie@google.com>
parents: 43816
diff changeset
   127
	  pyutil.o $(PARSERS_OBJS) \
44962
ef8dcee272ac fuzz: add config knob for PYTHON_CONFIG_FLAGS
Augie Fackler <augie@google.com>
parents: 43844
diff changeset
   128
	  $(LIB_FUZZING_ENGINE) `$(PYTHON_CONFIG) $(PYTHON_CONFIG_FLAGS)` \
41024
6a951f535fee fuzz: new fuzzer for parsers.fm1readmarkers
Augie Fackler <augie@google.com>
parents: 41015
diff changeset
   129
	  -o $$OUT/fm1readmarkers_fuzzer
6a951f535fee fuzz: new fuzzer for parsers.fm1readmarkers
Augie Fackler <augie@google.com>
parents: 41015
diff changeset
   130
38175
fbe239064064 fuzz: add clean target
Augie Fackler <augie@google.com>
parents: 38174
diff changeset
   131
clean:
38234
9db30f438ddd fuzz: fix "make clean" to pass even if no binaries built yet
Yuya Nishihara <yuya@tcha.org>
parents: 38233
diff changeset
   132
	$(RM) *.o *_fuzzer \
38175
fbe239064064 fuzz: add clean target
Augie Fackler <augie@google.com>
parents: 38174
diff changeset
   133
	  bdiff \
38246
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38234
diff changeset
   134
	  mpatch \
38175
fbe239064064 fuzz: add clean target
Augie Fackler <augie@google.com>
parents: 38174
diff changeset
   135
	  xdiff
fbe239064064 fuzz: add clean target
Augie Fackler <augie@google.com>
parents: 38174
diff changeset
   136
43843
d74d78aa74e9 fuzz: clean up production of seed corpora
Augie Fackler <augie@google.com>
parents: 43817
diff changeset
   137
oss-fuzz: bdiff_fuzzer mpatch_fuzzer xdiff_fuzzer dirs_fuzzer fncache_fuzzer jsonescapeu8fast_fuzzer manifest_fuzzer revlog_fuzzer dirstate_fuzzer fm1readmarkers_fuzzer
35670
2b9e2415f5b5 contrib: add some basic scaffolding for some fuzz test targets
Augie Fackler <augie@google.com>
parents:
diff changeset
   138
41183
c01fac6749e5 fuzz: stop building Python in the Makefile
Augie Fackler <augie@google.com>
parents: 41024
diff changeset
   139
.PHONY: all clean oss-fuzz