From ca5aeff27b394a5cad7d429eebd010328d6c0dde Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Thu, 29 Jan 2026 11:00:23 +0000 Subject: [PATCH 1/7] Add MSVC build test --- ...ackages.config => choco_packages_mingw.config} | 1 - .github/workflows/choco_packages_msvc.config | 4 ++++ .github/workflows/test.yml | 15 +++++++++++++-- model/model.h | 8 ++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) rename .github/workflows/{choco_packages.config => choco_packages_mingw.config} (78%) create mode 100644 .github/workflows/choco_packages_msvc.config diff --git a/.github/workflows/choco_packages.config b/.github/workflows/choco_packages_mingw.config similarity index 78% rename from .github/workflows/choco_packages.config rename to .github/workflows/choco_packages_mingw.config index d443f751..116f47f8 100644 --- a/.github/workflows/choco_packages.config +++ b/.github/workflows/choco_packages_mingw.config @@ -2,5 +2,4 @@ - diff --git a/.github/workflows/choco_packages_msvc.config b/.github/workflows/choco_packages_msvc.config new file mode 100644 index 00000000..73464cdf --- /dev/null +++ b/.github/workflows/choco_packages_msvc.config @@ -0,0 +1,4 @@ + + + + diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 14d63af0..0c6d52cc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,13 +11,17 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - generator: ["Ninja", "Unix Makefiles"] + generator: ["Ninja", "Unix Makefiles", "Visual Studio 17 2022"] mbedtls: ["mbedtls", ""] libusb: ["libusb", ""] compile: ["compile", ""] exclude: - os: 'windows-latest' generator: "Unix Makefiles" + - os: 'ubuntu-latest' + generator: "Visual Studio 17 2022" + - os: 'macos-latest' + generator: "Visual Studio 17 2022" - libusb: "" compile: "compile" runs-on: ${{ matrix.os }} @@ -25,10 +29,17 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Install compilers (Windows mingw) + if: runner.os == 'Windows' && matrix.generator == 'Ninja' + run: | + choco install -y .github/workflows/choco_packages_mingw.config + - name: Install compilers (Windows msvc) + if: runner.os == 'Windows' && matrix.generator == 'Visual Studio 17 2022' + run: | + choco install -y .github/workflows/choco_packages_msvc.config - name: Install dependencies (Windows) if: runner.os == 'Windows' run: | - choco install -y .github/workflows/choco_packages.config curl -L https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.7z -o libusb.7z 7z x libusb.7z -olibusb ls libusb diff --git a/model/model.h b/model/model.h index f942ec87..e17e33c7 100644 --- a/model/model.h +++ b/model/model.h @@ -12,6 +12,14 @@ #include "rp2350_a3_rom_end.h" #include "rp2350_a4_rom_end.h" +// tsk namespace is polluted on windows +#ifdef _WIN32 +#undef min +#undef max + +#define _CRT_SECURE_NO_WARNINGS +#endif + enum memory_type { rom, flash, From 6640ed3817242d6ac581f269c440a406bd5ff319 Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Thu, 29 Jan 2026 11:27:57 +0000 Subject: [PATCH 2/7] Install latest gcc-arm-embedded, and remove choco_packages files --- .github/workflows/choco_packages_mingw.config | 5 ----- .github/workflows/choco_packages_msvc.config | 4 ---- .github/workflows/test.yml | 9 +++------ 3 files changed, 3 insertions(+), 15 deletions(-) delete mode 100644 .github/workflows/choco_packages_mingw.config delete mode 100644 .github/workflows/choco_packages_msvc.config diff --git a/.github/workflows/choco_packages_mingw.config b/.github/workflows/choco_packages_mingw.config deleted file mode 100644 index 116f47f8..00000000 --- a/.github/workflows/choco_packages_mingw.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.github/workflows/choco_packages_msvc.config b/.github/workflows/choco_packages_msvc.config deleted file mode 100644 index 73464cdf..00000000 --- a/.github/workflows/choco_packages_msvc.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0c6d52cc..5a2137c2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,17 +29,14 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Install compilers (Windows mingw) + - name: Install mingw (Windows mingw) if: runner.os == 'Windows' && matrix.generator == 'Ninja' run: | - choco install -y .github/workflows/choco_packages_mingw.config - - name: Install compilers (Windows msvc) - if: runner.os == 'Windows' && matrix.generator == 'Visual Studio 17 2022' - run: | - choco install -y .github/workflows/choco_packages_msvc.config + choco install -y mingw --version=12.2.0 - name: Install dependencies (Windows) if: runner.os == 'Windows' run: | + choco install -y gcc-arm-embedded curl -L https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.7z -o libusb.7z 7z x libusb.7z -olibusb ls libusb From 1d8131da9dfc179efe4c65600fee613543eb456a Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Thu, 29 Jan 2026 11:38:52 +0000 Subject: [PATCH 3/7] Install Debug configuration, as it matters for MSVC --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5a2137c2..d6b583dc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -70,7 +70,7 @@ jobs: run: | cmake -S . -B build -G "${{ matrix.generator }}" -D PICO_SDK_PATH="${{ github.workspace }}/pico-sdk" ${{ !matrix.libusb && '-D PICOTOOL_NO_LIBUSB=1' || '' }} ${{ matrix.compile && '-D USE_PRECOMPILED=false' || '' }} cmake --build build - ${{ runner.os != 'Windows' && 'sudo' || '' }} cmake --install build + ${{ runner.os != 'Windows' && 'sudo' || '' }} cmake --install build --config Debug - name: Add to path (Windows) if: runner.os == 'Windows' run: echo "C:\Program Files (x86)\picotool\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append From 871dcce1179f8176419d05b6d7307177cf01590f Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Thu, 29 Jan 2026 11:48:00 +0000 Subject: [PATCH 4/7] Skip compiling elfs on Windows --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d6b583dc..91a861a4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,6 +24,9 @@ jobs: generator: "Visual Studio 17 2022" - libusb: "" compile: "compile" + - os: 'windows-latest' + # currently skipping compile for Windows, as gcc-arm-embedded package has broken links + compile: "compile" runs-on: ${{ matrix.os }} steps: From 2bc1046325404870b618d0be06405d48d2c4afb5 Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Thu, 29 Jan 2026 12:06:16 +0000 Subject: [PATCH 5/7] Test different arm-none-eabi-gcc on Windows & MacOS --- .github/workflows/test.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91a861a4..ccc30172 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,9 +24,6 @@ jobs: generator: "Visual Studio 17 2022" - libusb: "" compile: "compile" - - os: 'windows-latest' - # currently skipping compile for Windows, as gcc-arm-embedded package has broken links - compile: "compile" runs-on: ${{ matrix.os }} steps: @@ -36,10 +33,14 @@ jobs: if: runner.os == 'Windows' && matrix.generator == 'Ninja' run: | choco install -y mingw --version=12.2.0 + - name: Install arm-none-eabi-gcc (Windows & MacOS) + if: runner.os == 'Windows' || runner.os == 'macOS' + uses: carlosperate/arm-none-eabi-gcc-action@v1 + with: + release: 14.3.Rel1 - name: Install dependencies (Windows) if: runner.os == 'Windows' run: | - choco install -y gcc-arm-embedded curl -L https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.7z -o libusb.7z 7z x libusb.7z -olibusb ls libusb @@ -56,7 +57,6 @@ jobs: if: runner.os == 'macOS' run: | brew install libusb ninja - brew install --cask gcc-arm-embedded - name: Install dependencies (Linux) if: runner.os == 'Linux' From 848a8b0898a6dd742f2d1ef982bfbf8c4e4359f5 Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Thu, 29 Jan 2026 13:08:45 +0000 Subject: [PATCH 6/7] Compiling ELFs not supported on MSVC --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ccc30172..61b85aba 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,6 +24,10 @@ jobs: generator: "Visual Studio 17 2022" - libusb: "" compile: "compile" + - os: 'windows-latest' + # only precompiled ELFs supported for Windows MSVC + compile: "compile" + generator: "Visual Studio 17 2022" runs-on: ${{ matrix.os }} steps: From 0451673bf46af9e18139130007a1802bf9e8b0fa Mon Sep 17 00:00:00 2001 From: William Vinnicombe Date: Wed, 11 Feb 2026 11:29:59 +0000 Subject: [PATCH 7/7] Check if UF2 files are actually zip files, and unzip them --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 61b85aba..c804cfa1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -86,8 +86,11 @@ jobs: run: | picotool help curl -L https://datasheets.raspberrypi.com/soft/blink.uf2 -o blink.uf2 + unzip -o blink.uf2 || true curl -L https://datasheets.raspberrypi.com/soft/hello_world.uf2 -o hello_world.uf2 + unzip -o hello_world.uf2 || true curl -L https://datasheets.raspberrypi.com/soft/flash_nuke.uf2 -o flash_nuke.uf2 + unzip -o flash_nuke.uf2 || true picotool info -a blink.uf2 picotool info -a hello_world.uf2 picotool info -a flash_nuke.uf2