66 strategy :
77 fail-fast : false
88 matrix :
9- os : [ubuntu-latest, windows-latest, macos-14 ]
9+ os : [ubuntu-latest, windows-latest, macos-15 ]
1010 runs-on : ${{ matrix.os }}
1111 steps :
1212 - name : Checkout PicoRVD
13- uses : actions/checkout@v3
13+ uses : actions/checkout@v6
1414 with :
1515 path : PicoRVD
1616
17- - name : Checkout pico-sdk/1.5.1
18- uses : actions/checkout@v3
17+ - name : Checkout pico-sdk/2.2.0
18+ uses : actions/checkout@v6
1919 with :
2020 repository : raspberrypi/pico-sdk
21- ref : 1.5.1
21+ ref : 2.2.0
2222 path : pico-sdk
2323
2424 - name : Checkout pico-sdk submodules
@@ -29,21 +29,73 @@ jobs:
2929 if : ${{ matrix.os == 'windows-latest' }}
3030 working-directory : ${{github.workspace}}/PicoRVD
3131 run : choco install .github/workflows/choco_packages.config
32+
33+ - name : Download and setup libusb
34+ if : ${{ matrix.os == 'windows-latest' }}
35+ shell : bash
36+ run : |
37+ echo "Downloading libusb..."
38+ curl -L https://github.com/libusb/libusb/releases/download/v1.0.29/libusb-1.0.29.7z -o libusb.7z
39+ echo "Extracting libusb..."
40+ 7z x libusb.7z -oC:/libusb -y
41+
42+ echo "Cloning picotool..."
43+ git clone https://github.com/raspberrypi/picotool.git --branch 2.2.0 --depth 1 C:/picotool-src
44+
45+ echo "Building picotool with libusb support..."
46+ mkdir -p C:/picotool-src/build
47+ cd C:/picotool-src/build
48+
49+ # Find the actual libusb paths
50+ LIBUSB_LIB=$(find C:/libusb -name "libusb-1.0.dll.a" | head -n1)
51+ LIBUSB_DLL=$(find C:/libusb -name "libusb-1.0.dll" | head -n1)
52+ LIBUSB_INCLUDE=$(find C:/libusb -name "libusb.h" -exec dirname {} \; | head -n1)
53+
54+ echo "Found libusb library: $LIBUSB_LIB"
55+ echo "Found libusb DLL: $LIBUSB_DLL"
56+ echo "Found libusb include: $LIBUSB_INCLUDE"
57+
58+ # Configure picotool with found libusb paths
59+ cmake -G "Ninja" \
60+ -DCMAKE_BUILD_TYPE=Release \
61+ -DPICO_SDK_PATH="${{github.workspace}}/pico-sdk" \
62+ -DLIBUSB_LIBRARIES="$LIBUSB_LIB" \
63+ -DLIBUSB_INCLUDE_DIR="$LIBUSB_INCLUDE" \
64+ ..
65+
66+ # Build
67+ ninja
68+
69+ # Verify picotool was built
70+ if [ ! -f "picotool.exe" ]; then
71+ echo "ERROR: picotool.exe was not built!"
72+ exit 1
73+ fi
74+
75+ # Create deployment directory
76+ mkdir -p C:/picotool-bin
77+
78+ # Copy picotool executable and required DLL
79+ cp picotool.exe C:/picotool-bin/
80+ cp "$LIBUSB_DLL" C:/picotool-bin/
81+
82+ # Add to PATH for subsequent steps
83+ echo "C:/picotool-bin" >> $GITHUB_PATH
3284
3385 - name : Install dependencies (Linux)
3486 if : ${{ matrix.os == 'ubuntu-latest' }}
3587 run : sudo apt-get update && sudo apt-get install -y build-essential git cmake gcc-arm-none-eabi gcc-riscv64-unknown-elf
3688
3789 - name : Install dependencies (Mac)
38- if : ${{ matrix.os == 'macos-14 ' }}
90+ if : ${{ matrix.os == 'macos-15 ' }}
3991 run : |
4092 brew install cmake make
4193 brew install gcc-arm-embedded
4294 brew tap riscv-software-src/riscv
4395 brew install riscv-tools
4496
4597 - name : Build Project (CH32V003 Blinky)
46- if : ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'macos-14 ' }}
98+ if : ${{ matrix.os == 'ubuntu-latest' || matrix.os == 'macos-15 ' }}
4799 working-directory : ${{github.workspace}}/PicoRVD
48100 shell : bash
49101 run : |
65117
66118 - name : Upload UF2 File
67119 if : ${{ matrix.os == 'ubuntu-latest' }}
68- uses : actions/upload-artifact@v3
120+ uses : actions/upload-artifact@v6
69121 with :
70122 name : PicoRVD.uf2
71123 path : ${{github.workspace}}/PicoRVD/bin/picorvd.uf2
0 commit comments