name: Build on: push: branches: - "master" tags: - "*" workflow_dispatch: jobs: buildlinux: name: Linux x64 runs-on: ubuntu-22.04 steps: - name: Prepare Environment run: | sudo apt-get install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-randr0 libxkbcommon-x11-0 libfuse2 - name: Prepare Qt Libraries uses: jurplel/install-qt-action@v3 - name: Clone uses: actions/checkout@v3 - name: Compile run: | qmake CONFIG+=release PREFIX=/usr SavvyCAN.pro make -j`grep -c ^processor /proc/cpuinfo` - name: Package run: | make INSTALL_ROOT=appdir install wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" chmod a+x linuxdeployqt-continuous-x86_64.AppImage ./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/SavvyCAN.desktop -appimage -extra-plugins=iconengines,platformthemes/libqgtk3.so,canbus - uses: actions/upload-artifact@v4 with: name: SavvyCAN-Linux_x64.AppImage path: SavvyCAN-*x86_64.AppImage buildmacos-arm64: name: macOS ARM64 runs-on: macos-15 steps: - name: Prepare macOS Environment run: | brew install qt@5 brew link qt@5 --force - name: Clone uses: actions/checkout@v3 - name: Compile run: | qmake CONFIG+=release CONFIG+=sdk_no_version_check SavvyCAN.pro make -j`sysctl kern.aioprocmax | awk '{print $2}'` lrelease translations/*.ts - name: Package run: | mkdir -p SavvyCAN.app/Contents/MacOS/translations mkdir -p SavvyCAN.app/Contents/MacOS/help mkdir -p SavvyCAN.app/Contents/Resources/licenses cp -R translations/*.qm SavvyCAN.app/Contents/MacOS/translations cp -R help/* SavvyCAN.app/Contents/MacOS/help cp LICENSE SavvyCAN.app/Contents/Resources/licenses/SavvyCAN-MIT.txt cp THIRD-PARTY.md licenses/GPL-3.0.txt licenses/LGPL-3.0.txt SavvyCAN.app/Contents/Resources/licenses/ macdeployqt SavvyCAN.app -dmg mv SavvyCAN.dmg SavvyCAN_arm64.dmg - uses: actions/upload-artifact@v4 with: name: SavvyCAN-macOS_ARM64.dmg path: SavvyCAN_arm64.dmg buildwindows: name: Windows x64 runs-on: windows-2022 steps: - name: Prepare Qt Libraries uses: jurplel/install-qt-action@v3 - name: Clone uses: actions/checkout@v3 - name: Compile shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" qmake CONFIG+=release SavvyCAN.pro nmake /C - name: Package run: | mkdir package copy "release/SavvyCAN.exe" package/ mkdir package/help copy translations/*.qm package/translations/ copy help/*.md package/help/ mkdir package/help/images copy help/images/*.* package/help/images/ mkdir package/examples copy examples/*.* package/examples/ copy "${Env:Qt5_Dir}/bin/Qt5Core.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5Gui.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5Network.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5PrintSupport.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5Qml.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5SerialBus.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5SerialPort.dll" package/ copy "${Env:Qt5_Dir}/bin/Qt5Widgets.dll" package/ mkdir package/imageformats copy "${Env:Qt5_Dir}/plugins/imageformats/*.*" package/imageformats/ mkdir package/platforms copy "${Env:Qt5_Dir}/plugins/platforms/*.*" package/platforms/ mkdir package/styles copy "${Env:Qt5_Dir}/plugins/styles/*.*" package/styles/ mkdir package/canbus copy "${Env:Qt5_Dir}/plugins/canbus/*.*" package/canbus/ mkdir package/licenses copy LICENSE package/licenses/SavvyCAN-MIT.txt copy THIRD-PARTY.md package/licenses/ copy licenses/GPL-3.0.txt package/licenses/ copy licenses/LGPL-3.0.txt package/licenses/ - uses: actions/upload-artifact@v4 with: name: SavvyCAN-Windows_x64 path: package pre-release: name: "pre-release" runs-on: "ubuntu-latest" needs: [buildwindows, buildmacos-arm64, buildlinux] if: github.ref == 'refs/heads/master' steps: - uses: actions/checkout@v3 - uses: actions/download-artifact@v4.1.7 - name: Display structure of downloaded files run: zip -r SavvyCAN-Windows_x64_CIBuild.zip SavvyCAN-Windows_x64 - uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" automatic_release_tag: "continuous" prerelease: true title: "Development Build" files: | SavvyCAN-Linux_x64.AppImage/SavvyCAN-*x86_64.AppImage SavvyCAN-Windows_x64_CIBuild.zip SavvyCAN-macOS_ARM64.dmg/SavvyCAN_arm64.dmg release: name: "release" runs-on: "ubuntu-latest" needs: [buildwindows, buildmacos-arm64, buildlinux] if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v3 - uses: actions/download-artifact@v4.1.7 - name: Zip Windows build run: zip -r SavvyCAN-Windows_x64_CIBuild.zip SavvyCAN-Windows_x64 - uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" automatic_release_tag: "${{ github.ref_name }}" prerelease: false title: "SavvyCAN ${{ github.ref_name }}" files: | SavvyCAN-Linux_x64.AppImage/SavvyCAN-*x86_64.AppImage SavvyCAN-Windows_x64_CIBuild.zip SavvyCAN-macOS_ARM64.dmg/SavvyCAN_arm64.dmg