@@ -14,10 +14,12 @@ function build_micropython_red_vision {
1414 pip install freezefs
1515
1616 # Set Pico SDK path to $GITHUB_WORKSPACE/micropython/lib/pico-sdk if $GITHUB_WORKSPACE is set, otherwise use the current directory
17+ # https://stackoverflow.com/a/246128/4783963
18+ SCRIPT_DIR=$( cd -- " $( dirname -- " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd )
1719 if [ -n " $GITHUB_WORKSPACE " ]; then
1820 export PICO_SDK_PATH=" $GITHUB_WORKSPACE /micropython/lib/pico-sdk"
1921 else
20- export PICO_SDK_PATH=$( dirname " $0 " ) / lib/pico-sdk
22+ export PICO_SDK_PATH=" $SCRIPT_DIR /../ lib/pico-sdk"
2123 fi
2224
2325 # Clone the Red Vision submodule
@@ -27,16 +29,31 @@ function build_micropython_red_vision {
2729 make -C mpy-cross ${MAKEOPTS}
2830
2931 # Update necessary MicroPython submodules
30- make -C ports/rp2 BOARD=SPARKFUN_XRP_CONTROLLER submodules
32+ make -C ports/rp2 \
33+ BOARD=SPARKFUN_XRP_CONTROLLER \
34+ BOARD_VARIANT=RED_VISION \
35+ submodules
3136
3237 # Build OpenCV
3338 make -C lib/red_vision/micropython-opencv PLATFORM=rp2350 --no-print-directory ${MAKEOPTS}
3439
3540 # Archive the examples directory
3641 python3 -m freezefs lib/red_vision/red_vision_examples lib/red_vision/extract_red_vision_examples.py --on-import=extract --compress --overwrite always
3742
43+ # Set CMake arguments for Pico SDK to use MicroPython-OpenCV malloc wrappers
44+ # and enable C++ exceptions
45+ export CMAKE_ARGS=" -DSKIP_PICO_MALLOC=1 -DPICO_CXX_ENABLE_EXCEPTIONS=1"
46+
3847 # Build firmware
39- make -C lib/red_vision PORT_DIR=~ /micropython/ports/rp2 BOARD=SPARKFUN_XRP_CONTROLLER --no-print-directory ${MAKEOPTS}
48+ make -C ports/rp2 \
49+ BOARD=SPARKFUN_XRP_CONTROLLER \
50+ BOARD_VARIANT=RED_VISION \
51+ USER_C_MODULES=" $SCRIPT_DIR /../lib/red_vision/micropython-opencv/micropython_opencv.cmake" \
52+ FROZEN_MANIFEST=" $SCRIPT_DIR /../lib/red_vision/manifest.py" \
53+ --no-print-directory ${MAKEOPTS}
54+
55+ # Unset CMake arguments to avoid affecting other builds
56+ unset CMAKE_ARGS
4057
4158 # Rename firmware file to identify it as the Red Vision build and which board it's for
4259 mv ports/rp2/build-SPARKFUN_XRP_CONTROLLER-RED_VISION/firmware.uf2 ports/rp2/build-SPARKFUN_XRP_CONTROLLER-RED_VISION/RED_VISION_MICROPYTHON_SPARKFUN_XRP_CONTROLLER.uf2
0 commit comments