File: Jamfile

package info (click to toggle)
boost1.90 1.90.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 593,120 kB
  • sloc: cpp: 4,190,908; xml: 196,648; python: 34,618; ansic: 23,145; asm: 5,468; sh: 3,774; makefile: 1,161; perl: 1,020; sql: 728; ruby: 676; yacc: 478; java: 77; lisp: 24; csh: 6
file content (67 lines) | stat: -rw-r--r-- 1,974 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#
# Copyright (c) 2019-2023 Ruben Perez Hidalgo (rubenperez038 at gmail dot com)
# Copyright (c) 2024 Matt Borland
#
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#

import common ;
import regex ;

local all_fuzzers = [ regex.replace-list
    [ glob "fuzz_*.cpp" ] : ".cpp" : ""
] ;

for local fuzzer in $(all_fuzzers)
{
    # These two fuzzers are the most complex ones. The rest are really
    # simple, so less time is enough
    local fuzz_time = 30 ;

    # Create the output corpus directories
    make /tmp/corpus/$(fuzzer) : : common.MkDir ;
    make /tmp/mincorpus/$(fuzzer) : : common.MkDir ;

    # Build the fuzzer
    exe $(fuzzer)
        :
            $(fuzzer).cpp
        : requirements
            <debug-symbols>on
            <optimization>speed
            <address-sanitizer>on
            <undefined-sanitizer>norecover
            <cxxflags>-fsanitize=fuzzer
            <linkflags>-fsanitize=fuzzer
            <library>/boost/charconv//boost_charconv
    ;

    # Make sure that any old crashes are run without problems
    local old_crashes = [ glob-tree-ex old_crashes/$(fuzzer) : * ] ;
    if $(old_crashes)
    {
        run $(fuzzer)
            : target-name $(fuzzer)-old-crashes
            : input-files [ SORT $(old_crashes) ]
        ;
    }

    # Run the fuzzer for a short while
    run $(fuzzer)
        : <testing.arg>"seedcorpus/$(fuzzer) -max_total_time=$(fuzz_time)"
        : target-name $(fuzzer)-fuzzing
        : requirements
            <dependency>/tmp/corpus/$(fuzzer)
    ;

    # Minimize the corpus
    run $(fuzzer)
        : <testing.arg>"/tmp/mincorpus/$(fuzzer) /tmp/corpus/$(fuzzer) -merge=1"
        : target-name $(fuzzer)-minimize-corpus
        : requirements
            <dependency>$(fuzzer)-fuzzing
            <dependency>/tmp/corpus/$(fuzzer)
            <dependency>/tmp/mincorpus/$(fuzzer)
    ;
}