name: build on: [push, pull_request] jobs: client: runs-on: ubuntu-latest 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@v2 with: submodules: recursive - 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 \ libfontconfig-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@v2 with: submodules: recursive - name: Build kernel module run: | cd module make host-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: recursive - name: Update apt run: | sudo apt-get update - name: Install Linux host dependencies run: | sudo apt-get install binutils-dev libglib2.0-dev libxcb-xfixes0-dev \ libpipewire-0.3-dev libxcb-shm0-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-latest steps: - uses: actions/checkout@v2 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-2025 steps: - uses: actions/checkout@v2 with: submodules: recursive - name: Install NSIS shell: powershell run: | winget install -e --id NSIS.NSIS --silent --accept-source-agreements --accept-package-agreements $paths = @( (Join-Path ${env:ProgramFiles} 'NSIS\Bin'), (Join-Path ${env:ProgramFiles(x86)} 'NSIS\Bin') ) | Where-Object { Test-Path $_ } if ($paths.Count -eq 0) { Write-Error "NSIS 'Bin' folder not found after install." exit 1 } $paths | ForEach-Object { Add-Content -Path $env:GITHUB_PATH -Value $_ } Write-Host "makensis location(s): $($paths -join ', ')" - name: Test NSIS run: | makensis /VERSION - 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 idd: runs-on: windows-2022 steps: - uses: actions/checkout@v2 with: submodules: recursive - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 with: msbuild-architecture: x64 - name: Install NuGet packages run: | cd idd nuget restore LGIdd.sln - name: Build IDD run: | cd idd msbuild.exe LGIdd.sln /t:Build /p:Configuration=Release /p:Platform=x64 - name: Build NSIS Installer run: | cd idd\x64\Release\LGIdd makensis -DBUILD_32BIT installer.nsi - name: Build NSIS installer with IVSHMEM drivers run: | cd idd\x64\Release Invoke-WebRequest https://dl.quantum2.xyz/ivshmem.tar.gz -OutFile ivshmem.tar.gz tar -xzvf ivshmem.tar.gz cd LGIdd makensis -DBUILD_32BIT -DIVSHMEM installer.nsi obs: runs-on: ubuntu-latest strategy: matrix: cc: [gcc, clang] steps: - uses: actions/checkout@v2 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 \ python3-sphinxcontrib.spelling - name: Build docs run: | cd doc make dirhtml SPHINXOPTS='-b spelling -W' -j$(nproc)