name: Build on: push: branches: - master pull_request: branches: - master jobs: PC_Application_Ubuntu: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v1 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y libusb-1.0-0-dev qt6-tools-dev qt6-base-dev qtchooser -install qt6 $(which qmake6) - name: Get build timestamp id: id_date run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT - name: Get app version id: id_version run: | cd Software/PC_Application/LibreVNA-GUI fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' LibreVNA-GUI.pro` fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' LibreVNA-GUI.pro` fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' LibreVNA-GUI.pro` echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT - name: Build application run: | cd Software/PC_Application/LibreVNA-GUI export QT_SELECT=qt6 qmake LibreVNA-GUI.pro make -j9 shell: bash - name: Upload artifact env: LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}" uses: actions/upload-artifact@v3 with: name: LibreVNA-GUI-Ubuntu-${{env.LIBREVNA_VERSION}} path: Software/PC_Application/LibreVNA-GUI/LibreVNA-GUI PC_Application_Windows: runs-on: windows-2019 steps: - uses: actions/checkout@v1 - uses: msys2/setup-msys2@v2 - name: Install Qt uses: jurplel/install-qt-action@v3 with: version: '6.2.0' arch: 'win64_mingw81' - name: Download libusb run: | curl -o libusb.7z -L https://github.com/libusb/libusb/releases/download/v1.0.25/libusb-1.0.25.7z 7z x libusb.7z -r -olibusb Xcopy /E /I /Y libusb\include ..\Qt\6.2.0\mingw81_64\include Xcopy /E /I /Y libusb\MinGW64\static\libusb-1.0.a Software\PC_Application\LibreVNA-GUI shell: cmd - name: Get build timestamp shell: msys2 {0} id: id_date run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT - name: Get app version id: id_version shell: msys2 {0} run: | cd Software/PC_Application/LibreVNA-GUI fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' LibreVNA-GUI.pro` fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' LibreVNA-GUI.pro` fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' LibreVNA-GUI.pro` echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT - name: Build application run: | cd Software/PC_Application/LibreVNA-GUI qmake LibreVNA-GUI.pro make -j9 shell: cmd - name: Deploy application run: | cd Software/PC_Application/LibreVNA-GUI/release del *.o *.cpp windeployqt.exe . copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libwinpthread-1.dll . copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libgcc_s_seh-1.dll . copy "..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\libstdc++-6.dll" . copy ..\..\..\..\..\Qt\6.2.0\mingw81_64\bin\Qt6OpenGL.dll . shell: cmd - name: Upload uses: actions/upload-artifact@v3 env: LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}" with: name: GUI_Windows-${{env.LIBREVNA_VERSION}} path: Software/PC_Application/LibreVNA-GUI/release PC_Application_OSX: runs-on: macos-12 steps: - uses: actions/checkout@v1 - name: Install dependencies run: | brew install qt@6 libusb pcre - name: Set Environment run: | echo "/usr/local/opt/qt@6/bin" >> $GITHUB_PATH - name: Get build timestamp id: id_date run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT - name: Get app version id: id_version run: | cd Software/PC_Application/LibreVNA-GUI fw_major=`pcregrep -o '(?<=FW_MAJOR=)[0-9]+' LibreVNA-GUI.pro` fw_minor=`pcregrep -o '(?<=FW_MINOR=)[0-9]+' LibreVNA-GUI.pro` fw_patch=`pcregrep -o '(?<=FW_PATCH=)[0-9]+' LibreVNA-GUI.pro` echo "app_version=v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT - name: Build application run: | cd Software/PC_Application/LibreVNA-GUI qmake LibreVNA-GUI.pro make -j9 macdeployqt LibreVNA-GUI.app # Unfortunately, we have to do some hackery to fix the loading path errors # and missing dylibs from macdeployqt. cp -r /usr/local/Frameworks/QtDbus.framework/ LibreVNA-GUI.app/Contents/Frameworks cp /usr/local/lib/libusb-1.0.0.dylib LibreVNA-GUI.app/Contents/Frameworks install_name_tool -change /usr/local/opt/libusb/lib/libusb-1.0.0.dylib @executable_path/../Frameworks/libusb-1.0.0.dylib LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/A/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/A/QtWidgets LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/A/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/A/QtGui LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI install_name_tool -change /usr/local/opt/qt/lib/QtNetwork.framework/Versions/A/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/A/QtNetwork LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/A/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/A/QtCore LibreVNA-GUI.app/Contents/MacOS/LibreVNA-GUI cp /usr/local/opt/dbus/lib/libdbus-1.3.dylib LibreVNA-GUI.app/Contents/Frameworks/QtDBus.framework install_name_tool -change /usr/local/opt/dbus/lib/libdbus-1.3.dylib @executable_path/../Frameworks/QtDbus.framework/libdbus-1.3.dylib LibreVNA-GUI.app/Contents/Frameworks/QtDBus.framework/Versions/A/QtDBus zip -ry LibreVNA-GUI.zip LibreVNA-GUI.app shell: bash - name: Upload artifact env: LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}" uses: actions/upload-artifact@v3 with: name: LibreVNA-GUI-OSX-${{env.LIBREVNA_VERSION}} path: Software/PC_Application/LibreVNA-GUI/LibreVNA-GUI.zip Embedded_Firmware: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v1 - name: Install toolchain run: | sudo apt-get install -y gcc-arm-none-eabi binutils-arm-none-eabi - name: Get build timestamp id: id_date run: echo "timestamp=$(date +%Y-%m-%d-%H-%M-%S)" >> $GITHUB_OUTPUT - name: Get app version id: id_version run: | cd Software/VNA_embedded fw_major=`grep -oP '(?<=FW_MAJOR=)[0-9]+' Makefile` fw_minor=`grep -oP '(?<=FW_MINOR=)[0-9]+' Makefile` fw_patch=`grep -oP '(?<=FW_PATCH=)[0-9]+' Makefile` hw_revision=`grep "DHW_REVISION=" Makefile | sed "s/-DHW_REVISION=\"'//" | sed "sr'\" [\]rr"` echo "app_version=hw-rev-$hw_revision-v$fw_major.$fw_minor.$fw_patch-${{steps.id_date.outputs.timestamp}}" >> $GITHUB_OUTPUT - 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@v3 env: LIBREVNA_VERSION: "${{steps.id_version.outputs.app_version}}" with: name: EmbeddedFirmware-${{env.LIBREVNA_VERSION}} path: | VNA_embedded.elf combined.vnafw