name: native backend CI

on:
  push:
    paths:
      - '!**'
      - 'vlib/v/gen/native/'
      - 'cmd/tools/builders/**.v'
      - 'vlib/builtin/**.v'
      - 'vlib/v/ast/**.v'
      - 'vlib/v/scanner/**.v'
      - 'vlib/v/scanner/**.v'
      - 'vlib/v/parser/**.v'
      - 'vlib/v/checker/**.v'
      - 'vlib/v/gen/c/**.v'
      - 'vlib/v/builder/**.v'
      - 'vlib/v/cflag/**.v'
      - 'vlib/v/live/**.v'
      - 'vlib/v/util/**.v'
      - 'vlib/v/markused/**.v'
      - 'vlib/v/preludes/**.v'
      - 'vlib/v/gen/native/**.v'
      - 'vlib/v/gen/native/tests/**.v'
  pull_request:
    paths-ignore:
      - '!**'
      - 'vlib/v/gen/native/'
      - 'cmd/tools/builders/**.v'
      - 'vlib/builtin/**.v'
      - 'vlib/v/ast/**.v'
      - 'vlib/v/scanner/**.v'
      - 'vlib/v/scanner/**.v'
      - 'vlib/v/parser/**.v'
      - 'vlib/v/checker/**.v'
      - 'vlib/v/gen/c/**.v'
      - 'vlib/v/builder/**.v'
      - 'vlib/v/cflag/**.v'
      - 'vlib/v/live/**.v'
      - 'vlib/v/util/**.v'
      - 'vlib/v/markused/**.v'
      - 'vlib/v/preludes/**.v'
      - 'vlib/v/gen/native/**.v'
      - 'vlib/v/gen/native/tests/**.v'

jobs:
  native-backend:
    strategy:
      matrix:
        os: [
          ubuntu-18.04, ubuntu-20.04,
          macos-10.15, macos-11, macos-12,
          windows-2019, windows-2022
        ]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v2

      - name: Install linker
        if: ${{ startsWith(matrix.os, 'ubuntu')}}
        run: |
          sudo apt-get install --quiet -y binutils

      - name: Build V with make.bat
        if: ${{ startsWith(matrix.os, 'windows') }}
        run: |
          .\make.bat
          .\v.exe symlink -githubci
      - name: Build V with make
        if: ${{ !startsWith(matrix.os, 'windows') }}
        run: |
          make
          ./v symlink -githubci

      - name: Test the native backend
        run: v test vlib/v/gen/native/
