# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2023 Carles Fernandez-Prades <carles.fernandez@cttc.es>

name: Run gnss-sdr in non-x86 archs

on:
  push:
    branches:
      - "**-archs"
      - main
  workflow_dispatch:

jobs:
  gnss-sdr-non-x86:
    runs-on: ubuntu-latest
    name: ${{ matrix.distro }} ${{ matrix.arch }} ${{ matrix.compiler.name }}

    # Run steps on a matrix of archs.
    strategy:
      fail-fast: false
      matrix:
        include:
          - arch: aarch64
            distro: ubuntu22.04
            compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
          - arch: aarch64
            distro: ubuntu22.04
            compiler: { name: clang-14, cc: clang-14, cxx: clang++-14 }
          - arch: armv7
            distro: ubuntu22.04
            compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
          - arch: riscv64
            distro: ubuntu22.04
            compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
          # - arch: ppc64le
          #   distro: ubuntu22.04
          #   compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }
          # - arch: s390x
          #   distro: ubuntu22.04
          #   compiler: { name: g++-12, cc: gcc-12, cxx: g++-12 }

    steps:
      - uses: actions/checkout@v4
      - uses: uraimo/run-on-arch-action@v3.0.0
        name: Test in non-x86 container
        continue-on-error: ${{ contains(fromJson('["ppc64le", "s390x"]'), matrix.arch) }}
        id: test
        with:
          arch: ${{ matrix.arch }}
          distro: ${{ matrix.distro }}
          githubToken: ${{ github.token }} # Not required, but speeds up builds
          setup: |
            mkdir -p "${PWD}/testing"
          dockerRunArgs: |
            --volume "${PWD}:/gnss-sdr"
          env: |
            CC: ${{ matrix.compiler.cc }}
            CXX: ${{ matrix.compiler.cxx }}
          shell: /bin/sh
          install: |
            apt update
            apt install -y ${{ matrix.compiler.name }} git ninja-build cmake \
            libboost-dev libboost-date-time-dev libboost-system-dev libboost-filesystem-dev \
            libboost-thread-dev libboost-chrono-dev libboost-serialization-dev \
            liblog4cpp5-dev gnuradio-dev gr-osmosdr libpugixml-dev libpcap-dev libblas-dev \
            liblapack-dev libarmadillo-dev libgflags-dev libgoogle-glog-dev \
            libgnutls-openssl-dev libmatio-dev googletest protobuf-compiler libprotobuf-dev \
            python3-mako liborc-0.4-dev
          run: |
            git config --global --add safe.directory /gnss-sdr
            cd /gnss-sdr
            cd testing
            mkdir install
            cmake -DENABLE_SYSTEM_TESTING_EXTRA=ON -DCMAKE_INSTALL_PREFIX=/gnss-sdr/testing/install -DENABLE_INSTALL_TESTS=ON ..
            echo "Build with $(nproc) thread(s)"
            make -j$(nproc)
            make install
            cd install/bin
            ./position_test
