name: C/C++ CI

on: [push]

jobs:
  build-linux:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: apt
      run: sudo apt update && sudo apt install libudev-dev libsqlite3-dev ninja-build protobuf-compiler
    - name: make
      run: make

  build-macos:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 1
    - name: brew
      run: brew install sqlite pkg-config libusb ninja protobuf truncate
    - name: make
      run: make

  build-windows:
    runs-on: windows-latest
    defaults:
      run:
        shell: msys2 {0}
    steps:
    - uses: msys2/setup-msys2@v2
      with:
        update: true
        msystem: MINGW32
        install: >-
          make
          ninja
          mingw-w64-i686-libusb
          mingw-w64-i686-sqlite3
          mingw-w64-i686-zlib
          mingw-w64-i686-gcc
          zip
          mingw-w64-i686-protobuf
          vim
          diffutils
    - uses: actions/checkout@v1
      with:
        fetch-depth: 1
    - name: build
      run: |
        make

    - name: zip
      run: |
        zip -9 fluxengine.zip fluxengine.exe brother120tool.exe brother240tool.exe FluxEngine.cydsn/CortexM3/ARM_GCC_541/Release/FluxEngine.hex

    - name: Upload build artifacts
      uses: actions/upload-artifact@v2
      with:
        name: ${{ github.event.repository.name }}.${{ github.sha }}
        path: fluxengine.zip
