comparison dep/fmt/test/fuzzing/build.sh @ 343:1faa72660932

*: transfer back to cmake from autotools autotools just made lots of things more complicated than they should have and many things broke (i.e. translations)
author Paper <paper@paper.us.eu.org>
date Thu, 20 Jun 2024 05:56:06 -0400
parents
children
comparison
equal deleted inserted replaced
342:adb79bdde329 343:1faa72660932
1 #!/bin/sh
2 #
3 # Creates fuzzer builds of various kinds
4 # - oss-fuzz emulated mode (makes sure a simulated invocation by oss-fuzz works)
5 # - libFuzzer build (you will need clang)
6 # - afl build (you will need afl)
7 #
8 #
9 # Copyright (c) 2019 Paul Dreik
10 #
11 # For the license information refer to format.h.
12
13 set -e
14 me=$(basename $0)
15 root=$(readlink -f "$(dirname "$0")/../..")
16
17
18 echo $me: root=$root
19
20 here=$(pwd)
21
22 CXXFLAGSALL="-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION= -g"
23 CMAKEFLAGSALL="$root -GNinja -DCMAKE_BUILD_TYPE=Debug -DFMT_DOC=Off -DFMT_TEST=Off -DFMT_FUZZ=On -DCMAKE_CXX_STANDARD=17"
24
25 CLANG=clang++-11
26
27 # For performance analysis of the fuzzers.
28 builddir=$here/build-fuzzers-perfanalysis
29 mkdir -p $builddir
30 cd $builddir
31 CXX="ccache g++" CXXFLAGS="$CXXFLAGSALL -g" cmake \
32 $CMAKEFLAGSALL \
33 -DFMT_FUZZ_LINKMAIN=On \
34 -DCMAKE_BUILD_TYPE=Release
35
36 cmake --build $builddir
37
38 # Builds the fuzzers as oss-fuzz does.
39 builddir=$here/build-fuzzers-ossfuzz
40 mkdir -p $builddir
41 cd $builddir
42 CXX=$CLANG \
43 CXXFLAGS="$CXXFLAGSALL -fsanitize=fuzzer-no-link" cmake \
44 cmake $CMAKEFLAGSALL \
45 -DFMT_FUZZ_LINKMAIN=Off \
46 -DFMT_FUZZ_LDFLAGS="-fsanitize=fuzzer"
47
48 cmake --build $builddir
49
50
51 # Builds fuzzers for local fuzzing with libfuzzer with asan+usan.
52 builddir=$here/build-fuzzers-libfuzzer
53 mkdir -p $builddir
54 cd $builddir
55 CXX=$CLANG \
56 CXXFLAGS="$CXXFLAGSALL -fsanitize=fuzzer-no-link,address,undefined" cmake \
57 cmake $CMAKEFLAGSALL \
58 -DFMT_FUZZ_LINKMAIN=Off \
59 -DFMT_FUZZ_LDFLAGS="-fsanitize=fuzzer"
60
61 cmake --build $builddir
62
63 # Builds a fast fuzzer for making coverage fast.
64 builddir=$here/build-fuzzers-fast
65 mkdir -p $builddir
66 cd $builddir
67 CXX=$CLANG \
68 CXXFLAGS="$CXXFLAGSALL -fsanitize=fuzzer-no-link -O3" cmake \
69 cmake $CMAKEFLAGSALL \
70 -DFMT_FUZZ_LINKMAIN=Off \
71 -DFMT_FUZZ_LDFLAGS="-fsanitize=fuzzer" \
72 -DCMAKE_BUILD_TYPE=Release
73
74 cmake --build $builddir
75
76
77 # Builds fuzzers for local fuzzing with afl.
78 builddir=$here/build-fuzzers-afl
79 mkdir -p $builddir
80 cd $builddir
81 CXX="afl-g++" \
82 CXXFLAGS="$CXXFLAGSALL -fsanitize=address,undefined" \
83 cmake $CMAKEFLAGSALL \
84 -DFMT_FUZZ_LINKMAIN=On
85
86 cmake --build $builddir
87
88
89 echo $me: all good
90