Skip to content

Commit 602f64a

Browse files
committed
Remove Makefile from Red Vision
Update build script with the relevant Make and Cmake arguments Also fix PICO_SDK_PATH for local builds
1 parent 6a1d922 commit 602f64a

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

lib/red_vision

tools/build_red_vision.sh

100644100755
Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)