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