blob: 2bef5095cf1fb5bfbf7a1b1b2248274238aaa36e [file] [log] [blame]
#!/bin/bash
set -o errexit -o nounset -o pipefail
set -o xtrace
# Calls CMake to generate build files and then run the build.
# Usage:
# generate_and_build <output directory> [<other generate args> ...]
generate_and_build() {
local folder_name=$1
shift
mkdir "${folder_name}"
(cd "${folder_name}"; cmake "$@" ..)
cmake --build "${folder_name}"
}
# Choose what to do based on OS and compiler.
case "${TRAVIS_OS_NAME}_${TRAVIS_COMPILER}" in
linux_clang)
sudo apt install "linux-headers-$(uname -r)"
generate_and_build build
;;
osx_clang)
generate_and_build build
;;
windows_*)
generate_and_build build-x64 -A x64
generate_and_build build-win32 -A Win32
;;
linux_gcc)
# Need this `apt update` for the install to succeed. Without it, the
# Travis worker only has lists for the ${distro}-security repository.
sudo apt update
sudo apt install \
"linux-headers-$(uname -r)" \
g++-i686-linux-gnu \
g++-aarch64-linux-gnu \
g++-powerpc64le-linux-gnu
generate_and_build build-x86_64
generate_and_build build-i686 \
-DCMAKE_TOOLCHAIN_FILE=ci/toolchains/i686-linux-gnu.cmake
generate_and_build build-aarch64 \
-DCMAKE_TOOLCHAIN_FILE=ci/toolchains/aarch64-linux-gnu.cmake
generate_and_build build-powerpc64le \
-DCMAKE_TOOLCHAIN_FILE=ci/toolchains/powerpc64le-linux-gnu.cmake
;;
esac