#!/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