Skip to content

Update ImGui Android backend #1451

Update ImGui Android backend

Update ImGui Android backend #1451

Workflow file for this run

name: Build All
on: [push]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: write
jobs:
build_windows:
runs-on: windows-2019
steps:
- uses: actions/checkout@v4
- name: Get dependency version
id: win-deps-ver
shell: bash
run: commit=$(git ls-remote https://github.com/Aang23/vcpkg HEAD) && echo deps_version=${commit:0:6} >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v4
id: win-deps
with:
path: vcpkg
key: win-deps-${{steps.win-deps-ver.outputs.deps_version}}
- name: Clone pre-setup VCPKG
if: steps.win-deps.outputs.cache-hit != 'true'
run: git clone https://github.com/Aang23/vcpkg.git --depth 1
- name: Download SDRPlay API
if: steps.win-deps.outputs.cache-hit != 'true'
shell: powershell
run: Invoke-WebRequest -Uri "https://www.satdump.org/SDRPlay.zip" -OutFile ${{runner.workspace}}/sdrplay.zip
- name: Install SDRPlay API
if: steps.win-deps.outputs.cache-hit != 'true'
shell: powershell
run: 7z x ${{runner.workspace}}/sdrplay.zip -O"${{runner.workspace}}"
- name: Copy SDRPlay API Files
if: steps.win-deps.outputs.cache-hit != 'true'
shell: powershell
run: cp -r "${{runner.workspace}}/SDRPlay/API/inc/*" $Env:GITHUB_WORKSPACE/vcpkg/installed/x64-windows/include/; cp "${{runner.workspace}}/SDRPlay/API/x64/sdrplay_api.dll" $Env:GITHUB_WORKSPACE/vcpkg/installed/x64-windows/bin/sdrplay_api.dll; cp "${{runner.workspace}}/SDRPlay/API/x64/sdrplay_api.lib" $Env:GITHUB_WORKSPACE/vcpkg/installed/x64-windows/lib/sdrplay_api.lib;
- name: Download Aaronia RTSA API
if: steps.win-deps.outputs.cache-hit != 'true'
shell: powershell
run: Invoke-WebRequest -Uri "https://www.satdump.org/Aaronia_RTSA_Suite_PRO_2.2.0.12821_Setup_64bit.exe" -OutFile $Env:GITHUB_WORKSPACE/vcpkg/rtsa.exe
- name: Install Aaronia RTSA API
shell: cmd
run: start /wait vcpkg\rtsa.exe /q2 /install
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake -G "Visual Studio 16 2019" -DBUILD_MSVC=ON -DCMAKE_TOOLCHAIN_FILE=..\vcpkg\scripts\buildsystems\vcpkg.cmake "$Env:GITHUB_WORKSPACE" -DPLUGIN_AARONIA_SDR_SUPPORT=ON
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . --config $BUILD_TYPE
- name: Build Installer
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cpack -C $BUILD_TYPE
- name: Copy DLLs
working-directory: ${{runner.workspace}}/build
shell: powershell
run: cp $Env:GITHUB_WORKSPACE/vcpkg/installed/x64-windows/bin/*.dll Release
- name: Copy Resources
working-directory: ${{runner.workspace}}/build
shell: powershell
run: cp -r $Env:GITHUB_WORKSPACE/resources Release
- name: Copy Pipelines
working-directory: ${{runner.workspace}}/build
shell: powershell
run: cp -r $Env:GITHUB_WORKSPACE/pipelines ${{runner.workspace}}/build/Release;
- name: Create Plugins Dir
working-directory: ${{runner.workspace}}/build
shell: powershell
run: mkdir ${{runner.workspace}}/build/Release/plugins;
- name: Copy Plugins
working-directory: ${{runner.workspace}}/build
shell: powershell
run: cp ${{runner.workspace}}/build/plugins/Release/*.dll ${{runner.workspace}}/build/Release/plugins;
- name: Copy Config
working-directory: ${{runner.workspace}}/build
shell: powershell
run: cp $Env:GITHUB_WORKSPACE/satdump_cfg.json ${{runner.workspace}}/build/Release;
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: SatDump-Windows_x64_Portable
path: ${{runner.workspace}}/build/Release/*
- name: Upload Installer
uses: actions/upload-artifact@v4
with:
name: SatDump-Windows_x64_Installer
path: ${{runner.workspace}}/build/SatDump-*.exe
build_android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Add gradle PPA
run: sudo add-apt-repository ppa:cwchien/gradle -y
- name: Update repositories
run: sudo apt update
- name: Install packages
run: sudo apt install -y cmake ninja-build openjdk-11-jdk wget unzip gradle build-essential git python3-mako
# Setup Android SDK, and auto-accept licenses
- name: Install Android SDK
run: wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip && mkdir android-sdk-linux && unzip -qq android-sdk.zip -d android-sdk-linux && export ANDROID_HOME=./android-sdk-linux && echo y | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --update && (echo y; echo y; echo y; echo y; echo y; echo y; echo y; echo y) | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=android-sdk-linux --licenses
# Call SDKManager to install the Android NDK
- name: Install Android NDK
run: $GITHUB_WORKSPACE/android-sdk-linux/cmdline-tools/bin/sdkmanager --sdk_root=$GITHUB_WORKSPACE/android-sdk-linux --install "ndk;25.2.9519653" --channel=3
- name: Get dependency version
id: android-deps-ver
run: commit=$(git -C $GITHUB_WORKSPACE submodule status | grep android) && echo deps_version=${commit:1:6} >> $GITHUB_OUTPUT
- name: Cache dependencies
uses: actions/cache@v4
id: android-deps
with:
path: android/deps
key: android-deps-${{steps.android-deps-ver.outputs.deps_version}}
- name: Build dependencies
if: steps.android-deps.outputs.cache-hit != 'true'
shell: bash
run: git submodule update --init && cd $GITHUB_WORKSPACE/android/deps && export ANDROID_HOME=$GITHUB_WORKSPACE/android-sdk-linux && sh build.sh && rm .git
- name: Build
shell: bash
run: unset ANDROID_SDK_ROOT && export ANDROID_HOME=$GITHUB_WORKSPACE/android-sdk-linux && cd $GITHUB_WORKSPACE/android && gradle assembleDebug
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: SatDump-debug.apk
path: ${{runner.workspace}}/SatDump/android/app/build/outputs/apk/debug/app-debug.apk
build_linux:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update repositories
run: sudo apt update
- name: Install dependencies
run: sudo apt install -y libglfw3-dev libfftw3-dev libvolk2-dev build-essential cmake pkgconf libjpeg-dev libpng-dev libtiff-dev libairspy-dev libairspyhf-dev libhackrf-dev librtlsdr-dev libomp-dev libnng-dev libiio-dev libzstd-dev libad9361-dev libbladerf-dev libuhd-dev liblimesuite-dev ocl-icd-opencl-dev libjemalloc-dev
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: make -j8
- name: Package
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: make package
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: SatDump-Ubuntu-Latest
path: ${{runner.workspace}}/build/*.deb
build_linux_arm64:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: ARM64
steps:
- uses: actions/checkout@v4
- name: Update repositories
run: sudo apt update
- name: Install dependencies
run: sudo apt install -y libglfw3-dev libfftw3-dev libvolk2-dev build-essential cmake pkgconf libjpeg-dev libpng-dev libtiff-dev libairspy-dev libairspyhf-dev libhackrf-dev librtlsdr-dev libomp-dev libnng-dev libiio-dev libzstd-dev libad9361-dev libbladerf-dev libuhd-dev liblimesuite-dev ocl-icd-opencl-dev libjemalloc-dev
- name: Delete build dir
run: rm -rf ${{runner.workspace}}/build
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: make -j4
- name: Package
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: make package
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: SatDump-Pi64-Latest
path: ${{runner.workspace}}/build/*.deb
build_macos_intel:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install cmake volk jpeg libpng libtiff glfw airspy rtl-sdr hackrf mbedtls pkg-config libomp dylibbundler portaudio jemalloc
- name: Build airspyhf
run: git clone https://github.com/airspy/airspyhf.git && cd airspyhf && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j8 && sudo make install
- name: Build nng
run: git clone -b v1.6.0 https://github.com/nanomsg/nng && cd nng && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DNNG_ENABLE_TLS=ON -DNNG_TOOLS=OFF -DNNG_TESTS=OFF -DNNG_ENABLE_NNGCAT=OFF .. && make -j`nproc` && sudo make install
- name: Build FFTW3
run: wget http://www.fftw.org/fftw-3.3.9.tar.gz && tar xf fftw-3.3.9.tar.gz && rm fftw-3.3.9.tar.gz && cd fftw-3.3.9 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=false -DENABLE_FLOAT=true .. && make -j8 && sudo make install
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: make -j8
- name: Bundle
working-directory: ${{runner.workspace}}/build
shell: bash
env:
MACOS_TEAM: ${{ secrets.MACOS_TEAM }}
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
MACOS_SIGNING_SIGNATURE: ${{ secrets.MACOS_SIGNING_SIGNATURE }}
MACOS_NOTARIZATION_UN: ${{ secrets.MACOS_NOTARIZATION_UN }}
MACOS_NOTARIZATION_PWD: ${{ secrets.MACOS_NOTARIZATION_PWD }}
run: $GITHUB_WORKSPACE/macOS/bundle.sh Intel
- name: Upload DMG
uses: actions/upload-artifact@v4
with:
name: SatDump-macOS-Intel
path: ${{runner.workspace}}/build/*.dmg
build_macos_silicon:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install cmake volk jpeg libpng libtiff glfw airspy rtl-sdr hackrf mbedtls pkg-config libomp dylibbundler portaudio jemalloc
- name: Build airspyhf
run: git clone https://github.com/airspy/airspyhf.git && cd airspyhf && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j8 && sudo make install
- name: Build nng
run: git clone -b v1.6.0 https://github.com/nanomsg/nng && cd nng && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DNNG_ENABLE_TLS=ON -DNNG_TOOLS=OFF -DNNG_TESTS=OFF -DNNG_ENABLE_NNGCAT=OFF .. && make -j`nproc` && sudo make install
- name: Build FFTW3
run: wget http://www.fftw.org/fftw-3.3.9.tar.gz && tar xf fftw-3.3.9.tar.gz && rm fftw-3.3.9.tar.gz && cd fftw-3.3.9 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=false -DENABLE_FLOAT=true -DENABLE_THREADS=true -DENABLE_SSE=false -DENABLE_SSE2=false -DENABLE_AVX=false -DENABLE_AVX2=false .. && make -j8 && sudo make install
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build
- name: Configure CMake
working-directory: ${{runner.workspace}}/build
# Note the current convention is to use the -S and -B options here to specify source
# and build directories, but this is only available with CMake 3.13 and higher.
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: make -j6
- name: Bundle
working-directory: ${{runner.workspace}}/build
shell: bash
env:
MACOS_TEAM: ${{ secrets.MACOS_TEAM }}
MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
MACOS_SIGNING_SIGNATURE: ${{ secrets.MACOS_SIGNING_SIGNATURE }}
MACOS_NOTARIZATION_UN: ${{ secrets.MACOS_NOTARIZATION_UN }}
MACOS_NOTARIZATION_PWD: ${{ secrets.MACOS_NOTARIZATION_PWD }}
run: $GITHUB_WORKSPACE/macOS/bundle.sh Silicon
- name: Upload DMG
uses: actions/upload-artifact@v4
with:
name: SatDump-macOS-Silicon
path: ${{runner.workspace}}/build/*.dmg
# Yes, since I was asked to do like SDR++ for this I did look at how Ryzerth has done it :-)
update_nightly_release:
needs: [
"build_windows",
"build_linux",
"build_macos_intel",
"build_macos_silicon",
"build_linux_arm64",
] #, "build_android"]
runs-on: ubuntu-latest
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
- name: Install zip
run: sudo apt install -y unzip
- name: Copy files
run: mkdir satdump_out && cp SatDump-Ubuntu-Latest/satdump*.deb satdump_out/satdump_ubuntu_latest_amd64.deb && cp SatDump-macOS-Intel/SatDump-macOS-Intel.dmg satdump_out/SatDump-macOS-Intel.dmg && cp SatDump-macOS-Silicon/SatDump-macOS-Silicon.dmg satdump_out/SatDump-macOS-Silicon.dmg && (cd SatDump-Windows_x64_Portable && zip -r ../satdump_out/SatDump-Windows_x64_Portable.zip *) && cp SatDump-Windows_x64_Installer/SatDump-*.exe satdump_out/SatDump-Windows_x64_Installer.exe && cp SatDump-Pi64-Latest/satdump*.deb satdump_out/satdump_rpi64_latest_arm64.deb # && cp SatDump-debug.apk/app-debug.apk satdump_out/SatDump-debug.apk
- name: Update Nightly
run: gh release upload nightly satdump_out/* -R ${{github.repository}} --clobber