blob: 8dcf5d126f4f4159a656f8e022b71b3d7540e87c [file] [log] [blame]
#!/bin/bash
# Copyright 2022 The SwiftShader Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -e # Fail on any error.
function show_cmds { set -x; }
function hide_cmds { { set +x; } 2>/dev/null; }
function task_begin {
TASK_NAME="$@"
SECONDS=0
}
function print_last_task_duration {
if [ ! -z "${TASK_NAME}" ]; then
echo "${TASK_NAME} completed in $(($SECONDS / 3600))h$((($SECONDS / 60) % 60))m$(($SECONDS % 60))s"
fi
}
function status {
echo ""
echo ""
print_last_task_duration
echo ""
echo "*****************************************************************"
echo "* $@"
echo "*****************************************************************"
echo ""
task_begin $@
}
CLONE_SRC_DIR="$(pwd)"
. /bin/using.sh # Declare the bash `using` function for configuring toolchains.
using cmake-3.17.2
using gcc-9
status "Cloning to clean source directory at '${SRC_DIR}'"
mkdir -p ${SRC_DIR}
cd ${SRC_DIR}
git clone ${CLONE_SRC_DIR} .
mkdir -p build && cd build
if [[ -z "${REACTOR_BACKEND}" ]]; then
REACTOR_BACKEND="LLVM"
fi
# Lower the amount of debug info, to reduce Kokoro build times.
SWIFTSHADER_LESS_DEBUG_INFO=1
status "Generating CMake build files"
cmake .. \
"-DCMAKE_BUILD_TYPE=${BUILD_TYPE}" \
"-DREACTOR_BACKEND=${REACTOR_BACKEND}" \
"-DSWIFTSHADER_LLVM_VERSION=${LLVM_VERSION}" \
"-DREACTOR_VERIFY_LLVM_IR=1" \
"-DSWIFTSHADER_LESS_DEBUG_INFO=${SWIFTSHADER_LESS_DEBUG_INFO}"
status "Building"
cmake --build . -- -j $(nproc)
status "Running unit tests"
cd .. # Some tests must be run from project root
build/ReactorUnitTests
build/system-unittests
build/vk-unittests
status "Building and running rr::Print unit tests"
cd build
cmake .. "-DREACTOR_ENABLE_PRINT=1"
cmake --build . --target ReactorUnitTests -- -j $(nproc)
cmake .. "-DREACTOR_ENABLE_PRINT=0"
cd ..
build/ReactorUnitTests --gtest_filter=ReactorUnitTests.Print*
status "Building and testing with REACTOR_EMIT_ASM_FILE"
cd build
cmake .. "-DREACTOR_EMIT_ASM_FILE=1"
cmake --build . --target ReactorUnitTests -- -j $(nproc)
cmake .. "-DREACTOR_EMIT_ASM_FILE=0"
cd ..
build/ReactorUnitTests --gtest_filter=ReactorUnitTests.EmitAsm
status "Building with REACTOR_EMIT_DEBUG_INFO"
cd build
cmake .. "-DREACTOR_EMIT_DEBUG_INFO=1"
cmake --build . --target ReactorUnitTests -- -j $(nproc)
cmake .. "-DREACTOR_EMIT_DEBUG_INFO=0"
cd ..
status "Building with REACTOR_EMIT_PRINT_LOCATION"
cd build
cmake .. "-DREACTOR_EMIT_PRINT_LOCATION=1"
cmake --build . --target ReactorUnitTests -- -j $(nproc)
cmake .. "-DREACTOR_EMIT_PRINT_LOCATION=0"
cd ..
status "Done"