xref: /aosp_15_r20/external/protobuf/kokoro/macos-next/cpp/build.sh (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker#!/bin/bash -eux
2*1b3f573fSAndroid Build Coastguard Worker#
3*1b3f573fSAndroid Build Coastguard Worker# Build file to set up and run tests
4*1b3f573fSAndroid Build Coastguard Worker
5*1b3f573fSAndroid Build Coastguard Workerset -o pipefail
6*1b3f573fSAndroid Build Coastguard Worker
7*1b3f573fSAndroid Build Coastguard Workerif [[ -h /tmpfs ]] && [[ ${PWD} == /tmpfs/src ]]; then
8*1b3f573fSAndroid Build Coastguard Worker  # Workaround for internal Kokoro bug: b/227401944
9*1b3f573fSAndroid Build Coastguard Worker  cd /Volumes/BuildData/tmpfs/src
10*1b3f573fSAndroid Build Coastguard Workerfi
11*1b3f573fSAndroid Build Coastguard Worker
12*1b3f573fSAndroid Build Coastguard Worker# These vars can be changed when running manually, e.g.:
13*1b3f573fSAndroid Build Coastguard Worker#
14*1b3f573fSAndroid Build Coastguard Worker#   % BUILD_CONFIG=RelWithDebInfo path/to/build.sh
15*1b3f573fSAndroid Build Coastguard Worker
16*1b3f573fSAndroid Build Coastguard Worker# By default, build using Debug config.
17*1b3f573fSAndroid Build Coastguard Worker: ${BUILD_CONFIG:=Debug}
18*1b3f573fSAndroid Build Coastguard Worker
19*1b3f573fSAndroid Build Coastguard Worker# By default, find the sources based on this script path.
20*1b3f573fSAndroid Build Coastguard Worker: ${SOURCE_DIR:=$(cd $(dirname $0)/../../..; pwd)}
21*1b3f573fSAndroid Build Coastguard Worker
22*1b3f573fSAndroid Build Coastguard Worker# By default, put outputs under <git root>/cmake/build.
23*1b3f573fSAndroid Build Coastguard Worker: ${BUILD_DIR:=${SOURCE_DIR}/cmake/build}
24*1b3f573fSAndroid Build Coastguard Worker
25*1b3f573fSAndroid Build Coastguard Workersource ${SOURCE_DIR}/kokoro/caplog.sh
26*1b3f573fSAndroid Build Coastguard Worker
27*1b3f573fSAndroid Build Coastguard Worker#
28*1b3f573fSAndroid Build Coastguard Worker# Update submodules
29*1b3f573fSAndroid Build Coastguard Worker#
30*1b3f573fSAndroid Build Coastguard Workergit -C "${SOURCE_DIR}" submodule update --init --recursive
31*1b3f573fSAndroid Build Coastguard Worker
32*1b3f573fSAndroid Build Coastguard Worker#
33*1b3f573fSAndroid Build Coastguard Worker# Configure and build in a separate directory
34*1b3f573fSAndroid Build Coastguard Worker#
35*1b3f573fSAndroid Build Coastguard Workermkdir -p "${BUILD_DIR}"
36*1b3f573fSAndroid Build Coastguard Worker
37*1b3f573fSAndroid Build Coastguard Workercaplog 01_configure \
38*1b3f573fSAndroid Build Coastguard Worker  cmake -S "${SOURCE_DIR}" -B "${BUILD_DIR}" ${CAPLOG_CMAKE_ARGS:-}
39*1b3f573fSAndroid Build Coastguard Worker
40*1b3f573fSAndroid Build Coastguard Workerif [[ -n ${CAPLOG_DIR:-} ]]; then
41*1b3f573fSAndroid Build Coastguard Worker  mkdir -p "${CAPLOG_DIR}/CMakeFiles"
42*1b3f573fSAndroid Build Coastguard Worker  cp "${BUILD_DIR}"/CMakeFiles/CMake*.log "${CAPLOG_DIR}/CMakeFiles"
43*1b3f573fSAndroid Build Coastguard Workerfi
44*1b3f573fSAndroid Build Coastguard Worker
45*1b3f573fSAndroid Build Coastguard Workercaplog 02_build \
46*1b3f573fSAndroid Build Coastguard Worker  cmake --build "${BUILD_DIR}" --config "${BUILD_CONFIG}"
47*1b3f573fSAndroid Build Coastguard Worker
48*1b3f573fSAndroid Build Coastguard Worker#
49*1b3f573fSAndroid Build Coastguard Worker# Run tests
50*1b3f573fSAndroid Build Coastguard Worker#
51*1b3f573fSAndroid Build Coastguard Worker(
52*1b3f573fSAndroid Build Coastguard Worker  cd "${BUILD_DIR}"
53*1b3f573fSAndroid Build Coastguard Worker  caplog 03_combined_testlog \
54*1b3f573fSAndroid Build Coastguard Worker    ctest -C "${BUILD_CONFIG}" -j4 ${CAPLOG_CTEST_ARGS:-}
55*1b3f573fSAndroid Build Coastguard Worker)
56