---
name: linux-arm-gcc
on:
  push:
    paths:
      - .gitea/workflows/linux-arm-gcc.yml
      - "cmake/**"
      - toolchains/arm-linux-gnueabi.toolchain.cmake
      - toolchains/arm-linux-gnueabihf.toolchain.cmake
      - third_party/**
      - tile/**
      - "!tile/fiber/detail/asm/*"
      - "tile/fiber/detail/asm/ucontext_arm.*"
      - CMakeLists.txt
      - cmake/**
  pull_request:
    paths:
      - .gitea/workflows/linux-arm-gcc.yml
      - "cmake/**"
      - toolchains/arm-linux-gnueabi.toolchain.cmake
      - toolchains/arm-linux-gnueabihf.toolchain.cmake
      - third_party/**
      - tile/**
      - "!tile/fiber/detail/asm/*"
      - "tile/fiber/detail/asm/ucontext_arm.*"
      - CMakeLists.txt
      - cmake/**
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
jobs:
  linux-gcc-arm:
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        build_type: ["Debug", "Release"]
    steps:
      - uses: actions/checkout@v4
      - name: install-tools
        run: |
          sudo apt-get update -y
          sudo apt-get install -y g++-arm-linux-gnueabi qemu-user-binfmt ninja-build
      - name: configure
        run: |
          mkdir build && cd build
          cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabi.toolchain.cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DTILE_BUILD_TESTS=ON -DTILE_BUILD_TESTS=ON ..
      - name: build
        run: |
          cd build
          cmake --build . -j $(nproc)
      - name: test
        run: |
          cd build
          sudo ln -sf /usr/arm-linux-gnueabi/lib/ld-linux.so.3 /lib/ld-linux.so.3
          export LD_LIBRARY_PATH=/usr/arm-linux-gnueabi/lib
          ctest --output-on-failure -j $(nproc)

  linux-gcc-armhf:
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        build_type: ["Debug", "Release"]
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: arm-gnu-toolchain
        run: |
          sudo apt-get update -y
          sudo apt-get install -y g++-arm-linux-gnueabihf qemu-user-binfmt ninja-build
      - name: configure
        run: |
          mkdir build && cd build
          cmake -GNinja -DCMAKE_TOOLCHAIN_FILE=../toolchains/arm-linux-gnueabihf.toolchain.cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DTILE_BUILD_TESTS=ON -DTILE_BUILD_BENCHMARKS=ON ..
      - name: build
        run: |
          cd build
          cmake --build . -j $(nproc)
      - name: test
        run: |-
          cd build
          sudo ln -sf /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib/ld-linux-armhf.so.3
          export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/
          ctest --output-on-failure -j $(nproc)
