mirror of
https://github.com/blackmagic-debug/blackmagic.git
synced 2025-10-14 02:58:36 +08:00
440 lines
14 KiB
YAML
440 lines
14 KiB
YAML
name: build PR
|
|
|
|
# Controls when the workflow will run
|
|
on:
|
|
# Triggers the workflow on push or pull request events but only for the main branch
|
|
pull_request:
|
|
branches: ['main']
|
|
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
# This controls the concurrency level for the jobs and how it's calculated
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
|
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
jobs:
|
|
# This workflow contains a job for each supported OS in the form `build-<os>`
|
|
build-linux:
|
|
# Name the job more appropriately so we can tell which windows and which MinGW ABI is in use
|
|
name: 'build-linux (${{ matrix.os.name }}, ${{ matrix.probe }})'
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os.id }}
|
|
|
|
# We define a matrix of GCCs and OSes to build against so we can cover a variety of
|
|
# suitable compilation environments and early discover issues. The `build-and-upload`
|
|
# workflow contains an extended set.
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- {id: ubuntu-24.04, name: noble}
|
|
arm-compiler:
|
|
- '14.2.Rel1'
|
|
probe:
|
|
- '96b_carbon'
|
|
- 'blackpill-f401cc'
|
|
- 'blackpill-f401ce'
|
|
- 'blackpill-f411ce'
|
|
- 'bluepill'
|
|
- 'ctxlink'
|
|
- 'f072'
|
|
- 'f3'
|
|
- 'f4discovery'
|
|
- 'hydrabus'
|
|
- 'launchpad-icdi'
|
|
- 'native'
|
|
- 'native-uncommon'
|
|
- 'native-st-clones'
|
|
- 'native-riscv'
|
|
- 'native-remote'
|
|
- 'stlink'
|
|
- 'stlinkv3'
|
|
- 'swlink'
|
|
fail-fast: false
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
# Build a suitable runtime environment
|
|
- name: Runtime environment
|
|
shell: bash
|
|
env:
|
|
WORKSPACE: ${{ github.workspace }}
|
|
# The GITHUB_WORKSPACE step here fixes https://github.com/actions/runner/issues/2058 which is an ongoing issue.
|
|
run: |
|
|
echo "$GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
|
|
|
|
# Setup and use a suitable ARM GCC for the firmware
|
|
- name: Setup ARM GCC
|
|
uses: carlosperate/arm-none-eabi-gcc-action@v1
|
|
with:
|
|
release: ${{ matrix.arm-compiler }}
|
|
|
|
# Install and setup a suitable Meson + Ninja
|
|
- name: Setup Meson + Ninja
|
|
run: |
|
|
sudo apt install -y python3-pip python3-setuptools python3-wheel
|
|
sudo python3 -m pip install meson ninja
|
|
working-directory: ${{ runner.temp }}
|
|
|
|
# Install BMDA's deps (libftdi1, hidapi-hidraw)
|
|
- name: Install BMDA dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt-get -y install libftdi1-dev libhidapi-dev libudev-dev
|
|
|
|
# Record the versions of all the tools used in the build
|
|
- name: Version tools
|
|
run: |
|
|
cc --version
|
|
arm-none-eabi-gcc --version
|
|
meson --version
|
|
ninja --version
|
|
|
|
# Checkout the repository and branch to build under the default location
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
# Build the firmware for all platform variants (currently available)
|
|
- name: Build
|
|
run: |
|
|
meson setup build --cross-file cross-file/${{ matrix.probe }}.ini --werror
|
|
meson compile -C build
|
|
|
|
build-windows-msvc:
|
|
# Name the job more appropriately so we can tell which VS version is in use
|
|
name: 'build-msvc (meson, ${{ matrix.os }})'
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
# Set the shell so run steps will execute inside the native environment
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
|
|
# We define a matrix of compilers and OS versions to build against so we can cover a variety of
|
|
# suitable compilation environments and early discover issues. The `build-and-upload`
|
|
# workflow contains an extended set.
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- windows-2025
|
|
fail-fast: false
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
# Make the selected OS's MSVC available to the environment
|
|
- name: Setup compiler
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
with:
|
|
arch: x86_64
|
|
|
|
# Build a suitable runtime environment
|
|
- name: Runtime environment
|
|
env:
|
|
WORKSPACE: ${{ github.workspace }}
|
|
# The GITHUB_WORKSPACE step here fixes https://github.com/actions/runner/issues/2058 which is an ongoing issue.
|
|
run: |
|
|
echo "GITHUB_WORKSPACE=$(pwd)" >> $GITHUB_ENV
|
|
|
|
# Install and setup a suitable Meson + Ninja
|
|
- name: Setup Meson + Ninja
|
|
run: |
|
|
python3 -m pip install --upgrade pip setuptools wheel
|
|
python3 -m pip install meson ninja
|
|
|
|
# Record the versions of all the tools used in the build
|
|
- name: Version tools
|
|
run: |
|
|
cl /Bv
|
|
meson --version
|
|
ninja --version
|
|
|
|
# Checkout the repository and branch to build under the default location
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# Build the default BMDA configuration
|
|
- name: Build full BMDA
|
|
run: |
|
|
meson setup build
|
|
meson compile -C build
|
|
|
|
build-windows-mingw:
|
|
# Name the job more appropriately so we can tell which windows and which MinGW ABI is in use
|
|
name: 'build-mingw (${{ matrix.os }}, ${{ matrix.sys.abi }})'
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
# Set the shell so run steps will execute from in msys2 correctly by default
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
|
|
# We define a matrix of compilers and OS versions to build against so we can cover a variety of
|
|
# suitable compilation environments and early discover issues. The `build-and-upload`
|
|
# workflow contains an extended set.
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- windows-2025
|
|
sys:
|
|
- {abi: mingw64, env: x86_64, compiler: gcc}
|
|
- {abi: ucrt64, env: ucrt-x86_64, compiler: gcc}
|
|
- {abi: clang64, env: clang-x86_64, compiler: clang}
|
|
fail-fast: false
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
# Install a suitable system compiler for the build
|
|
- name: Use MinGW from MSYS
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{matrix.sys.abi}}
|
|
update: true
|
|
path-type: inherit
|
|
pacboy: >-
|
|
toolchain:p
|
|
meson:p
|
|
|
|
# Build a suitable runtime environment
|
|
- name: Runtime environment
|
|
env:
|
|
WORKSPACE: ${{ github.workspace }}
|
|
# The GITHUB_WORKSPACE step here fixes https://github.com/actions/runner/issues/2058 which is an ongoing issue.
|
|
run: |
|
|
echo "$GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
|
|
|
|
# Configure the system toolchain environment
|
|
- name: Setup system GCC
|
|
if: matrix.sys.compiler == 'gcc'
|
|
run: |
|
|
CXX=${CC/#gcc/g++}
|
|
echo "CC=$CC" >> $GITHUB_ENV
|
|
echo "CXX=$CXX" >> $GITHUB_ENV
|
|
env:
|
|
CC: ${{ matrix.sys.compiler }}
|
|
- name: Setup system Clang
|
|
if: matrix.sys.compiler == 'clang'
|
|
run: |
|
|
CXX=${CC/#clang/clang++}
|
|
echo "CC=$CC" >> $GITHUB_ENV
|
|
echo "CXX=$CXX" >> $GITHUB_ENV
|
|
env:
|
|
CC: ${{ matrix.sys.compiler }}
|
|
|
|
# Record the versions of all the tools used in the build
|
|
- name: Version tools
|
|
run: |
|
|
$CC --version
|
|
meson --version
|
|
ninja --version
|
|
|
|
# Checkout the repository and branch to build under the default location
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# Install the dependencies needed for BMDA build
|
|
- name: Install extra BMDA dependencies
|
|
run: |
|
|
pacman --noconfirm -S mingw-w64-${{matrix.sys.env}}-libusb mingw-w64-${{matrix.sys.env}}-hidapi
|
|
|
|
# Build BMDA
|
|
- name: Build BMDA with MSYS2-provided dependencies
|
|
run: |
|
|
meson setup build
|
|
meson compile -C build
|
|
|
|
build-macos:
|
|
# Name the job more appropriately so we can tell which Xcode/macOS version is in use
|
|
name: 'build-macos (${{ matrix.os }})'
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
# Set the shell so run steps will execute inside the native environment
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
# We define a matrix of compilers and OS versions to build against so we can cover a variety of
|
|
# suitable compilation environments and early discover issues. The `build-and-upload`
|
|
# workflow contains an extended set.
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-13
|
|
- macos-14
|
|
- macos-15
|
|
- macos-latest
|
|
fail-fast: false
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
# Build a suitable runtime environment
|
|
- name: Runtime environment
|
|
env:
|
|
WORKSPACE: ${{ github.workspace }}
|
|
# The GITHUB_WORKSPACE step here fixes https://github.com/actions/runner/issues/2058 which is an ongoing issue.
|
|
run: |
|
|
echo "GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
|
|
|
|
# Install and setup a suitable Meson + Ninja
|
|
- name: Setup Meson + Ninja
|
|
run: |
|
|
brew install meson ninja
|
|
|
|
# Record the versions of all the tools used in the build
|
|
- name: Version tools
|
|
run: |
|
|
cc --version || true
|
|
ld --version || true
|
|
meson --version
|
|
ninja --version
|
|
|
|
# Checkout the repository and branch to build under the default location
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# Build the default BMDA configuration
|
|
- name: Build full BMDA
|
|
run: |
|
|
meson setup build
|
|
meson compile -C build
|
|
|
|
build-macos-homebrew:
|
|
# Name the job more appropriately so we can tell which GCC version is in use
|
|
name: 'build-macos (${{ matrix.os }}, ${{ matrix.compiler }})'
|
|
|
|
# The type of runner that the job will run on
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
# Set the shell so run steps will execute inside the native environment
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
# We define a matrix of compilers and OS versions to build against so we can cover a variety of
|
|
# suitable compilation environments and early discover issues. The `build-and-upload`
|
|
# workflow contains an extended set.
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- macos-14
|
|
- macos-15
|
|
compiler:
|
|
- gcc@11
|
|
- gcc@12
|
|
- gcc@13
|
|
- gcc@14
|
|
- gcc@15 # Don't use 'gcc', the symlink is versioned -- see below
|
|
fail-fast: false
|
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
steps:
|
|
# Build a suitable runtime environment
|
|
- name: Runtime environment
|
|
env:
|
|
WORKSPACE: ${{ github.workspace }}
|
|
# The GITHUB_WORKSPACE step here fixes https://github.com/actions/runner/issues/2058 which is an ongoing issue.
|
|
run: |
|
|
echo "$GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
|
|
|
|
# Install a suitable system compiler for the build
|
|
- name: Setup Homebrew GCC
|
|
run: |
|
|
brew install ${{ matrix.compiler }}
|
|
CC=${COMPILER/@/-}
|
|
CXX=${CC/#gcc/g++}
|
|
echo "CC=$CC" >> $GITHUB_ENV
|
|
echo "CXX=$CXX" >> $GITHUB_ENV
|
|
env:
|
|
COMPILER: ${{ matrix.compiler }}
|
|
|
|
# Install and setup a suitable Meson + Ninja
|
|
- name: Setup Meson + Ninja
|
|
run: |
|
|
brew install meson ninja
|
|
|
|
# Install BMDA's deps since they cannot be compiled with GCC
|
|
- name: Install BMDA dependencies
|
|
run: brew install libusb libftdi hidapi
|
|
|
|
# Record the versions of all the tools used in the build
|
|
- name: Version tools
|
|
shell: bash
|
|
run: |
|
|
$CC --version
|
|
$CXX --version
|
|
meson --version
|
|
ninja --version
|
|
|
|
# Checkout the repository and branch to build under the default location
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
# Build the default BMDA configuration
|
|
- name: Build full BMDA
|
|
run: |
|
|
meson setup build $BUILD_OPTS
|
|
meson compile -C build
|
|
|
|
size-diff:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
# Build a suitable runtime environment
|
|
- name: Runtime environment
|
|
shell: bash
|
|
env:
|
|
WORKSPACE: ${{ github.workspace }}
|
|
# The GITHUB_WORKSPACE step here fixes https://github.com/actions/runner/issues/2058 which is an ongoing issue.
|
|
run: |
|
|
echo "$GITHUB_WORKSPACE=`pwd`" >> $GITHUB_ENV
|
|
|
|
# Setup and use a suitable ARM GCC for the firmware
|
|
- name: Setup ARM GCC
|
|
uses: carlosperate/arm-none-eabi-gcc-action@v1
|
|
with:
|
|
release: '14.2.Rel1'
|
|
|
|
# Install and setup a suitable Meson + Ninja
|
|
- name: Setup Meson + Ninja
|
|
run: |
|
|
sudo apt install -y python3-pip python3-setuptools python3-wheel
|
|
sudo python3 -m pip install meson ninja
|
|
working-directory: ${{ runner.temp }}
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.base_ref }}
|
|
path: base
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha }}
|
|
path: head
|
|
|
|
# Build the base ref firmware for the largest Flash target available
|
|
- name: Build base
|
|
run: |
|
|
meson setup build --cross-file=cross-file/blackpill-f411ce.ini
|
|
meson compile -C build > build.log
|
|
working-directory: base
|
|
|
|
# Build the PR `HEAD` ref firmware for the largest Flash target available
|
|
- name: Build head
|
|
run: |
|
|
meson setup build --cross-file=cross-file/blackpill-f411ce.ini
|
|
meson compile -C build > build.log
|
|
working-directory: head
|
|
|
|
- name: Diff
|
|
run: head/scripts/diff_size.py base/build.log head/build.log
|