• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# NOTE: This workflow was ported from Travis.
2# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended.
3# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0.
4# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache.
5# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0
6#
7name: Continuous Integration
8
9on:
10    workflow_dispatch:
11    pull_request:
12        branches:
13            - master
14
15jobs:
16    linux:
17        runs-on: ${{matrix.os}}
18        strategy:
19            fail-fast: false
20            matrix:
21                os: [ubuntu-20.04]
22                compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}]
23                cmake_build_type: [Debug, Release]
24        steps:
25            - uses: actions/checkout@v2
26            - uses: actions/setup-python@v2
27              with:
28                  python-version: '3.7'
29            - name: Install Ubuntu Package Dependencies
30              run: |
31                  sudo apt-get -qq update
32                  sudo apt-get install -y clang-6.0
33            - name: Install GoogleTest
34              run: |
35                  # check out pre-breakage version of googletest; can be deleted when
36                  # issue 3128 is fixed
37                  # git clone --depth=1 https://github.com/google/googletest.git External/googletest
38                  mkdir -p External/googletest
39                  cd External/googletest
40                  git init
41                  git remote add origin https://github.com/google/googletest.git
42                  git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
43                  git reset --hard FETCH_HEAD
44                  cd ../..
45            - name: Update Glslang Sources
46              run: |
47                  ./update_glslang_sources.py
48            - name: Build
49              env:
50                  CC: ${{matrix.compiler.cc}}
51                  CXX: ${{matrix.compiler.cxx}}
52              run: |
53                  mkdir build && cd build
54                  cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
55                  make -j4 install
56            - name: Test
57              run: |
58                  cd build
59                  ctest --output-on-failure &&
60                  cd ../Test && ./runtests
61
62    macos:
63        runs-on: ${{matrix.os}}
64        strategy:
65            fail-fast: false
66            matrix:
67                os: [macos-10.15]
68                compiler: [{cc: clang, cxx: clang++}]
69                cmake_build_type: [Debug, Release]
70        steps:
71            - uses: actions/checkout@v2
72            - uses: actions/setup-python@v2
73              with:
74                  python-version: '3.7'
75            - name: Install GoogleTest
76              run: |
77                  # check out pre-breakage version of googletest; can be deleted when
78                  # issue 3128 is fixed
79                  # git clone --depth=1 https://github.com/google/googletest.git External/googletest
80                  mkdir -p External/googletest
81                  cd External/googletest
82                  git init
83                  git remote add origin https://github.com/google/googletest.git
84                  git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
85                  git reset --hard FETCH_HEAD
86                  cd ../..
87            - name: Update Glslang Sources
88              run: |
89                  ./update_glslang_sources.py
90            - name: Build
91              env:
92                  CC: ${{matrix.compiler.cc}}
93                  CXX: ${{matrix.compiler.cxx}}
94              run: |
95                  mkdir build && cd build
96                  cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install ..
97                  make -j4 install
98            - name: Test
99              run: |
100                  cd build
101                  ctest --output-on-failure &&
102                  cd ../Test && ./runtests
103
104    android:
105        runs-on: ${{matrix.os}}
106        strategy:
107            fail-fast: false
108            matrix:
109                os: [ubuntu-20.04]
110                compiler: [{cc: clang, cxx: clang++}]
111                cmake_build_type: [Release]
112        steps:
113            - uses: actions/checkout@v2
114            - uses: actions/setup-python@v2
115              with:
116                  python-version: '3.7'
117            - name: Install Ubuntu Package Dependencies
118              if: ${{matrix.os == 'ubuntu-20.04'}}
119              run: |
120                  sudo apt-get -qq update
121                  sudo apt-get install -y clang-6.0
122            - name: Install Android NDK
123              run: |
124                  export ANDROID_NDK=$HOME/android-ndk
125                  git init $ANDROID_NDK
126                  pushd $ANDROID_NDK
127                  git remote add dneto0 https://github.com/dneto0/android-ndk.git
128                  git fetch --depth=1 dneto0 r17b-strip
129                  git checkout FETCH_HEAD
130                  popd
131            - name: Install GoogleTest
132              run: |
133                  # check out pre-breakage version of googletest; can be deleted when
134                  # issue 3128 is fixed
135                  # git clone --depth=1 https://github.com/google/googletest.git External/googletest
136                  mkdir -p External/googletest
137                  cd External/googletest
138                  git init
139                  git remote add origin https://github.com/google/googletest.git
140                  git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725
141                  git reset --hard FETCH_HEAD
142                  cd ../..
143            - name: Update Glslang Sources
144              run: |
145                  ./update_glslang_sources.py
146            - name: Build
147              env:
148                  CC: ${{matrix.compiler.cc}}
149                  CXX: ${{matrix.compiler.cxx}}
150              run: |
151                  export ANDROID_NDK=$HOME/android-ndk
152                  export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake
153                  echo $ANDROID_NDK
154                  echo $TOOLCHAIN_PATH
155                  mkdir build && cd build
156                  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 ..
157                  make -j4
158