name: linux

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    container: archlinux:base-devel
    steps:
    - name: Install dependencies
      run: pacman -Syu --noconfirm && pacman -S --noconfirm --needed freetype2 tbb debuginfod wayland dbus libxkbcommon libglvnd meson cmake git wayland-protocols nodejs
    - uses: actions/checkout@v4
    - name: Profiler GUI
      run: |
        cmake -B profiler/build -S profiler -DCMAKE_BUILD_TYPE=Release
        cmake --build profiler/build --parallel
    - name: Update utility
      run: |
        cmake -B update/build -S update -DCMAKE_BUILD_TYPE=Release
        cmake --build update/build --parallel
    - name: Capture utility
      run: |
        cmake -B capture/build -S capture -DCMAKE_BUILD_TYPE=Release
        cmake --build capture/build --parallel
    - name: Csvexport utility
      run: |
        cmake -B csvexport/build -S csvexport -DCMAKE_BUILD_TYPE=Release
        cmake --build csvexport/build --parallel
    - name: Import utilities
      run: |
        cmake -B import/build -S import -DCMAKE_BUILD_TYPE=Release
        cmake --build import/build --parallel
    - name: Library
      run: meson setup -Dprefix=$GITHUB_WORKSPACE/bin/lib build && meson compile -C build && meson install -C build
    - name: Test application
      run: |
        # test compilation with different flags
        # we clean the build folder to reset cached variables between runs
        cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release
        cmake --build test/build --parallel
        rm -rf test/build

        # same with TRACY_ON_DEMAND
        cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_ON_DEMAND=ON .
        cmake --build test/build --parallel
        rm -rf test/build

        # same with TRACY_DELAYED_INIT TRACY_MANUAL_LIFETIME
        cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_DELAYED_INIT=ON -DTRACY_MANUAL_LIFETIME=ON .
        cmake --build test/build --parallel
        rm -rf test/build

        # same with TRACY_DEMANGLE
        cmake -B test/build -S test -DCMAKE_BUILD_TYPE=Release -DTRACY_DEMANGLE=ON .
        cmake --build test/build --parallel
        rm -rf test/build
    - name: Find Artifacts
      id: find_artifacts
      run: |
        mkdir -p bin
        cp profiler/build/tracy-profiler bin
        cp update/build/tracy-update bin
        cp capture/build/tracy-capture bin
        cp csvexport/build/tracy-csvexport bin
        cp import/build/tracy-import-chrome bin
        cp import/build/tracy-import-fuchsia bin
        strip bin/tracy-*
    - uses: actions/upload-artifact@v4
      with:
        name: arch-linux
        path: bin
