Clean up delay functions #2353
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| pull_request: | |
| # Run automatically every monday | |
| schedule: | |
| - cron: 1 12 * * 1 | |
| env: | |
| # Override OSX architecture detection. Required for CMake versions < 3.19.2. | |
| CMAKE_OSX_ARCHITECTURES: arm64 | |
| jobs: | |
| host: | |
| strategy: | |
| matrix: | |
| sys: | |
| - {os: 'macos', shell: 'bash'} | |
| - {os: 'ubuntu', shell: 'bash'} | |
| - {os: 'windows', shell: 'pwsh'} | |
| - {os: 'windows', shell: 'msys2'} | |
| cmake: ['3.10.0', '3.16.0', '3.21.0', '4.0.0', 'latest'] | |
| exclude: | |
| # GitHub runners use Visual Studio 2022. Support added in CMake 3.21. | |
| - sys: {os: 'windows', shell: 'pwsh'} | |
| cmake: '3.10.0' | |
| - sys: {os: 'windows', shell: 'pwsh'} | |
| cmake: '3.16.0' | |
| # MSYS2 always supplies the latest cmake. | |
| - sys: {os: 'windows', shell: 'msys2'} | |
| cmake: '3.10.0' | |
| - sys: {os: 'windows', shell: 'msys2'} | |
| cmake: '3.16.0' | |
| - sys: {os: 'windows', shell: 'msys2'} | |
| cmake: '3.21.0' | |
| - sys: {os: 'windows', shell: 'msys2'} | |
| cmake: '4.0.0' | |
| include: | |
| - sys: {os: 'windows', shell: 'pwsh'} | |
| cmake_args: >- | |
| -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe | |
| -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake | |
| --install-prefix=$env:GITHUB_WORKSPACE/install | |
| - sys: {os: 'windows', shell: 'msys2'} | |
| cmake_args: >- | |
| --install-prefix=/usr/local | |
| # Don't cancel all builds when one fails | |
| fail-fast: false | |
| runs-on: ${{ matrix.sys.os }}-latest | |
| defaults: | |
| run: | |
| shell: '${{ matrix.sys.shell }} {0}' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup cmake | |
| uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: ${{ matrix.cmake }} | |
| if: matrix.sys.shell != 'msys2' | |
| - name: Install dependencies (macOS) | |
| run: brew install fftw | |
| if: matrix.sys.os == 'macos' | |
| - name: Install dependencies (Ubuntu) | |
| run: | | |
| sudo apt update | |
| sudo apt install libfftw3-dev libusb-1.0-0-dev | |
| if: matrix.sys.os == 'ubuntu' | |
| - name: Install dependencies (Windows) | |
| run: vcpkg install --triplet=x64-windows libusb fftw3 pthreads pkgconf | |
| if: matrix.sys.os == 'windows' && matrix.sys.shell != 'msys2' | |
| - name: Setup MSYS (Windows) | |
| if: matrix.sys.os == 'windows' && matrix.sys.shell == 'msys2' | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: UCRT64 | |
| install: >- | |
| git | |
| make | |
| mingw-w64-ucrt-x86_64-cmake | |
| mingw-w64-ucrt-x86_64-toolchain | |
| mingw-w64-ucrt-x86_64-libusb | |
| mingw-w64-ucrt-x86_64-fftw | |
| # Build libhackrf and hackrf-tools together | |
| - name: Configure & Build | |
| run: | | |
| cmake -E make_directory host/build | |
| cd host/build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release ${{matrix.cmake_args}} | |
| cmake --build . --config Release | |
| # Build libhackrf ONLY | |
| - name: Configure & Build (libhackrf) | |
| run: | | |
| cmake -E make_directory host/libhackrf/build | |
| cd host/libhackrf/build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_args }} | |
| cmake --build . --config Release | |
| - name: Install (libhackrf) | |
| run: | | |
| sudo cmake --install host/libhackrf/build --config Release | |
| if: matrix.sys.os != 'windows' && matrix.cmake != '3.10.0' | |
| - name: Install (libhackrf, CMake 3.10) | |
| run: | | |
| sudo cmake --build host/libhackrf/build --target install --config Release | |
| if: matrix.sys.os != 'windows' && matrix.cmake == '3.10.0' | |
| - name: Install (libhackrf, Windows) | |
| run: cmake --install host/libhackrf/build --config Release | |
| if: matrix.sys.os == 'windows' | |
| # Build hackrf-tools ONLY | |
| - name: Configure & Build (hackrf-tools) | |
| run: | | |
| cmake -E make_directory host/hackrf-tools/build | |
| cd host/hackrf-tools/build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release ${{ matrix.cmake_args }} | |
| cmake --build . --config Release | |
| - name: Install (hackrf-tools) | |
| run: | | |
| sudo cmake --install host/hackrf-tools/build --config Release | |
| if: matrix.sys.os != 'windows' && matrix.cmake != '3.10.0' | |
| - name: Install (hackrf-tools, CMake 3.10) | |
| run: | | |
| sudo cmake --build host/hackrf-tools/build --target install --config Release | |
| if: matrix.sys.os != 'windows' && matrix.cmake == '3.10.0' | |
| - name: Install (hackrf-tools, Windows) | |
| run: cmake --install host/hackrf-tools/build --config Release | |
| if: matrix.sys.os == 'windows' | |
| # Publish the contents of install/bin (which should be the combination libhackrf and host-tools) for Windows | |
| - name: Publish Artifacts (Windows) | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: hackrf-tools-windows | |
| path: ${{github.workspace}}/install/bin | |
| if: matrix.sys.os == 'windows' && matrix.cmake == 'latest' && matrix.sys.shell == 'pwsh' | |
| firmware: | |
| strategy: | |
| matrix: | |
| os: ['macos', 'ubuntu', 'windows'] | |
| board: ['HACKRF_ONE', 'JAWBREAKER', 'RAD1O', 'PRALINE', 'UNIVERSAL'] | |
| cmake: ['3.12.0', 'latest'] | |
| exclude: | |
| - os: 'windows' | |
| cmake: '3.12.0' | |
| # GitHub doesn't give us many macOS runners, so don't build for every board. | |
| # We just need to know that building firmware works on macOS. Use PRALINE | |
| # since that's the most complicated one due to FPGA bitstreams. | |
| - os: 'macos' | |
| board: 'HACKRF_ONE' | |
| - os: 'macos' | |
| board: 'JAWBREAKER' | |
| - os: 'macos' | |
| board: 'RAD1O' | |
| # Don't cancel all builds when one fails | |
| fail-fast: false | |
| runs-on: ${{ matrix.os }}-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Setup cmake | |
| uses: lukka/get-cmake@latest | |
| with: | |
| cmakeVersion: ${{ matrix.cmake }} | |
| if: matrix.os != 'windows' | |
| - name: Install Arm GNU Toolchain | |
| uses: carlosperate/arm-none-eabi-gcc-action@v1 | |
| if: matrix.os != 'windows' | |
| - name: Install dependencies (macOS) | |
| run: | | |
| brew install dfu-util | |
| python3 -m venv environment && source environment/bin/activate | |
| python3 -m pip install PyYAML | |
| if: matrix.os == 'macos' | |
| - name: Install dependencies (Ubuntu) | |
| run: | | |
| python3 -m venv environment && source environment/bin/activate | |
| python3 -m pip install PyYAML | |
| sudo apt install dfu-util | |
| if: matrix.os == 'ubuntu' | |
| - name: Build libopencm3 | |
| shell: bash | |
| working-directory: ${{github.workspace}}/firmware/libopencm3/ | |
| run: | | |
| source ../../environment/bin/activate | |
| make | |
| if: matrix.os != 'windows' | |
| - name: Create Build Environment | |
| run: cmake -E make_directory ${{github.workspace}}/firmware/build | |
| if: matrix.os != 'windows' | |
| - name: Configure CMake | |
| shell: bash | |
| working-directory: ${{github.workspace}}/firmware/build | |
| run: cmake $GITHUB_WORKSPACE/firmware/ -DCMAKE_BUILD_TYPE=Release -DBOARD=${{ matrix.board }} | |
| if: matrix.os != 'windows' | |
| - name: Build | |
| working-directory: ${{github.workspace}}/firmware/build | |
| shell: bash | |
| run: | | |
| source ../../environment/bin/activate | |
| cmake --build . --config Release | |
| if: matrix.os != 'windows' | |
| - name: Setup MSYS (Windows) | |
| if: matrix.os == 'windows' | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: UCRT64 | |
| update: true | |
| install: >- | |
| git | |
| make | |
| mingw-w64-ucrt-x86_64-arm-none-eabi-gcc | |
| mingw-w64-ucrt-x86_64-cmake | |
| mingw-w64-ucrt-x86_64-dfu-util | |
| mingw-w64-ucrt-x86_64-python-yaml | |
| - name: Build with MSYS (Windows) | |
| if: matrix.os == 'windows' | |
| shell: msys2 {0} | |
| run: | | |
| mkdir firmware/build | |
| cd firmware/build | |
| cmake -G "MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release -DBOARD=${{ matrix.board }} .. | |
| make |