name: C/C++ CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        include:
          - os: ubuntu-latest
            compiler: gcc
          - os: macos-latest
            compiler: clang
          - os: windows-latest
            compiler: msvc

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v2

      - name: Test
        run: ./scripts/test-all.sh

  test-tcc:
    runs-on: ubuntu-latest
    env:
      CC: tcc

    steps:
      - uses: actions/checkout@v2

      - name: Install TCC
        run: sudo apt install tcc

      - name: Test
        run: ./scripts/test-all.sh

  check-fmt:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Download run-clang-format
        run: git submodule update --init run-clang-format

      - name: Check code formatting
        run: ./scripts/check-fmt.sh
