@@ -39,32 +39,31 @@ import testing ;
3939] ;
4040
4141local corpus.tar = [ glob-ex . : corpus.tar ] ;
42+ local test-corpus ;
4243if $(corpus.tar)
4344{
4445 # if an old corpus exists, use it
45- # get it with curl -O --location -J https://bintray.com/pauldreik/boost.json/download_file?file_path=corpus%2Fcorpus.tar
4646 make old-corpus
4747 : $(corpus.tar)
4848 : @untar-corpus
4949 : <location>oldcorpus
5050 ;
51+ explicit old-corpus ;
5152}
5253else
5354{
54- alias old -corpus ;
55+ test -corpus = [ glob-tree-ex ../test : *.json ] ;
5556}
56- explicit old-corpus ;
57-
58-
59- local initial-corpus = [ glob-tree-ex ../test : *.json ] ;
6057
58+ local old-runs = [ SORT [ glob-tree-ex old_crashes : * ] ] ;
59+ make old_crashes : : common.MkDir : <location>. ;
60+ explicit old_crashes ;
6161
6262local variants = basic_parser parse parser direct_parse ;
6363for local variant in basic_parser parse parser direct_parse
6464{
6565 local $(variant)-runs ;
6666 local fuzzer = fuzzer_$(variant) ;
67- lib $(fuzzer) : fuzz_$(variant).cpp /boost/json//boost_json ;
6867 exe $(fuzzer)
6968 : fuzz_$(variant).cpp /boost/json//json_sources
7069 : requirements
@@ -73,44 +72,44 @@ for local variant in basic_parser parse parser direct_parse
7372 ;
7473
7574 # make sure the old crashes pass without problems
76- local old-runs = [ glob-tree-ex old_crashes/$(variant) : * ] ;
7775 if $(old-runs)
7876 {
7977 run $(fuzzer)
8078 : target-name $(variant)-run-crashes
81- : input-files [ SORT $(old-runs) ]
79+ : input-files $(old-runs)
8280 ;
81+ explicit $(variant)-run-crashes ;
8382 $(variant)-runs += $(variant)-run-crashes ;
8483 }
8584
86- make oldcorpus/$(variant)
87- : old-corpus
88- : common.MkDir
89- : <location>.
90- ;
91- explicit oldcorpus/$(variant) ;
92-
93- # make an initial corpus from the test data already in the repo
94- local seed-corpus ;
95- for file in $(initial-corpus)
85+ local old-corpus-deps ;
86+ if $(corpus.tar)
9687 {
97- local copied = $(variant)/$(file:D=) ;
98- make $(copied) : $(file) : common.copy : <location>seedcorpus ;
99- explicit $(copied) ;
100- seed-corpus += $(copied) ;
88+ old-corpus-deps = old-corpus ;
10189 }
102- make seedcorpus/$(variant)
103- : $(seed-corpus)
90+ else
91+ {
92+ # make an initial corpus from the test data already in the repo
93+ for file in $(test-corpus)
94+ {
95+ local copied = $(variant)/$(file:D=) ;
96+ make $(copied) : $(file) : common.copy : <location>oldcorpus ;
97+ explicit $(copied) ;
98+ old-corpus-deps += $(copied) ;
99+ }
100+ }
101+ make oldcorpus/$(variant)
102+ : $(old-corpus-deps)
104103 : common.MkDir
105104 : <location>.
106105 ;
107- explicit seedcorpus /$(variant) ;
106+ explicit oldcorpus /$(variant) ;
108107
109108 # run the fuzzer for a short while
110109 make out/$(variant)
111110 : $(fuzzer)
112111 oldcorpus/$(variant)
113- seedcorpus/$(variant)
112+ old_crashes
114113 : @run-fuzzer
115114 : <location>.
116115 <flags>$(.MAXTIME)
@@ -122,8 +121,9 @@ for local variant in basic_parser parse parser direct_parse
122121 # minimize the corpus
123122 make cmin/$(variant)
124123 : $(fuzzer)
125- oldcorpus/$(variant)
126124 out/$(variant)
125+ oldcorpus/$(variant)
126+ old_crashes
127127 : @run-fuzzer
128128 : <location>.
129129 <flags>-merge=1
@@ -178,7 +178,7 @@ rule run-fuzzer ( target : sources * : props * )
178178actions run-fuzzer
179179{
180180 $(.UBSAN_OPTIONS)
181- $(>[1]) $(<) $(>[2]) $(>[3 ]) $(FLAGS)
181+ $(>[1]) $(<) $(>[2- ]) $(FLAGS)
182182}
183183
184184.TOUCH_FILE = [ common.file-touch-command ] ;
0 commit comments