diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..3de9c33 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,114 @@ +name: Build + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + build: + name: ${{ matrix.os-name }} + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + include: + - runner: windows-latest + os-name: Windows + qt-arch: win64_msvc2019_64 + - runner: ubuntu-22.04 + os-name: Ubuntu + # linuxdeployqt requires glibc <= 2.35 (Ubuntu Jammy); ubuntu-24.04 ships 2.39 and is rejected at startup + + steps: + - uses: actions/checkout@v5 + with: + lfs: true + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.11' + + - name: Install Qt (Windows) + if: runner.os == 'Windows' + uses: jurplel/install-qt-action@v4 + with: + version: '6.7.0' + arch: ${{ matrix.qt-arch }} + dir: 'C:\' + cache: true + + - name: Install Qt (Ubuntu) + if: runner.os == 'Linux' + uses: jurplel/install-qt-action@v4 + with: + version: '6.7.0' + arch: linux_gcc_64 + dir: '${{ github.workspace }}' + modules: 'qtwaylandcompositor' + cache: true + + - name: Install Vulkan SDK (Windows) + if: runner.os == 'Windows' + uses: jakoch/install-vulkan-sdk-action@v1 + with: + vulkan_version: 1.3.290.0 + install_runtime: false + cache: true + + - name: Install Linux dependencies + if: runner.os == 'Linux' + run: | + sudo apt-get update -q + sudo apt-get install -y \ + cmake \ + build-essential \ + chrpath \ + patchelf \ + libxcb-xinerama0 \ + libxcb-cursor-dev \ + mesa-common-dev \ + libglu1-mesa-dev \ + libgl1-mesa-dev \ + libx11-xcb-dev \ + libxkbcommon-x11-dev \ + libwayland-dev \ + libvulkan-dev \ + libboost-all-dev + + - name: Install linuxdeployqt (Ubuntu) + if: runner.os == 'Linux' + run: | + wget -q "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" \ + -O /tmp/linuxdeployqt.AppImage + chmod +x /tmp/linuxdeployqt.AppImage + cd /tmp && ./linuxdeployqt.AppImage --appimage-extract + printf '#!/bin/sh\nexec /tmp/squashfs-root/AppRun "$@"\n' > /tmp/linuxdeployqt-wrapper + chmod +x /tmp/linuxdeployqt-wrapper + sudo mv /tmp/linuxdeployqt-wrapper /usr/local/bin/linuxdeployqt + + - name: Pre-build (Windows) + if: runner.os == 'Windows' + shell: cmd + run: | + cd build + python pre_build.py --vs 2022 --qt 6.7.0 --qt-root C:\Qt + + - name: Pre-build (Ubuntu) + if: runner.os == 'Linux' + run: | + cd build + python3 pre_build.py --qt 6.7.0 --qt-root "${{ github.workspace }}/Qt" + + - name: Build Release (Windows) + if: runner.os == 'Windows' + shell: cmd + run: | + cmake --build build\win\vs2022 --config Release --target radeon_gpu_analyzer_cli radeon_gpu_analyzer_gui --parallel %NUMBER_OF_PROCESSORS% + + - name: Build Release (Ubuntu) + if: runner.os == 'Linux' + run: | + cmake --build build/linux/make/release --target radeon_gpu_analyzer_cli radeon_gpu_analyzer_gui --parallel $(nproc) diff --git a/README.md b/README.md index 6909cf5..0a0fe13 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # RGA (Radeon™ GPU Analyzer) # +[![Build Status](https://github.com/GPUOpen-Tools/RGA/actions/workflows/build.yml/badge.svg)](https://github.com/GPUOpen-Tools/RGA/actions/workflows/build.yml) + Radeon GPU Analyzer is a compiler and code analysis tool for Vulkan®, DirectX®, OpenGL® and OpenCL™. Using this product, you can compile high-level source code for a variety of AMD GPU and APU architectures, independent of the type of GPU/APU that is physically installed on your system.