| # NOTE: This workflow was ported from Travis. |
| # Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended. |
| # Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0. |
| # Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache. |
| # Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0 |
| # |
| name: Continuous Integration |
| |
| on: |
| workflow_dispatch: |
| pull_request: |
| branches: |
| - master |
| |
| jobs: |
| linux: |
| runs-on: ${{matrix.os}} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-20.04] |
| compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] |
| cmake_build_type: [Debug, Release] |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: '3.7' |
| - name: Install Ubuntu Package Dependencies |
| run: | |
| sudo apt-get -qq update |
| sudo apt-get install -y clang-6.0 |
| - name: Install GoogleTest |
| run: | |
| # check out pre-breakage version of googletest; can be deleted when |
| # issue 3128 is fixed |
| # git clone --depth=1 https://github.com/google/googletest.git External/googletest |
| mkdir -p External/googletest |
| cd External/googletest |
| git init |
| git remote add origin https://github.com/google/googletest.git |
| git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 |
| git reset --hard FETCH_HEAD |
| cd ../.. |
| - name: Update Glslang Sources |
| run: | |
| ./update_glslang_sources.py |
| - name: Build |
| env: |
| CC: ${{matrix.compiler.cc}} |
| CXX: ${{matrix.compiler.cxx}} |
| run: | |
| mkdir build && cd build |
| cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. |
| make -j4 install |
| - name: Test |
| run: | |
| cd build |
| ctest --output-on-failure && |
| cd ../Test && ./runtests |
| |
| macos: |
| runs-on: ${{matrix.os}} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [macos-11] |
| compiler: [{cc: clang, cxx: clang++}] |
| cmake_build_type: [Debug, Release] |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: '3.7' |
| - name: Install GoogleTest |
| run: | |
| # check out pre-breakage version of googletest; can be deleted when |
| # issue 3128 is fixed |
| # git clone --depth=1 https://github.com/google/googletest.git External/googletest |
| mkdir -p External/googletest |
| cd External/googletest |
| git init |
| git remote add origin https://github.com/google/googletest.git |
| git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 |
| git reset --hard FETCH_HEAD |
| cd ../.. |
| - name: Update Glslang Sources |
| run: | |
| ./update_glslang_sources.py |
| - name: Build |
| env: |
| CC: ${{matrix.compiler.cc}} |
| CXX: ${{matrix.compiler.cxx}} |
| run: | |
| mkdir build && cd build |
| cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. |
| make -j4 install |
| - name: Test |
| run: | |
| cd build |
| ctest --output-on-failure && |
| cd ../Test && ./runtests |
| |
| android: |
| runs-on: ${{matrix.os}} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: [ubuntu-20.04] |
| compiler: [{cc: clang, cxx: clang++}] |
| cmake_build_type: [Release] |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: '3.7' |
| - name: Install Ubuntu Package Dependencies |
| if: ${{matrix.os == 'ubuntu-20.04'}} |
| run: | |
| sudo apt-get -qq update |
| sudo apt-get install -y clang-6.0 |
| - name: Install Android NDK |
| run: | |
| export ANDROID_NDK=$HOME/android-ndk |
| git init $ANDROID_NDK |
| pushd $ANDROID_NDK |
| git remote add dneto0 https://github.com/dneto0/android-ndk.git |
| git fetch --depth=1 dneto0 r17b-strip |
| git checkout FETCH_HEAD |
| popd |
| - name: Install GoogleTest |
| run: | |
| # check out pre-breakage version of googletest; can be deleted when |
| # issue 3128 is fixed |
| # git clone --depth=1 https://github.com/google/googletest.git External/googletest |
| mkdir -p External/googletest |
| cd External/googletest |
| git init |
| git remote add origin https://github.com/google/googletest.git |
| git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 |
| git reset --hard FETCH_HEAD |
| cd ../.. |
| - name: Update Glslang Sources |
| run: | |
| ./update_glslang_sources.py |
| - name: Build |
| env: |
| CC: ${{matrix.compiler.cc}} |
| CXX: ${{matrix.compiler.cxx}} |
| run: | |
| export ANDROID_NDK=$HOME/android-ndk |
| export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake |
| echo $ANDROID_NDK |
| echo $TOOLCHAIN_PATH |
| mkdir build && cd build |
| cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} -DANDROID_NATIVE_API_LEVEL=android-14 -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DANDROID_ABI="armeabi-v7a with NEON" -DBUILD_TESTING=OFF .. |
| make -j4 |