name: C/C++ CI on: [push] concurrency: group: environment-${{ github.head_ref }} cancel-in-progress: true jobs: build-linux: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: repository: 'davidgiven/fluxengine' path: 'fluxengine' - uses: actions/checkout@v4 with: repository: 'davidgiven/fluxengine-testdata' path: 'fluxengine-testdata' - name: apt run: | sudo apt install libudev-dev libsqlite3-dev protobuf-compiler libwxgtk3.0-gtk3-dev libfmt-dev libprotobuf-dev - name: make run: CXXFLAGS="-Wp,-D_GLIBCXX_ASSERTIONS" make -j`nproc` -C fluxengine #build-linux-debian-11: # runs-on: ubuntu-22.04 # container: debian:11 # steps: # - uses: actions/checkout@v4 # with: # repository: 'davidgiven/fluxengine' # path: 'fluxengine' # - uses: actions/checkout@v4 # with: # repository: 'davidgiven/fluxengine-testdata' # path: 'fluxengine-testdata' # - name: apt update # run: apt update # - name: apt # run: > # apt install -y python3 make xz-utils python3 python3-hamcrest # protobuf-compiler libprotobuf-dev libsqlite3-dev # libfmt-dev libprotobuf-dev wx-common pkg-config # libudev-dev g++ libwxgtk3.0-gtk3-dev # - name: make # run: make -C fluxengine build-macos-current: strategy: matrix: runs-on: [macos-13, macos-latest] runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v4 with: repository: 'davidgiven/fluxengine' path: 'fluxengine' - uses: actions/checkout@v4 with: repository: 'davidgiven/fluxengine-testdata' path: 'fluxengine-testdata' - name: brew run: | brew install sqlite pkg-config libusb protobuf wxwidgets fmt make coreutils dylibbundler libjpeg - name: make run: gmake -C fluxengine - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: ${{ github.event.repository.name }}.${{ github.sha }}.fluxengine.${{ runner.arch }}.pkg path: | fluxengine/FluxEngine.pkg fluxengine/FluxEngine.app.zip build-windows: runs-on: windows-latest steps: - name: setup WSL run: | curl -L https://github.com/WhitewaterFoundry/Fedora-Remix-for-WSL/releases/download/41.0.0/Fedora-Remix-for-WSL-SL_41.0.0.0_x64_arm64.msixbundle -o fedora.msixbundle unzip fedora.msixbundle Fedora-Remix-for-WSL-SL_41.0.0.0_x64.msix unzip Fedora-Remix-for-WSL-SL_41.0.0.0_x64.msix install.tar.gz wsl --update wsl --set-default-version 1 wsl --import fedora fedora install.tar.gz wsl --set-default fedora wsl sh -c 'dnf -y install https://github.com/rpmsphere/noarch/raw/master/r/rpmsphere-release-40-1.noarch.rpm' wsl sh -c 'dnf -y install gcc gcc-c++ protobuf-c-compiler protobuf-devel fmt-devel systemd-devel sqlite-devel wxGTK-devel mingw32-gcc mingw32-gcc-c++ mingw32-zlib-static mingw32-protobuf-static mingw32-sqlite-static mingw32-wxWidgets3-static mingw32-libpng-static mingw32-libjpeg-static mingw32-libtiff-static mingw32-nsis png2ico ninja-build' - name: fix line endings run: | git config --global core.autocrlf false git config --global core.eol lf - uses: actions/checkout@v4 with: repository: 'davidgiven/fluxengine' path: 'fluxengine' - uses: actions/checkout@v4 with: repository: 'davidgiven/fluxengine-testdata' path: 'fluxengine-testdata' - name: run run: | wsl sh -c 'make -C fluxengine BUILDTYPE=windows -j$(nproc)' - name: nsis run: | wsl sh -c 'cd fluxengine && strip fluxengine.exe -o fluxengine-stripped.exe' wsl sh -c 'cd fluxengine && strip fluxengine-gui.exe -o fluxengine-gui-stripped.exe' wsl sh -c 'cd fluxengine && makensis -v2 -nocd -dOUTFILE=fluxengine-installer.exe extras/windows-installer.nsi' - name: zip run: | wsl sh -c 'cd fluxengine && zip -9 fluxengine-windows.zip fluxengine.exe fluxengine-gui.exe upgrade-flux-file.exe brother120tool.exe brother240tool.exe FluxEngine.cydsn/CortexM3/ARM_GCC_541/Release/FluxEngine.hex fluxengine-installer.exe' - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: ${{ github.event.repository.name }}.${{ github.sha }}.windows.zip path: fluxengine/fluxengine-windows.zip