name: LoongArch64-CI

on: [push, pull_request]

jobs:
  loongarch64:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        platform:
          - { toolchain-version: 2023.08.08 }
    steps:
      - uses: actions/checkout@v4
      - name: Install build requirements
        run: |
          sudo apt-get update -y
          sudo apt-get install -y --no-install-recommends cmake

      - uses: actions/cache/restore@v4
        id: restore-cache
        with:
          path: /opt/cross-tools
          key: loongarch64-${{ matrix.platform.toolchain-version }}

      - name: Download LoongArch64 gcc+glibc toolchain
        if: ${{ !steps.restore-cache.outputs.cache-hit }}
        run: |
          url="https://github.com/loongson/build-tools/releases/download/${{ matrix.platform.toolchain-version }}/x86_64-cross-tools-loongarch64-gcc-libc.tar.xz"

          wget "$url" -O /tmp/toolchain.tar.xz

          mkdir -p /opt
          tar -C /opt -x -f /tmp/toolchain.tar.xz

      - uses: actions/cache/save@v3
        if: ${{ !steps.restore-cache.outputs.cache-hit }}
        with:
          path: /opt/cross-tools
          key: loongarch64-${{ matrix.platform.toolchain-version }}

      - name: setup Loongarch64 build environment
        run: |
          echo "/opt/cross-tools/bin" >> $GITHUB_PATH
          echo "CC=loongarch64-unknown-linux-gnu-gcc" >> $GITHUB_ENV
          echo "CXX=loongarch64-unknown-linux-gnu-g++" >> $GITHUB_ENV
      - name: configure
        run: cmake -B build -DCMAKE_SYSTEM_PROCESSOR=loongarch64 -DARCH=lonngarch64 -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_C_COMPILER=loongarch64-unknown-linux-gnu-gcc -DCMAKE_CXX_COMPILER=loongarch64-unknown-linux-gnu-g++
      - name: build
        run: cmake --build build
