mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-30 15:00:06 +00:00
76555bd4ba
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
126 lines
4.5 KiB
YAML
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
|