name: Validation on: pull_request: branches: - '*' push: tags: - '*' concurrency: group: validate-${{ github.ref }} cancel-in-progress: true env: CACHE_VERSION: 2 jobs: validation: strategy: fail-fast: false matrix: runner: [ "windows-2022", "windows-2019", "ubuntu-22.04", "ubuntu-20.04" ] CMAKE_BUILD_TYPE: [ "Debug", "Release" ] include: - runner: "windows-2022" experimental: true id: "windows-2022-validate" name: "Windows 11" CMAKE_SYSTEM_VERSION: "10.0.18362.0" CMAKE_GENERATOR: "Visual Studio 17 2022" CMAKE_GENERATOR_PLATFORM: "x64" - runner: "windows-2019" experimental: true id: "windows-2019-validate" name: "Windows 10" CMAKE_SYSTEM_VERSION: "10.0.18362.0" CMAKE_GENERATOR: "Visual Studio 16 2019" CMAKE_GENERATOR_PLATFORM: "x64" - runner: "ubuntu-22.04" experimental: false id: "linux-22.04-validate" name: "Ubuntu 22.04" CMAKE_GENERATOR: "Ninja" - runner: "ubuntu-20.04" experimental: false id: "linux-20.04-validate" name: "Ubuntu 20.04" CMAKE_GENERATOR: "Ninja" name: "${{ matrix.name }} (${{ matrix.CMAKE_BUILD_TYPE }})" runs-on: ${{ matrix.runner }} continue-on-error: ${{ matrix.experimental }} env: CC: clang CXX: clang++ CMAKE_BUILD_TYPE: ${{ matrix.CMAKE_BUILD_TYPE }} CMAKE_SYSTEM_VERSION: ${{ matrix.CMAKE_SYSTEM_VERSION }} CMAKE_GENERATOR: ${{ matrix.CMAKE_GENERATOR }} CMAKE_GENERATOR_PLATFORM: ${{ matrix.CMAKE_GENERATOR_PLATFORM }} steps: - name: "Clone" uses: actions/checkout@v3 with: submodules: recursive fetch-depth: 0 - name: "Dependency: Ninja, Qt, FFmpeg, CURL (Linux)" if: startsWith( matrix.runner, 'ubuntu' ) shell: bash run: | sudo apt-get -qq update sudo apt-get purge libjpeg9-dev:amd64 libjpeg8-dev:amd64 libjpeg-turbo8-dev:amd64 sudo apt-get install \ build-essential \ checkinstall \ pkg-config \ cmake \ ninja-build \ git \ qtbase5-dev qtbase5-private-dev libqt5svg5-dev \ libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev \ libcurl4-openssl-dev - name: "Dependency: Clang (Windows)" if: startsWith( matrix.runner, 'windows' ) run: | curl "-kL" "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.4/LLVM-14.0.4-win64.exe" "-f" "--retry" "5" "-o" "llvm.exe" 7z x -y -o"C:\Program Files\LLVM" llvm.exe "bin" "include" "lib" "libexec" "share" "Uninstall.exe" - name: "Dependency: Clang (Linux)" if: startsWith( matrix.runner, 'ubuntu' ) shell: bash run: | sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" 14 all sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 800 sudo update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-14 800 sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 800 sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-14 800 sudo update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-14 800 sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-14 800 sudo update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-14 800 - name: "Dependencies: Cache" if: github.event_name != 'pull_request' uses: actions/cache@v3 with: path: | build/temp/autodeps key: autodeps-${{ matrix.id }}-${{ env.CACHE_VERSION }} - name: "StreamFX: Configure" shell: bash run: | cmake -H. -B"build/temp" \ -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} \ -DENABLE_CLANG=TRUE \ -DENABLE_PROFILING=TRUE - name: "StreamFX: clang-tidy" continue-on-error: true shell: bash run: | cmake --build "build/temp" --config ${{ matrix.CMAKE_BUILD_TYPE }} --target StreamFX_clang-tidy - name: "StreamFX: clang-format" shell: bash run: | cmake --build "build/temp" --config ${{ matrix.CMAKE_BUILD_TYPE }} --target StreamFX_clang-format - name: "Validate Formatting" shell: bash run: | git --no-pager diff --patch --minimal HEAD -- git update-index --refresh git diff-index --quiet HEAD --