SPIRV-Tools/.travis.yml
David Neto 76555bd4ba Tests: Add optional dependency on Effcee stateful matcher
Add Effcee as an optional dependency for use in tests.  In future it will
be a required dependency.

Effcee is a stateful pattern matcher that has much of the functionality
of LLVM's FileCheck, except in library form.  Effcee makes it much easier
to write tests for optimization passes.

Demonstrate its use in a test for the strength-reduction pass.

Update README.md with example commands of how to get sources.

Update Appveyor and Travis-CI build rules.

Also: Include test libraries if not SPIRV_SKIP_TESTS
- SPIRV_SKIP_TESTS is implied by SPIRV_SKIP_EXECUTABLES
2017-11-13 11:34:21 -05:00

126 lines
4.5 KiB
YAML

# Linux Build Configuration for Travis
language: cpp
os:
- linux
- osx
# Use Ubuntu 14.04 LTS (Trusty) as the Linux testing environment.
dist: trusty
sudo: false
env:
global:
- secure: IoR/Xe9E+NnLAeI23WrmUsGQn5rocz+XRYUk+BbaoKiIRYm4q72GKyypRoOGLu7wImOXFSvnN/dpdnqIpx4W0NfsSvNdlXyhDy+wvT1kzTt77dJGnkGZTZ2SBOtC9AECLy4sqM9HG0rYRR6WfXcnP2GlrE5f2aF07aISQbOUsQMvyyhtCmVAzIigK1zIUto5I0pNenvo/Y+ur+mEvTh+FtaoDIGepCbZlCc+OxqRXwXNlI7mDXbzLPmTB1FWTGsrZdRX8czF9tN9Y+T79DQjB4Lcyyeow8yU9NBVlgzZJcp1xI0UIskRT8gVrXmBYL2dMeHnDQuhxjEg9n7jfr3ptA9rgwMaSsgdaLwuBXgtPuqVgUYDpE1cP8WI8q38MXX0I6psTs/WHu+z+5UwfjzpPOHmGdVt48o8ymFTapvD5Cf1+uJyk73QkyStnPIdBF1N9Yx5sD7HN28K6/Ro12sCCePHUZ9Uz1DdZI6XxkgCNKNwao0csAyvODxD6Ee43mkExtviB8BJY5jWLIMTdGhgEGH2sRqils8IDW0p8AOTPM4UC7iA7hdg3pA+XMvBHvP9ixsY7tuB+yR2AfnFaSw2DVbwI5GgFdFMNHXYuL+9V9Wuh3keBKYQT/Hy1YvxjQ/t9UouYHqEsyVFUl3R4lEAM9+qSRsRu+EKmcSO2QtCsWc=
matrix:
# Each line is a set of environment variables set before a build.
# Thus each line represents a different build configuration.
- BUILD_TYPE=Release
- BUILD_TYPE=Debug
compiler:
- clang
- gcc
matrix:
fast_finish: true
include:
# Additional build using Android NDK with android-cmake
- env: BUILD_ANDROID_CMAKE=ON
# Additional build using Android NDK with Android.mk
- env: BUILD_ANDROID_MK=ON
exclude:
# Skip GCC builds on macOS.
- os: osx
compiler: gcc
cache:
apt: true
git:
depth: 1
branches:
only:
- master
before_install:
- if [[ "$BUILD_ANDROID_CMAKE" == "ON" ]] || [[ "$BUILD_ANDROID_MK" == "ON" ]]; then
git clone --depth=1 https://github.com/urho3d/android-ndk.git $HOME/android-ndk;
export ANDROID_NDK=$HOME/android-ndk;
git clone --depth=1 https://github.com/taka-no-me/android-cmake.git $HOME/android-cmake;
export TOOLCHAIN_PATH=$HOME/android-cmake/android.toolchain.cmake;
fi
before_script:
- git clone --depth=1 https://github.com/KhronosGroup/SPIRV-Headers external/spirv-headers
- git clone --depth=1 https://github.com/google/googletest external/googletest
- git clone --depth=1 https://github.com/google/effcee external/effcee
- git clone --depth=1 https://github.com/google/re2 external/re2
script:
# Due to the limitation of Travis platform, we cannot start too many concurrent jobs.
# Otherwise GCC will panic with internal error, possibility because of memory issues.
# ctest with the current tests doesn't profit from using more than 4 threads.
- export NPROC=4;
- mkdir build && cd build;
- if [[ "$BUILD_ANDROID_MK" == "ON" ]]; then
export BUILD_DIR=$(pwd);
mkdir ${BUILD_DIR}/libs;
mkdir ${BUILD_DIR}/app;
$ANDROID_NDK/ndk-build -C ../android_test NDK_PROJECT_PATH=.
NDK_LIBS_OUT=${BUILD_DIR}/libs
NDK_APP_OUT=${BUILD_DIR}/app -j${NPROC};
elif [[ "$BUILD_ANDROID_CMAKE" == "ON" ]]; then
cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH}
-DANDROID_NATIVE_API_LEVEL=android-9
-DCMAKE_BUILD_TYPE=Release
-DANDROID_ABI="armeabi-v7a with NEON"
-DSPIRV_BUILD_COMPRESSION=ON
-DSPIRV_SKIP_TESTS=ON ..;
make -j${NPROC};
else
cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DSPIRV_BUILD_COMPRESSION=ON -DCMAKE_INSTALL_PREFIX=install ..;
make -j${NPROC} install;
ctest -j${NPROC} --output-on-failure --timeout 300;
fi
after_success:
# Create tarball for deployment
- if [[ "${CC}" == "clang" && "${BUILD_ANDROID_MK}" != "ON" && "${BUILD_ANDROID_CMAKE}" != "ON" ]]; then
cd install;
export TARBALL=SPIRV-Tools-master-${TRAVIS_OS_NAME}-${BUILD_TYPE}.zip;
find . -print | zip -@ ${TARBALL};
fi
before_deploy:
# Tag the current master top of the tree as "master-tot".
# Travis CI relies on the tag name to push to the correct release.
- git config --global user.name "Travis CI"
- git config --global user.email "builds@travis-ci.org"
- git tag -f master-tot
- git push -q -f https://${spirvtoken}@github.com/KhronosGroup/SPIRV-Tools --tags
deploy:
provider: releases
api_key: ${spirvtoken}
on:
branch: master
condition: ${CC} == clang && ${BUILD_ANDROID_MK} != ON && ${BUILD_ANDROID_CMAKE} != ON
file: ${TARBALL}
skip_cleanup: true
overwrite: true
notifications:
email:
recipients:
- andreyt@google.com
- antiagainst@google.com
- awoloszyn@google.com
- dneto@google.com
- ehsann@google.com
- qining@google.com
on_success: change
on_failure: always