name: build on: [push, pull_request] jobs: client: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: compiler: - {cc: gcc, cxx: g++} - {cc: clang, cxx: clang++} wayland_shell: [xdg-shell, libdecor] build_type: [Release, Debug] steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Install libdecor PPA run: sudo add-apt-repository ppa:christianrauch/libdecoration if: ${{ matrix.wayland_shell == 'libdecor' }} - name: Update apt run: | sudo apt-get update - name: Install client dependencies run: | sudo apt-get install \ binutils-dev \ libspice-protocol-dev nettle-dev \ libgl-dev libgles-dev \ libx11-dev libxss-dev libxi-dev libxinerama-dev libxcursor-dev libxpresent-dev \ libwayland-dev wayland-protocols libxkbcommon-dev \ $([ '${{ matrix.wayland_shell }}' = libdecor ] && echo 'libdecor-dev libdbus-1-dev') - name: Configure client env: CC: /usr/bin/${{ matrix.compiler.cc }} CXX: /usr/bin/${{ matrix.compiler.cxx }} run: | mkdir client/build cd client/build cmake \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_LINKER:FILEPATH=/usr/bin/ld \ -DENABLE_LIBDECOR=${{ matrix.wayland_shell == 'libdecor' }} \ .. - name: Build client run: | cd client/build make -j$(nproc) module: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Build kernel module run: | cd module make host-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Update apt run: | sudo apt-get update - name: Install Linux host dependencies run: | sudo apt-get install binutils-dev libgl1-mesa-dev libxcb-xfixes0-dev - name: Configure Linux host run: | mkdir host/build cd host/build cmake .. - name: Build Linux host run: | cd host/build make -j$(nproc) host-windows-cross: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Update apt run: | sudo apt-get update - name: Install Windows host cross-compile dependencies run: | sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 nsis - name: Configure Windows host for cross-compile run: | mkdir host/build cd host/build cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw64.cmake .. - name: Cross-compile Windows host run: | cd host/build make -j$(nproc) - name: Build Windows host installer run: | cd host/build makensis platform/Windows/installer.nsi host-windows-native: runs-on: windows-latest steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Configure Windows host for native MinGW-w64 run: | mkdir host\build cd host\build cmake -G "MinGW Makefiles" .. - name: Build Windows host on native MinGW-w64 run: | cd host\build mingw32-make "-j$([Environment]::ProcessorCount)" - name: Build Windows host installer run: | cd host\build makensis platform\Windows\installer.nsi obs: runs-on: ubuntu-latest strategy: matrix: cc: [gcc, clang] steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Update apt run: | sudo apt-get update - name: Install obs plugin dependencies run: | sudo apt-get install binutils-dev libobs-dev libgl1-mesa-dev - name: Configure obs plugin run: | mkdir obs/build cd obs/build CC=/usr/bin/${{ matrix.cc }} cmake .. - name: Build obs plugin run: | cd obs/build make -j$(nproc) docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 with: submodules: recursive - name: Update apt run: | sudo apt-get update - name: Install docs dependencies run: | sudo apt-get install python3-sphinx sudo pip3 install sphinxcontrib-spelling - name: Build docs run: | cd doc make dirhtml SPHINXOPTS='-b spelling -W' -j$(nproc)