xref: /aosp_15_r20/external/google-fruit/extras/scripts/postsubmit-helper.sh (revision a65addddcf69f38db5b288d787b6b7571a57bb8f)
1*a65addddSAndroid Build Coastguard Worker#!/bin/bash -x
2*a65addddSAndroid Build Coastguard Worker
3*a65addddSAndroid Build Coastguard Workerset -e
4*a65addddSAndroid Build Coastguard Worker
5*a65addddSAndroid Build Coastguard Worker# This only exists in OS X, but it doesn't cause issues in Linux (the dir doesn't exist, so it's
6*a65addddSAndroid Build Coastguard Worker# ignored).
7*a65addddSAndroid Build Coastguard Workerexport PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
8*a65addddSAndroid Build Coastguard Worker
9*a65addddSAndroid Build Coastguard Workercase $COMPILER in
10*a65addddSAndroid Build Coastguard Workergcc-4.9)
11*a65addddSAndroid Build Coastguard Worker    export CC=gcc-4.9
12*a65addddSAndroid Build Coastguard Worker    export CXX=g++-4.9
13*a65addddSAndroid Build Coastguard Worker    ;;
14*a65addddSAndroid Build Coastguard Worker
15*a65addddSAndroid Build Coastguard Workergcc-5)
16*a65addddSAndroid Build Coastguard Worker    export CC=gcc-5
17*a65addddSAndroid Build Coastguard Worker    export CXX=g++-5
18*a65addddSAndroid Build Coastguard Worker    ;;
19*a65addddSAndroid Build Coastguard Worker
20*a65addddSAndroid Build Coastguard Workergcc-6)
21*a65addddSAndroid Build Coastguard Worker    export CC=gcc-6
22*a65addddSAndroid Build Coastguard Worker    export CXX=g++-6
23*a65addddSAndroid Build Coastguard Worker    ;;
24*a65addddSAndroid Build Coastguard Worker
25*a65addddSAndroid Build Coastguard Workergcc-7)
26*a65addddSAndroid Build Coastguard Worker    export CC=gcc-7
27*a65addddSAndroid Build Coastguard Worker    export CXX=g++-7
28*a65addddSAndroid Build Coastguard Worker    ;;
29*a65addddSAndroid Build Coastguard Worker
30*a65addddSAndroid Build Coastguard Workergcc-8)
31*a65addddSAndroid Build Coastguard Worker    export CC=gcc-8
32*a65addddSAndroid Build Coastguard Worker    export CXX=g++-8
33*a65addddSAndroid Build Coastguard Worker    ;;
34*a65addddSAndroid Build Coastguard Worker
35*a65addddSAndroid Build Coastguard Workergcc-9)
36*a65addddSAndroid Build Coastguard Worker    export CC=gcc-9
37*a65addddSAndroid Build Coastguard Worker    export CXX=g++-9
38*a65addddSAndroid Build Coastguard Worker    ;;
39*a65addddSAndroid Build Coastguard Worker
40*a65addddSAndroid Build Coastguard Workergcc-10)
41*a65addddSAndroid Build Coastguard Worker    export CC=gcc-10
42*a65addddSAndroid Build Coastguard Worker    export CXX=g++-10
43*a65addddSAndroid Build Coastguard Worker    ;;
44*a65addddSAndroid Build Coastguard Worker
45*a65addddSAndroid Build Coastguard Workergcc-11)
46*a65addddSAndroid Build Coastguard Worker    export CC=gcc-11
47*a65addddSAndroid Build Coastguard Worker    export CXX=g++-11
48*a65addddSAndroid Build Coastguard Worker    ;;
49*a65addddSAndroid Build Coastguard Worker
50*a65addddSAndroid Build Coastguard Workergcc-12)
51*a65addddSAndroid Build Coastguard Worker    export CC=gcc-12
52*a65addddSAndroid Build Coastguard Worker    export CXX=g++-12
53*a65addddSAndroid Build Coastguard Worker    ;;
54*a65addddSAndroid Build Coastguard Worker
55*a65addddSAndroid Build Coastguard Workergcc-13)
56*a65addddSAndroid Build Coastguard Worker    export CC=gcc-13
57*a65addddSAndroid Build Coastguard Worker    export CXX=g++-13
58*a65addddSAndroid Build Coastguard Worker    ;;
59*a65addddSAndroid Build Coastguard Worker
60*a65addddSAndroid Build Coastguard Workergcc-14)
61*a65addddSAndroid Build Coastguard Worker    export CC=gcc-14
62*a65addddSAndroid Build Coastguard Worker    export CXX=g++-14
63*a65addddSAndroid Build Coastguard Worker    ;;
64*a65addddSAndroid Build Coastguard Worker
65*a65addddSAndroid Build Coastguard Workerclang-3.5)
66*a65addddSAndroid Build Coastguard Worker    export CC=clang-3.5
67*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-3.5
68*a65addddSAndroid Build Coastguard Worker    ;;
69*a65addddSAndroid Build Coastguard Worker
70*a65addddSAndroid Build Coastguard Workerclang-3.6)
71*a65addddSAndroid Build Coastguard Worker    export CC=clang-3.6
72*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-3.6
73*a65addddSAndroid Build Coastguard Worker    ;;
74*a65addddSAndroid Build Coastguard Worker
75*a65addddSAndroid Build Coastguard Workerclang-3.7)
76*a65addddSAndroid Build Coastguard Worker    export CC=clang-3.7
77*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-3.7
78*a65addddSAndroid Build Coastguard Worker    ;;
79*a65addddSAndroid Build Coastguard Worker
80*a65addddSAndroid Build Coastguard Workerclang-3.8)
81*a65addddSAndroid Build Coastguard Worker    export CC=clang-3.8
82*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-3.8
83*a65addddSAndroid Build Coastguard Worker    ;;
84*a65addddSAndroid Build Coastguard Worker
85*a65addddSAndroid Build Coastguard Workerclang-3.9)
86*a65addddSAndroid Build Coastguard Worker    export CC=clang-3.9
87*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-3.9
88*a65addddSAndroid Build Coastguard Worker    ;;
89*a65addddSAndroid Build Coastguard Worker
90*a65addddSAndroid Build Coastguard Workerclang-4.0)
91*a65addddSAndroid Build Coastguard Worker    export CC=clang-4.0
92*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-4.0
93*a65addddSAndroid Build Coastguard Worker    ;;
94*a65addddSAndroid Build Coastguard Worker
95*a65addddSAndroid Build Coastguard Workerclang-5.0)
96*a65addddSAndroid Build Coastguard Worker    export CC=clang-5.0
97*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-5.0
98*a65addddSAndroid Build Coastguard Worker    ;;
99*a65addddSAndroid Build Coastguard Worker
100*a65addddSAndroid Build Coastguard Workerclang-6.0)
101*a65addddSAndroid Build Coastguard Worker    export CC=clang-6.0
102*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-6.0
103*a65addddSAndroid Build Coastguard Worker    ;;
104*a65addddSAndroid Build Coastguard Worker
105*a65addddSAndroid Build Coastguard Workerclang-7.0)
106*a65addddSAndroid Build Coastguard Worker    export CC=clang-7
107*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-7
108*a65addddSAndroid Build Coastguard Worker    ;;
109*a65addddSAndroid Build Coastguard Worker
110*a65addddSAndroid Build Coastguard Workerclang-8.0)
111*a65addddSAndroid Build Coastguard Worker    export CC=clang-8
112*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-8
113*a65addddSAndroid Build Coastguard Worker    ;;
114*a65addddSAndroid Build Coastguard Worker
115*a65addddSAndroid Build Coastguard Workerclang-9.0)
116*a65addddSAndroid Build Coastguard Worker    export CC=clang-9
117*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-9
118*a65addddSAndroid Build Coastguard Worker    ;;
119*a65addddSAndroid Build Coastguard Worker
120*a65addddSAndroid Build Coastguard Workerclang-10.0)
121*a65addddSAndroid Build Coastguard Worker    export CC=clang-10
122*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-10
123*a65addddSAndroid Build Coastguard Worker    ;;
124*a65addddSAndroid Build Coastguard Worker
125*a65addddSAndroid Build Coastguard Workerclang-11.0)
126*a65addddSAndroid Build Coastguard Worker    export CC=clang-11
127*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-11
128*a65addddSAndroid Build Coastguard Worker    ;;
129*a65addddSAndroid Build Coastguard Worker
130*a65addddSAndroid Build Coastguard Workerclang-12.0)
131*a65addddSAndroid Build Coastguard Worker    export CC=clang-12
132*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-12
133*a65addddSAndroid Build Coastguard Worker    ;;
134*a65addddSAndroid Build Coastguard Worker
135*a65addddSAndroid Build Coastguard Workerclang-13.0)
136*a65addddSAndroid Build Coastguard Worker    export CC=clang-13
137*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-13
138*a65addddSAndroid Build Coastguard Worker    ;;
139*a65addddSAndroid Build Coastguard Worker
140*a65addddSAndroid Build Coastguard Workerclang-14.0)
141*a65addddSAndroid Build Coastguard Worker    export CC=clang-14
142*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-14
143*a65addddSAndroid Build Coastguard Worker    ;;
144*a65addddSAndroid Build Coastguard Worker
145*a65addddSAndroid Build Coastguard Workerclang-15.0)
146*a65addddSAndroid Build Coastguard Worker    export CC=clang-15
147*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-15
148*a65addddSAndroid Build Coastguard Worker    ;;
149*a65addddSAndroid Build Coastguard Worker
150*a65addddSAndroid Build Coastguard Workerclang-16.0)
151*a65addddSAndroid Build Coastguard Worker    export CC=clang-16
152*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-16
153*a65addddSAndroid Build Coastguard Worker    ;;
154*a65addddSAndroid Build Coastguard Worker
155*a65addddSAndroid Build Coastguard Workerclang-17.0)
156*a65addddSAndroid Build Coastguard Worker    export CC=clang-17
157*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-17
158*a65addddSAndroid Build Coastguard Worker    ;;
159*a65addddSAndroid Build Coastguard Worker
160*a65addddSAndroid Build Coastguard Workerclang-18.0)
161*a65addddSAndroid Build Coastguard Worker    export CC=clang-18
162*a65addddSAndroid Build Coastguard Worker    export CXX=clang++-18
163*a65addddSAndroid Build Coastguard Worker    ;;
164*a65addddSAndroid Build Coastguard Worker
165*a65addddSAndroid Build Coastguard Workerclang-default)
166*a65addddSAndroid Build Coastguard Worker    export CC=clang
167*a65addddSAndroid Build Coastguard Worker    export CXX=clang++
168*a65addddSAndroid Build Coastguard Worker    ;;
169*a65addddSAndroid Build Coastguard Worker
170*a65addddSAndroid Build Coastguard Workerbazel)
171*a65addddSAndroid Build Coastguard Worker    ;;
172*a65addddSAndroid Build Coastguard Worker
173*a65addddSAndroid Build Coastguard Worker*)
174*a65addddSAndroid Build Coastguard Worker    echo "Unrecognized value of COMPILER: $COMPILER"
175*a65addddSAndroid Build Coastguard Worker    exit 1
176*a65addddSAndroid Build Coastguard Workeresac
177*a65addddSAndroid Build Coastguard Worker
178*a65addddSAndroid Build Coastguard Workerrun_make() {
179*a65addddSAndroid Build Coastguard Worker  make -j$N_JOBS
180*a65addddSAndroid Build Coastguard Worker}
181*a65addddSAndroid Build Coastguard Worker
182*a65addddSAndroid Build Coastguard Workerif [[ "${COMPILER}" != "bazel" ]]
183*a65addddSAndroid Build Coastguard Workerthen
184*a65addddSAndroid Build Coastguard Worker    # This is only needed in OS X but it has no effect on Linux so we can add it unconditionally.
185*a65addddSAndroid Build Coastguard Worker    BOOST_INCLUDE_FLAG="-I /usr/local/include/boost -I /usr/local/include"
186*a65addddSAndroid Build Coastguard Worker    # -Wdtor-name (part of -pedantic) is *very* pedantic. Following that results in weird-looking code.
187*a65addddSAndroid Build Coastguard Worker    # See https://bugs.llvm.org/show_bug.cgi?id=46979.
188*a65addddSAndroid Build Coastguard Worker    COMMON_CXX_FLAGS="$STLARG $BOOST_INCLUDE_FLAG -Werror -pedantic -Wno-unknown-warning-option -Wno-dtor-name -Winvalid-pch"
189*a65addddSAndroid Build Coastguard Worker
190*a65addddSAndroid Build Coastguard Worker    echo CXX version: $($CXX --version)
191*a65addddSAndroid Build Coastguard Worker    echo C++ Standard library location: $(echo '#include <vector>' | $CXX -x c++ -E - | grep 'vector\"' | awk '{print $3}' | sed 's@/vector@@;s@\"@@g' | head -n 1)
192*a65addddSAndroid Build Coastguard Worker    echo Normalized C++ Standard library location: $(readlink -f $(echo '#include <vector>' | $CXX -x c++ -E - | grep 'vector\"' | awk '{print $3}' | sed 's@/vector@@;s@\"@@g' | head -n 1))
193*a65addddSAndroid Build Coastguard Worker
194*a65addddSAndroid Build Coastguard Worker    case "$1" in
195*a65addddSAndroid Build Coastguard Worker    DebugPlain)                      CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2") ;;
196*a65addddSAndroid Build Coastguard Worker    DebugPlainNoClangTidy)           CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2") ;;
197*a65addddSAndroid Build Coastguard Worker    DebugPlainNoPch)                 CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
198*a65addddSAndroid Build Coastguard Worker    DebugPlainNoPchNoClangTidy)      CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
199*a65addddSAndroid Build Coastguard Worker    DebugAsan)                       CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address") ;;
200*a65addddSAndroid Build Coastguard Worker    DebugAsanNoClangTidy)            CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address") ;;
201*a65addddSAndroid Build Coastguard Worker    DebugAsanNoPch)                  CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
202*a65addddSAndroid Build Coastguard Worker    DebugAsanNoPchNoClangTidy)       CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
203*a65addddSAndroid Build Coastguard Worker    DebugAsanUbsan)                  CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address,undefined") ;;
204*a65addddSAndroid Build Coastguard Worker    DebugAsanUbsanNoClangTidy)       CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address,undefined") ;;
205*a65addddSAndroid Build Coastguard Worker    DebugAsanUbsanNoPch)             CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address,undefined" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
206*a65addddSAndroid Build Coastguard Worker    DebugAsanUbsanNoPchNoClangTidy)  CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O0 -fsanitize=address,undefined" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
207*a65addddSAndroid Build Coastguard Worker    DebugValgrind)                   CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2"     -DRUN_TESTS_UNDER_VALGRIND=TRUE) ;;
208*a65addddSAndroid Build Coastguard Worker    DebugValgrindNoClangTidy)        CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2"     -DRUN_TESTS_UNDER_VALGRIND=TRUE) ;;
209*a65addddSAndroid Build Coastguard Worker    DebugValgrindNoPch)              CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2"     -DRUN_TESTS_UNDER_VALGRIND=TRUE -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
210*a65addddSAndroid Build Coastguard Worker    DebugValgrindNoPchNoClangTidy)   CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Debug   -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS -DFRUIT_DEBUG=1 -DFRUIT_EXTRA_DEBUG=1 -D_GLIBCXX_DEBUG=1 -O2"     -DRUN_TESTS_UNDER_VALGRIND=TRUE -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
211*a65addddSAndroid Build Coastguard Worker    ReleasePlain)                    CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS") ;;
212*a65addddSAndroid Build Coastguard Worker    ReleasePlainNoClangTidy)         CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS") ;;
213*a65addddSAndroid Build Coastguard Worker    ReleasePlainNoPch)               CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
214*a65addddSAndroid Build Coastguard Worker    ReleasePlainNoPchNoClangTidy)    CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS" -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
215*a65addddSAndroid Build Coastguard Worker    ReleaseValgrind)                 CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS" -DRUN_TESTS_UNDER_VALGRIND=TRUE) ;;
216*a65addddSAndroid Build Coastguard Worker    ReleaseValgrindNoClangTidy)      CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS" -DRUN_TESTS_UNDER_VALGRIND=TRUE) ;;
217*a65addddSAndroid Build Coastguard Worker    ReleaseValgrindNoPch)            CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=TRUE  -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS" -DRUN_TESTS_UNDER_VALGRIND=TRUE -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
218*a65addddSAndroid Build Coastguard Worker    ReleaseValgrindNoPchNoClangTidy) CMAKE_ARGS=(-DCMAKE_BUILD_TYPE=Release -DFRUIT_ENABLE_CLANG_TIDY=FALSE -DCMAKE_CXX_FLAGS="$COMMON_CXX_FLAGS" -DRUN_TESTS_UNDER_VALGRIND=TRUE -DFRUIT_TESTS_USE_PRECOMPILED_HEADERS=OFF) ;;
219*a65addddSAndroid Build Coastguard Worker    *) echo "Error: you need to specify one of the supported postsubmit modes (see postsubmit.sh)."; exit 1 ;;
220*a65addddSAndroid Build Coastguard Worker    esac
221*a65addddSAndroid Build Coastguard Worker    # Setting compilers only via env vars doesn't work when using recent versions of XCode.
222*a65addddSAndroid Build Coastguard Worker    CMAKE_ARGS+=(-DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX)
223*a65addddSAndroid Build Coastguard Worker
224*a65addddSAndroid Build Coastguard Worker    SOURCES_PATH="$PWD"
225*a65addddSAndroid Build Coastguard Worker
226*a65addddSAndroid Build Coastguard Worker    # This is not needed on Travis CI, but it's sometimes needed when running postsubmit.sh locally, to avoid "import
227*a65addddSAndroid Build Coastguard Worker    # file mismatch" errors.
228*a65addddSAndroid Build Coastguard Worker    rm -rf tests/__pycache__/ tests/*.pyc tests/*/__pycache__/ tests/*/*.pyc
229*a65addddSAndroid Build Coastguard Worker
230*a65addddSAndroid Build Coastguard Worker    rm -rf build
231*a65addddSAndroid Build Coastguard Worker    mkdir build
232*a65addddSAndroid Build Coastguard Worker    cd build
233*a65addddSAndroid Build Coastguard Worker    cmake .. "${CMAKE_ARGS[@]}"
234*a65addddSAndroid Build Coastguard Worker    echo
235*a65addddSAndroid Build Coastguard Worker    echo "Content of CMakeFiles/CMakeError.log:"
236*a65addddSAndroid Build Coastguard Worker    if [ -f "CMakeFiles/CMakeError.log" ]
237*a65addddSAndroid Build Coastguard Worker    then
238*a65addddSAndroid Build Coastguard Worker      cat CMakeFiles/CMakeError.log
239*a65addddSAndroid Build Coastguard Worker    fi
240*a65addddSAndroid Build Coastguard Worker    echo
241*a65addddSAndroid Build Coastguard Worker    run_make
242*a65addddSAndroid Build Coastguard Worker
243*a65addddSAndroid Build Coastguard Worker    cd examples
244*a65addddSAndroid Build Coastguard Worker    run_make
245*a65addddSAndroid Build Coastguard Worker    cd ..
246*a65addddSAndroid Build Coastguard Worker
247*a65addddSAndroid Build Coastguard Worker    cd tests
248*a65addddSAndroid Build Coastguard Worker    run_make
249*a65addddSAndroid Build Coastguard Worker
250*a65addddSAndroid Build Coastguard Worker    python3 -m pytest -n auto -r a "$SOURCES_PATH"/tests
251*a65addddSAndroid Build Coastguard Worker    cd ..
252*a65addddSAndroid Build Coastguard Worker
253*a65addddSAndroid Build Coastguard Worker    make install
254*a65addddSAndroid Build Coastguard Workerelse
255*a65addddSAndroid Build Coastguard Worker    # COMPILER=bazel
256*a65addddSAndroid Build Coastguard Worker
257*a65addddSAndroid Build Coastguard Worker    # In recent versions of Bazel (as of May 2020), --python_path is ignored unless
258*a65addddSAndroid Build Coastguard Worker    # --noincompatible_use_python_toolchains is also used.
259*a65addddSAndroid Build Coastguard Worker    # Ignoring --python_path is ok in Ubuntu 20.04 since 3.8 is the default Python there, but causes problems in docker
260*a65addddSAndroid Build Coastguard Worker    # images with older Ubuntu versions that have both 3.8 and another 3.x version installed.
261*a65addddSAndroid Build Coastguard Worker    BAZEL_FLAGS=("--python_path=$(which python3.8)" "--noincompatible_use_python_toolchains")
262*a65addddSAndroid Build Coastguard Worker    case "$1" in
263*a65addddSAndroid Build Coastguard Worker    DebugPlain)      ;;
264*a65addddSAndroid Build Coastguard Worker    ReleasePlain)    BAZEL_FLAGS+=("-c" "opt") ;;
265*a65addddSAndroid Build Coastguard Worker    *) echo "Error: you need to specify one of the supported postsubmit modes (see postsubmit.sh)."; exit 1 ;;
266*a65addddSAndroid Build Coastguard Worker    esac
267*a65addddSAndroid Build Coastguard Worker
268*a65addddSAndroid Build Coastguard Worker    cd extras/bazel_root/third_party/fruit
269*a65addddSAndroid Build Coastguard Worker    bazel build "${BAZEL_FLAGS[@]}" :fruit examples/... tests/...
270*a65addddSAndroid Build Coastguard Worker    bazel test "${BAZEL_FLAGS[@]}" --test_output=errors tests/...
271*a65addddSAndroid Build Coastguard Workerfi
272