diff --git a/build/travis-ci b/build/travis-ci new file mode 100644 index 00000000..c34791a1 --- /dev/null +++ b/build/travis-ci @@ -0,0 +1,90 @@ +#!/bin/sh +# This script is used for testing the build, primarily for use +# with travis, but may be used by hand as well. + +set -e +set -x + +# Test autoconf build +autoconf_build() +{ + mkdir autoconf-build + cd autoconf-build + ../configure --prefix=$(readlink -f ../autoconf-install) + make + make install + make check +} + +# Install needed tools +cmake_deps() +{ + mkdir -p download + mkdir -p tools + + cmake_file="cmake-3.8.2-Linux-x86_64.tar.gz" + cmake_url="https://cmake.org/files/v3.8/${cmake_file}" + cmake_hash="574673d3f37b0be6a0813b894a8bce9c4af08c13f1ec25c030a69f42e0e4b349e0192385ef20c8a9271055b7c3b24c5b20fb5009762131a3fba3d17576e641f1" + + ninja_file="ninja-linux.zip" + ninja_url="https://github.com/ninja-build/ninja/releases/download/v1.7.2/${ninja_file}" + ninja_hash="2dddc52750c5e6f841acd0d978b894c9a6562f12ddb4ba9e5118a213f54265f065682ffe1bc7bc2ac6146760145d17800a4b7373791cd1fbbaf0836faf050e19" + + ( + cd download + if [ ! -f "$cmake_file" ] || [ "$(sha512sum "$cmake_file")" != "$cmake_hash $cmake_file" ]; then + wget "$cmake_url" + if [ "$(sha512sum "$cmake_file")" != "$cmake_hash $cmake_file" ]; then + echo "Error: cmake download hash mismatch" >&2 + exit 1 + fi + fi + tar xf "$cmake_file" + cp -a ${cmake_file%.tar.gz}/* ../tools + + if [ "$1" = "Ninja" ]; then + if [ ! -f "$ninja_file" ] || [ "$(sha512sum "$ninja_file")" != "$ninja_hash $ninja_file" ]; then + wget "$ninja_url" + if [ "$(sha512sum "$ninja_file")" != "$ninja_hash $ninja_file" ]; then + echo "Error: ninja download hash mismatch" >&2 + exit 1 + fi + fi + unzip "$ninja_file" + mv ninja ../tools/bin + fi + ) +} + +# Test autoconf build +cmake_build() +{ + PATH="$(pwd)/tools/bin:$PATH" + mkdir cmake-build + cd cmake-build + cmake -G "$1" -DCMAKE_BUILD_TYPE="$2" -DCMAKE_INSTALL_PREFIX=../autoconf-install .. + cmake --build . + cmake --build . --target install + ctest -V +} + +build=$1 +shift + +case $build in + autoconf) + echo "Testing Autoconf build" + autoconf_build "$@" + ;; + cmake) + echo "Testing CMake build" + cmake_deps "$@" + cmake_build "$@" + ;; + *) + echo "Invalid argument: \"$arg\"" >&2 + exit 1 + ;; +esac + +exit 0