name: Build on: push: pull_request: # Run automatically every monday schedule: - cron: 1 12 * * 1 env: WIN_LIBUSB_INC: -DLIBUSB_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include/libusb-1.0 WIN_LIBUSB_LIB: -DLIBUSB_LIBRARIES=C:/vcpkg/installed/x64-windows/lib/libusb-1.0.lib WIN_FFTW_INC: -DFFTW_INCLUDES=C:/vcpkg/installed/x64-windows/include WIN_FFTW_LIB: -DFFTW_LIBRARIES=C:/vcpkg/installed/x64-windows/lib/fftw3f.lib WIN_PTHREAD_INC: -DTHREADS_PTHREADS_INCLUDE_DIR=C:/vcpkg/installed/x64-windows/include WIN_PTHREAD_LIB: -DTHREADS_PTHREADS_WIN32_LIBRARY=C:/vcpkg/installed/x64-windows/lib/pthreadvc3.lib jobs: host: strategy: matrix: os: ['macos-latest', 'ubuntu-latest', 'windows-latest'] # Don't cancel all builds when one fails fail-fast: false runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Install dependencies (macOS) run: brew install fftw if: matrix.os == 'macos-latest' - name: Install dependencies (Ubuntu) run: | sudo apt update sudo apt install libfftw3-dev libusb-1.0-0-dev if: matrix.os == 'ubuntu-latest' - name: Install dependencies (Windows) run: vcpkg install --triplet=x64-windows libusb fftw3 pthreads if: matrix.os == 'windows-latest' - name: Create Build Environment run: cmake -E make_directory ${{runner.workspace}}/host/build - name: Configure CMake working-directory: ${{runner.workspace}}/host/build run: cmake $GITHUB_WORKSPACE/host/ -DCMAKE_BUILD_TYPE=Release if: matrix.os != 'windows-latest' - name: Configure CMake (Windows) working-directory: ${{runner.workspace}}/host/build run: cmake $env:GITHUB_WORKSPACE/host/ $env:WIN_LIBUSB_INC $env:WIN_LIBUSB_LIB $env:WIN_FFTW_INC $env:WIN_FFTW_LIB $env:WIN_PTHREAD_INC $env:WIN_PTHREAD_LIB if: matrix.os == 'windows-latest' - name: Build working-directory: ${{runner.workspace}}/host/build run: cmake --build . --config Release - name: Create Build Environment (libhackrf) run: cmake -E make_directory ${{runner.workspace}}/host/libhackrf/build - name: Configure CMake (libhackrf) working-directory: ${{runner.workspace}}/host/libhackrf/build run: cmake $GITHUB_WORKSPACE/host/libhackrf/ -DCMAKE_BUILD_TYPE=Release if: matrix.os != 'windows-latest' - name: Configure CMake (libhackrf, Windows) working-directory: ${{runner.workspace}}/host/libhackrf/build run: cmake $env:GITHUB_WORKSPACE/host/libhackrf/ $env:WIN_LIBUSB_INC $env:WIN_LIBUSB_LIB $env:WIN_PTHREAD_INC $env:WIN_PTHREAD_LIB if: matrix.os == 'windows-latest' - name: Build (libhackrf) working-directory: ${{runner.workspace}}/host/libhackrf/build run: cmake --build . --config Release - name: Install (libhackrf) working-directory: ${{runner.workspace}}/host/libhackrf/build run: | sudo cmake --install . --config Release if: matrix.os != 'windows-latest' - name: Install (libhackrf, Windows) working-directory: ${{runner.workspace}}/host/libhackrf/build run: | cmake --install . --config Release --prefix=$env:GITHUB_WORKSPACE/install if: matrix.os == 'windows-latest' - name: Create Build Environment (hackrf-tools) run: cmake -E make_directory ${{runner.workspace}}/host/hackrf-tools/build - name: Configure CMake (hackrf-tools) working-directory: ${{runner.workspace}}/host/hackrf-tools/build run: cmake $GITHUB_WORKSPACE/host/hackrf-tools/ -DCMAKE_BUILD_TYPE=Release if: matrix.os != 'windows-latest' - name: Configure CMake (hackrf-tools, Windows) working-directory: ${{runner.workspace}}/host/hackrf-tools/build run: | cmake $env:GITHUB_WORKSPACE/host/hackrf-tools/ $env:WIN_FFTW_INC $env:WIN_FFTW_LIB -DLIBHACKRF_INCLUDE_DIR=$env:GITHUB_WORKSPACE/install/include/libhackrf -DLIBHACKRF_LIBRARIES=$env:GITHUB_WORKSPACE/install/bin/hackrf.lib if: matrix.os == 'windows-latest' - name: Build (hackrf-tools) working-directory: ${{runner.workspace}}/host/hackrf-tools/build run: cmake --build . --config Release # This step should work on Windows too, but currently MSVC fails to find # hackrf.h, despite us having installed it and specified its location in # the previous steps above. if: matrix.os != 'windows-latest' firmware: strategy: matrix: os: ['macos-latest', 'ubuntu-latest'] board: ['HACKRF_ONE', 'JAWBREAKER', 'RAD1O'] # Don't cancel all builds when one fails fail-fast: false runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 with: submodules: true - name: Install dependencies (macOS) run: | brew install --cask gcc-arm-embedded brew install dfu-util pip3 install PyYAML if: matrix.os == 'macos-latest' - name: Install dependencies (Ubuntu) run: | sudo apt install dfu-util gcc-arm-none-eabi if: matrix.os == 'ubuntu-latest' - name: Build libopencm3 shell: bash working-directory: ${{github.workspace}}/firmware/libopencm3/ run: make - name: Create Build Environment run: cmake -E make_directory ${{runner.workspace}}/firmware/build - name: Configure CMake shell: bash working-directory: ${{runner.workspace}}/firmware/build run: cmake $GITHUB_WORKSPACE/firmware/ -DCMAKE_BUILD_TYPE=Release -DBOARD=${{ matrix.board }} - name: Build working-directory: ${{runner.workspace}}/firmware/build shell: bash run: cmake --build . --config Release