name: linux-x86-gcc
on:
  push:
    paths:
      - ".gitea/workflows/linux-x86-gcc.yml"
      - "toolchains/host.gcc-m32.toolchain.cmake"
      - "cmake/**"
      - "third_party/**"
      - "tile/**"
      - "!tile/fiber/detail/asm/*"
      - "tile/fiber/detail/asm/ucontext_x86.*"
      - "CMakeLists.txt"
  pull_request:
    paths:
      - ".gitea/workflows/linux-x86-gcc.yml"
      - "toolchains/host.gcc-m32.toolchain.cmake"
      - "cmake/**"
      - "third_party/**"
      - "tile/**"
      - "!tile/fiber/detail/asm/*"
      - "tile/fiber/detail/asm/ucontext_x86.*"
      - "CMakeLists.txt"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  linux-gcc:
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        build_type: ["Debug", "Release"]
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: install-tools
        run: |
          sudo apt-get update -y
          sudo apt-get install -y gcc-multilib g++-multilib ninja-build
      - name: configure
        run: |
          mkdir build && cd build
          cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc-m32.toolchain.cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DTILE_BUILD_BENCHMARKS=ON -DTILE_BUILD_TESTS=ON ..
      - name: build
        run: |
          cmake --build build -j $(nproc)
      - name: test
        run: |
          cd build
          ctest --output-on-failure -j $(nproc)
      - name: benchmark
        run: |
          ./build/bin/tile_bm_all
