|
@@ -1,15 +1,68 @@
|
|
|
name: CMake
|
|
name: CMake
|
|
|
|
|
|
|
|
on:
|
|
on:
|
|
|
- workflow_run:
|
|
|
|
|
- workflows: ['Unit tests']
|
|
|
|
|
- branches: [main]
|
|
|
|
|
- types: [completed]
|
|
|
|
|
|
|
+ push:
|
|
|
|
|
+ paths:
|
|
|
|
|
+ - '.github/workflows/cmake.yml'
|
|
|
|
|
+ - 'src/**'
|
|
|
|
|
+ - 'CMakeModules/**'
|
|
|
|
|
+ - CMakeLists.txt
|
|
|
|
|
+ - 'protocols/**'
|
|
|
|
|
+ branches: [ main ]
|
|
|
|
|
+ pull_request:
|
|
|
|
|
+ paths:
|
|
|
|
|
+ - '.github/workflows/cmake.yml'
|
|
|
|
|
+ - 'src/**'
|
|
|
|
|
+ - 'CMakeModules/**'
|
|
|
|
|
+ - CMakeLists.txt
|
|
|
|
|
+ - 'protocols/**'
|
|
|
|
|
+ branches: [ main ]
|
|
|
workflow_dispatch:
|
|
workflow_dispatch:
|
|
|
|
|
|
|
|
jobs:
|
|
jobs:
|
|
|
|
|
+ tests:
|
|
|
|
|
+ env:
|
|
|
|
|
+ BUILD_TYPE: Release
|
|
|
|
|
+
|
|
|
|
|
+ strategy:
|
|
|
|
|
+ matrix:
|
|
|
|
|
+ os: [ubuntu-24.04]
|
|
|
|
|
+ # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
|
|
|
|
|
+ # You can convert this to a matrix build if you need cross-platform coverage.
|
|
|
|
|
+ # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
|
|
|
|
+ runs-on: ${{ matrix.os }}
|
|
|
|
|
+
|
|
|
|
|
+ steps:
|
|
|
|
|
+ - uses: actions/checkout@v3
|
|
|
|
|
+ with:
|
|
|
|
|
+ submodules: true
|
|
|
|
|
+
|
|
|
|
|
+ # cache some build information
|
|
|
|
|
+ - name: ccache
|
|
|
|
|
+ uses: hendrikmuhs/ccache-action@v1.2
|
|
|
|
|
+ with:
|
|
|
|
|
+ key: ${{ github.job }}-${{ matrix.os }} # Eg. "some_build-ubuntu-latest"
|
|
|
|
|
+
|
|
|
|
|
+ - name: Install dependencies
|
|
|
|
|
+ if: matrix.os == 'ubuntu-24.04'
|
|
|
|
|
+ run: sudo apt-get update && sudo apt-get -y install libgl-dev libglew-dev freeglut3-dev libsdl2-dev liblz4-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libglm-dev libglfw3-dev libmpv-dev mpv libmpv2 libfftw3-dev
|
|
|
|
|
+
|
|
|
|
|
+ - name: Configure CMake
|
|
|
|
|
+ # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
|
|
|
|
+ # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
|
|
|
|
+ run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_TESTING=1
|
|
|
|
|
+
|
|
|
|
|
+ - name: Build
|
|
|
|
|
+ # Build your program with the given configuration
|
|
|
|
|
+ run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target tests
|
|
|
|
|
+
|
|
|
|
|
+ - name: Run tests
|
|
|
|
|
+ # Run the unit tests available
|
|
|
|
|
+ run: ${{github.workspace}}/build/output/tests
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
build-x11:
|
|
build-x11:
|
|
|
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
|
|
|
|
|
+ needs: tests
|
|
|
strategy:
|
|
strategy:
|
|
|
matrix:
|
|
matrix:
|
|
|
os: [ubuntu-22.04, ubuntu-24.04]
|
|
os: [ubuntu-22.04, ubuntu-24.04]
|
|
@@ -48,7 +101,7 @@ jobs:
|
|
|
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}}
|
|
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}}
|
|
|
|
|
|
|
|
build-x11-wayland:
|
|
build-x11-wayland:
|
|
|
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
|
|
|
|
|
+ needs: tests
|
|
|
permissions:
|
|
permissions:
|
|
|
actions: read
|
|
actions: read
|
|
|
contents: read
|
|
contents: read
|
|
@@ -102,7 +155,7 @@ jobs:
|
|
|
uses: github/codeql-action/analyze@v3
|
|
uses: github/codeql-action/analyze@v3
|
|
|
|
|
|
|
|
build-wayland:
|
|
build-wayland:
|
|
|
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
|
|
|
|
|
+ needs: tests
|
|
|
strategy:
|
|
strategy:
|
|
|
matrix:
|
|
matrix:
|
|
|
os: [ubuntu-22.04, ubuntu-24.04]
|
|
os: [ubuntu-22.04, ubuntu-24.04]
|