name: Build

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  PC_Application_Ubuntu:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1

      - name: Install dependencies
        run: |
          sudo apt-get install -y libusb-1.0-0-dev qt5-default qt5-qmake qtbase5-dev
          
      - name: Build application
        run: |
          cd Software/PC_Application
          qmake
          make -j9
        shell: bash
        
      - name: Upload artifact
        uses: actions/upload-artifact@v2
        with:
          name: Application_Ubuntu
          path: Software/PC_Application/Application
          
  PC_Application_Windows:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v1

      - name: Cache Qt
        id: cache-qt
        uses: pat-s/always-upload-cache@v2.1.0
        with:
          path: ${{ runner.workspace }}/Qt
          key: ${{ runner.os }}-QtCache

      - name: Install Qt
        uses: jurplel/install-qt-action@v2
        with:
          arch: 'win64_mingw73'
          cached: ${{ steps.cache-qt.outputs.cache-hit }}
      
      - name: Download libusb
        run: |
          curl -o libusb.7z -L https://github.com/libusb/libusb/releases/download/v1.0.23/libusb-1.0.23.7z
          7z x libusb.7z -r -olibusb
          Xcopy /E /I /Y libusb\include ..\Qt\5.12.9\mingw73_64\include
          Xcopy /E /I /Y libusb\MinGW64\static Software\PC_Application
        shell: cmd

      - name: Build application
        run: |
          cd Software/PC_Application
          export LIBRARY_PATH
          LIBRARY_PATH="../../libusb/MinGW64/static;$LIBRARY_PATH"
          qmake
          make -j9
        shell: cmd

      - name: Deploy application
        run: |
          cd Software/PC_Application/release
          del *.o *.cpp
          windeployqt.exe .
          copy ..\..\..\..\Qt\5.12.9\mingw73_64\bin\libwinpthread-1.dll .
          copy ..\..\..\..\Qt\5.12.9\mingw73_64\bin\libgcc_s_seh-1.dll .
          copy "..\..\..\..\Qt\5.12.9\mingw73_64\bin\libstdc++-6.dll" .
          copy ..\..\..\..\Qt\5.12.9\mingw73_64\bin\Qt5OpenGL.dll .
        shell: cmd
        
      - name: Upload
        uses: actions/upload-artifact@v2
        with:
          name: Application_Windows
          path: Software/PC_Application/release
          
  Embedded_Firmware:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1

      - name: Install toolchain
        run: |
          sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi
          
      - name: Build application
        run: |
          cd Software/VNA_embedded
          make -j9
          cp build/VNA_embedded.elf ../../
        shell: bash

      - name: Combine with FPGA bitstream
        run: |
          python3 AssembleFirmware.py
        shell: bash
        
      - name: Upload
        uses: actions/upload-artifact@v2
        with:
          name: EmbeddedFirmware
          path: |
            VNA_embedded.elf
            combined.vnafw
        
