1*481dde66SAndroid Build Coastguard Worker#!/bin/bash 2*481dde66SAndroid Build Coastguard Worker# 3*481dde66SAndroid Build Coastguard Worker# Copyright 2020, Google Inc. 4*481dde66SAndroid Build Coastguard Worker# All rights reserved. 5*481dde66SAndroid Build Coastguard Worker# 6*481dde66SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 7*481dde66SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are 8*481dde66SAndroid Build Coastguard Worker# met: 9*481dde66SAndroid Build Coastguard Worker# 10*481dde66SAndroid Build Coastguard Worker# * Redistributions of source code must retain the above copyright 11*481dde66SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 12*481dde66SAndroid Build Coastguard Worker# * Redistributions in binary form must reproduce the above 13*481dde66SAndroid Build Coastguard Worker# copyright notice, this list of conditions and the following disclaimer 14*481dde66SAndroid Build Coastguard Worker# in the documentation and/or other materials provided with the 15*481dde66SAndroid Build Coastguard Worker# distribution. 16*481dde66SAndroid Build Coastguard Worker# * Neither the name of Google Inc. nor the names of its 17*481dde66SAndroid Build Coastguard Worker# contributors may be used to endorse or promote products derived from 18*481dde66SAndroid Build Coastguard Worker# this software without specific prior written permission. 19*481dde66SAndroid Build Coastguard Worker# 20*481dde66SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21*481dde66SAndroid Build Coastguard Worker# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22*481dde66SAndroid Build Coastguard Worker# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23*481dde66SAndroid Build Coastguard Worker# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24*481dde66SAndroid Build Coastguard Worker# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25*481dde66SAndroid Build Coastguard Worker# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26*481dde66SAndroid Build Coastguard Worker# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27*481dde66SAndroid Build Coastguard Worker# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28*481dde66SAndroid Build Coastguard Worker# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29*481dde66SAndroid Build Coastguard Worker# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30*481dde66SAndroid Build Coastguard Worker# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31*481dde66SAndroid Build Coastguard Worker 32*481dde66SAndroid Build Coastguard Workerset -euox pipefail 33*481dde66SAndroid Build Coastguard Worker 34*481dde66SAndroid Build Coastguard Workerif [[ -z ${GTEST_ROOT:-} ]]; then 35*481dde66SAndroid Build Coastguard Worker GTEST_ROOT="$(realpath $(dirname ${0})/..)" 36*481dde66SAndroid Build Coastguard Workerfi 37*481dde66SAndroid Build Coastguard Worker 38*481dde66SAndroid Build Coastguard Worker# Test the CMake build 39*481dde66SAndroid Build Coastguard Workerfor cmake_off_on in OFF ON; do 40*481dde66SAndroid Build Coastguard Worker BUILD_DIR=$(mktemp -d build_dir.XXXXXXXX) 41*481dde66SAndroid Build Coastguard Worker cd ${BUILD_DIR} 42*481dde66SAndroid Build Coastguard Worker time cmake ${GTEST_ROOT} \ 43*481dde66SAndroid Build Coastguard Worker -DCMAKE_CXX_STANDARD=14 \ 44*481dde66SAndroid Build Coastguard Worker -Dgtest_build_samples=ON \ 45*481dde66SAndroid Build Coastguard Worker -Dgtest_build_tests=ON \ 46*481dde66SAndroid Build Coastguard Worker -Dgmock_build_tests=ON \ 47*481dde66SAndroid Build Coastguard Worker -Dcxx_no_exception=${cmake_off_on} \ 48*481dde66SAndroid Build Coastguard Worker -Dcxx_no_rtti=${cmake_off_on} 49*481dde66SAndroid Build Coastguard Worker time make 50*481dde66SAndroid Build Coastguard Worker time ctest -j$(nproc) --output-on-failure 51*481dde66SAndroid Build Coastguard Workerdone 52*481dde66SAndroid Build Coastguard Worker 53*481dde66SAndroid Build Coastguard Worker# Test the Bazel build 54*481dde66SAndroid Build Coastguard Worker 55*481dde66SAndroid Build Coastguard Worker# If we are running on Kokoro, check for a versioned Bazel binary. 56*481dde66SAndroid Build Coastguard WorkerKOKORO_GFILE_BAZEL_BIN="bazel-7.0.0-darwin-x86_64" 57*481dde66SAndroid Build Coastguard Workerif [[ ${KOKORO_GFILE_DIR:-} ]] && [[ -f ${KOKORO_GFILE_DIR}/${KOKORO_GFILE_BAZEL_BIN} ]]; then 58*481dde66SAndroid Build Coastguard Worker BAZEL_BIN="${KOKORO_GFILE_DIR}/${KOKORO_GFILE_BAZEL_BIN}" 59*481dde66SAndroid Build Coastguard Worker chmod +x ${BAZEL_BIN} 60*481dde66SAndroid Build Coastguard Workerelse 61*481dde66SAndroid Build Coastguard Worker BAZEL_BIN="bazel" 62*481dde66SAndroid Build Coastguard Workerfi 63*481dde66SAndroid Build Coastguard Worker 64*481dde66SAndroid Build Coastguard Workercd ${GTEST_ROOT} 65*481dde66SAndroid Build Coastguard Workerfor absl in 0 1; do 66*481dde66SAndroid Build Coastguard Worker ${BAZEL_BIN} test ... \ 67*481dde66SAndroid Build Coastguard Worker --copt="-Wall" \ 68*481dde66SAndroid Build Coastguard Worker --copt="-Werror" \ 69*481dde66SAndroid Build Coastguard Worker --copt="-Wundef" \ 70*481dde66SAndroid Build Coastguard Worker --cxxopt="-std=c++14" \ 71*481dde66SAndroid Build Coastguard Worker --define="absl=${absl}" \ 72*481dde66SAndroid Build Coastguard Worker --enable_bzlmod=true \ 73*481dde66SAndroid Build Coastguard Worker --features=external_include_paths \ 74*481dde66SAndroid Build Coastguard Worker --keep_going \ 75*481dde66SAndroid Build Coastguard Worker --show_timestamps \ 76*481dde66SAndroid Build Coastguard Worker --test_output=errors 77*481dde66SAndroid Build Coastguard Workerdone 78