@@ -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