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: Install PipeWire repository run: | echo 'deb [trusted=yes] https://pipewire-ubuntu.quantum5.workers.dev ./' | sudo tee /etc/apt/sources.list.d/pipewire.list - 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 libxkbcommon-dev \ libsamplerate0-dev libpipewire-0.3-dev libpulse-dev \ $([ '${{ matrix.wayland_shell }}' = libdecor ] && echo 'libdecor-0-dev libdbus-1-dev') \ $([ '${{ matrix.compiler.cc }}' = clang ] && echo 'clang-tools') sudo pip3 install pyenchant - 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 \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DENABLE_LIBDECOR=${{ matrix.wayland_shell == 'libdecor' }} \ .. - name: Build client run: | cd client/build make -j$(nproc) - name: Checking help spelling run: ./client/build/looking-glass-client --help | ./doc/lgspell.py - name: Check GL function calls if: matrix.compiler.cc == 'clang' run: WAYLAND_SHELL='${{ matrix.wayland_shell }}' ./gl-check 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: Install PipeWire repository run: | echo 'deb [trusted=yes] https://pipewire-ubuntu.quantum5.workers.dev ./' | sudo tee /etc/apt/sources.list.d/pipewire.list - name: Update apt run: | sudo apt-get update - name: Install Linux host dependencies run: | sudo apt-get install binutils-dev libxcb-xfixes0-dev \ libpipewire-0.3-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 - name: Build Windows host installer with IVSHMEM drivers run: | cd host/build curl https://dl.quantum2.xyz/ivshmem.tar.gz | tar xz makensis -DIVSHMEM 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 -DBUILD_32BIT 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 python3-sphinx-rtd-theme sudo pip3 install sphinxcontrib-spelling - name: Build docs run: | cd doc make dirhtml SPHINXOPTS='-b spelling -W' -j$(nproc)