xref: /aosp_15_r20/external/libopus/tests/random_config.sh (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
1*a58d3d2aSXin Li#!/bin/bash
2*a58d3d2aSXin Li
3*a58d3d2aSXin Lidir="$1"
4*a58d3d2aSXin Limkdir "$dir"
5*a58d3d2aSXin Liif [ $? -ne 0 ]
6*a58d3d2aSXin Lithen
7*a58d3d2aSXin Li        exit 1
8*a58d3d2aSXin Lifi
9*a58d3d2aSXin Li
10*a58d3d2aSXin Licd "$dir"
11*a58d3d2aSXin Liif [ $? -ne 0 ]
12*a58d3d2aSXin Lithen
13*a58d3d2aSXin Li        exit 1
14*a58d3d2aSXin Lifi
15*a58d3d2aSXin Li
16*a58d3d2aSXin Li
17*a58d3d2aSXin Liconfigure_path="$2"
18*a58d3d2aSXin Liconfig="random_config.txt"
19*a58d3d2aSXin Li
20*a58d3d2aSXin Licase `seq 3 | shuf -n1` in
21*a58d3d2aSXin Li1)
22*a58d3d2aSXin Liapprox=--enable-float-approx
23*a58d3d2aSXin Limath=-ffast-math
24*a58d3d2aSXin Li;;
25*a58d3d2aSXin Li2)
26*a58d3d2aSXin Liapprox=--enable-float-approx
27*a58d3d2aSXin Li;;
28*a58d3d2aSXin Li*)
29*a58d3d2aSXin Liapprox=
30*a58d3d2aSXin Limath=
31*a58d3d2aSXin Li;;
32*a58d3d2aSXin Liesac
33*a58d3d2aSXin Li
34*a58d3d2aSXin LiCFLAGS='-g'
35*a58d3d2aSXin Li
36*a58d3d2aSXin Liopt=`echo -e "-O1\n-O2\n-O3" | shuf -n1`
37*a58d3d2aSXin Li
38*a58d3d2aSXin Liarch=`echo -e "\n-march=core2\n-march=sandybridge\n-march=broadwell\n-march=skylake" | shuf -n1`
39*a58d3d2aSXin Li
40*a58d3d2aSXin Lifootprint=`echo -e "\n-DSMALL_FOOTPRINT" | shuf -n1`
41*a58d3d2aSXin Listd=`echo -e "\n-std=c90\n-std=c99\n-std=c11\n-std=c17" | shuf -n1`
42*a58d3d2aSXin Lisanitize=`echo -e "\n-fsanitize=address -fno-sanitize-recover=all\n-fsanitize=undefined -fno-sanitize-recover=all -fsanitize-recover=signed-integer-overflow -DDISABLE_PTR_CHECK" | shuf -n1`
43*a58d3d2aSXin Li
44*a58d3d2aSXin Li
45*a58d3d2aSXin LiCFLAGS="$CFLAGS $std $opt $arch $footprint $math $sanitize"
46*a58d3d2aSXin Li
47*a58d3d2aSXin Liecho "CFLAGS=$CFLAGS" > "$config"
48*a58d3d2aSXin Li
49*a58d3d2aSXin Lilib=`echo -e "\n--disable-static\n--disable-shared" | shuf -n1`
50*a58d3d2aSXin Li
51*a58d3d2aSXin Liarithmetic=`echo -e "\n--enable-deep-plc\n--enable-dred\n--enable-osce\n--enable-dred --enable-osce\n--enable-fixed-point\n--enable-fixed-point --enable-fixed-point-debug\n--enable-fixed-point --disable-float-api\n--enable-fixed-point --enable-fixed-point-debug --disable-float-api" | shuf -n1`
52*a58d3d2aSXin Li
53*a58d3d2aSXin Licustom=`echo -e "\n--enable-custom-modes" | shuf -n1`
54*a58d3d2aSXin Li
55*a58d3d2aSXin Liasm=`echo -e "\n--disable-asm\n--disable-rtcd\n--disable-intrinsics" | shuf -n1`
56*a58d3d2aSXin Li#asm=`echo -e "\n--disable-asm\n--disable-intrinsics" | shuf -n1`
57*a58d3d2aSXin Li
58*a58d3d2aSXin Liassert=`echo -e "\n--enable-assertions" | shuf -n1`
59*a58d3d2aSXin Liharden=`echo -e "\n--enable-hardening" | shuf -n1`
60*a58d3d2aSXin Lifuzz=`echo -e "\n--enable-fuzzing" | shuf -n1`
61*a58d3d2aSXin Licheckasm=`echo -e "\n--enable-check-asm" | shuf -n1`
62*a58d3d2aSXin Lirfc8251=`echo -e "\n--disable-rfc8251" | shuf -n1`
63*a58d3d2aSXin Lilossgen=`echo -e "\n--enable-lossgen" | shuf -n1`
64*a58d3d2aSXin Li
65*a58d3d2aSXin Liif [ "$rfc8251" = --disable-rfc8251 ]
66*a58d3d2aSXin Lithen
67*a58d3d2aSXin Li        vectors="$3"
68*a58d3d2aSXin Lielse
69*a58d3d2aSXin Li        vectors="$4"
70*a58d3d2aSXin Lifi
71*a58d3d2aSXin Liecho using testvectors at "$vectors" >> "$config"
72*a58d3d2aSXin Li
73*a58d3d2aSXin Li
74*a58d3d2aSXin Liconfig_opt="$lib $arithmetic $custom $asm $assert $harden $fuzz $checkasm $rfc8251 $approx $lossgen"
75*a58d3d2aSXin Li
76*a58d3d2aSXin Liecho configure $config_opt >> "$config"
77*a58d3d2aSXin Li
78*a58d3d2aSXin Liexport CFLAGS
79*a58d3d2aSXin Li"$configure_path/configure" $config_opt > configure_output.txt 2>&1
80*a58d3d2aSXin Li
81*a58d3d2aSXin Liif [ $? -ne 0 ]
82*a58d3d2aSXin Lithen
83*a58d3d2aSXin Li        echo configure FAIL >> "$config"
84*a58d3d2aSXin Li        exit 1
85*a58d3d2aSXin Lifi
86*a58d3d2aSXin Li
87*a58d3d2aSXin Limake > make_output.txt 2>&1
88*a58d3d2aSXin Li
89*a58d3d2aSXin Liif [ $? -ne 0 ]
90*a58d3d2aSXin Lithen
91*a58d3d2aSXin Li        echo make FAIL >> "$config"
92*a58d3d2aSXin Li        exit 1
93*a58d3d2aSXin Lifi
94*a58d3d2aSXin Li
95*a58d3d2aSXin Li#Run valgrind 5% of the time (minus the asan cases)
96*a58d3d2aSXin Liif [ "`seq 20 | shuf -n1`" -ne 1 -o "$sanitize" = "-fsanitize=address -fno-sanitize-recover=all" ]
97*a58d3d2aSXin Lithen
98*a58d3d2aSXin Li        make check > makecheck_output.txt 2>&1
99*a58d3d2aSXin Lielse
100*a58d3d2aSXin Li        echo valgrind enabled >> "$config"
101*a58d3d2aSXin Li        valgrind --trace-children=yes --error-exitcode=128 make check > makecheck_output.txt 2>&1
102*a58d3d2aSXin Lifi
103*a58d3d2aSXin Li
104*a58d3d2aSXin Liif [ $? -ne 0 ]
105*a58d3d2aSXin Lithen
106*a58d3d2aSXin Li        echo check FAIL >> "$config"
107*a58d3d2aSXin Li        exit 1
108*a58d3d2aSXin Lifi
109*a58d3d2aSXin Li
110*a58d3d2aSXin Li
111*a58d3d2aSXin Lirate=`echo -e "8000\n12000\n16000\n24000\n48000" | shuf -n1`
112*a58d3d2aSXin Liecho testvectors for "$rate" Hz > testvectors_output.txt
113*a58d3d2aSXin Li../../../run_vectors.sh . "$vectors" "$rate" >> testvectors_output.txt 2>&1
114*a58d3d2aSXin Li
115*a58d3d2aSXin Liif [ $? -ne 0 ]
116*a58d3d2aSXin Lithen
117*a58d3d2aSXin Li        echo testvectors FAIL >> "$config"
118*a58d3d2aSXin Li        exit 1
119*a58d3d2aSXin Lifi
120*a58d3d2aSXin Li
121*a58d3d2aSXin Liecho all tests PASS >> "$config"
122*a58d3d2aSXin Li
123*a58d3d2aSXin Li#When everything's good, do some cleaning up to save space
124*a58d3d2aSXin Limake distclean > /dev/null 2>&1
125*a58d3d2aSXin Lirm -f tmp.out
126*a58d3d2aSXin Ligzip make_output.txt
127