# Makefile for micropython on Raspberry Pi RP2 # # This is a simple wrapper around cmake include ../../py/verbose.mk # Select the board to build for: ifdef BOARD_DIR # Custom board path - remove trailing slash and get the final component of # the path as the board name. BOARD ?= $(notdir $(BOARD_DIR:/=)) else # If not given on the command line, then default to RPI_PICO. BOARD ?= RPI_PICO BOARD_DIR ?= boards/$(BOARD) endif ifeq ($(wildcard $(BOARD_DIR)/.),) ifeq ($(findstring boards/PICO,$(BOARD_DIR)),boards/PICO) $(warning The PICO* boards have been renamed to RPI_PICO*) endif $(error Invalid BOARD specified: $(BOARD_DIR)) endif # If the build directory is not given, make it reflect the board name (and # optionally the board variant). ifneq ($(BOARD_VARIANT),) BUILD ?= build-$(BOARD)-$(BOARD_VARIANT) else BUILD ?= build-$(BOARD) endif ifeq ($(BUILD_VERBOSE),1) MAKE_ARGS += VERBOSE=1 # Picked up in Makefile generated by CMake endif CMAKE_ARGS += -DMICROPY_BOARD=$(BOARD) -DMICROPY_BOARD_DIR="$(abspath $(BOARD_DIR))" ifdef USER_C_MODULES CMAKE_ARGS += -DUSER_C_MODULES=${USER_C_MODULES} endif ifneq ($(FROZEN_MANIFEST),) CMAKE_ARGS += -DMICROPY_FROZEN_MANIFEST=${FROZEN_MANIFEST} endif ifeq ($(DEBUG),1) CMAKE_ARGS += -DCMAKE_BUILD_TYPE=Debug endif ifdef BOARD_VARIANT CMAKE_ARGS += -DMICROPY_BOARD_VARIANT=$(BOARD_VARIANT) endif ifdef MICROPY_PREVIEW_VERSION_2 CMAKE_ARGS += -DMICROPY_PREVIEW_VERSION_2=1 endif HELP_PICO_SDK_SUBMODULE ?= "\033[1;31mError: pico-sdk submodule is not initialized.\033[0m Run 'make submodules'" HELP_BUILD_ERROR ?= "See \033[1;31mhttps://github.com/micropython/micropython/wiki/Build-Troubleshooting\033[0m" all: $(Q)[ -f ../../lib/pico-sdk/README.md ] || (echo -e $(HELP_PICO_SDK_SUBMODULE); false) $(Q)[ -e $(BUILD)/Makefile ] || cmake -S . -B $(BUILD) -DPICO_BUILD_DOCS=0 ${CMAKE_ARGS} $(Q)$(MAKE) $(MAKE_ARGS) -C $(BUILD) || (echo -e $(HELP_BUILD_ERROR); false) clean: $(RM) -rf $(BUILD) deploy: all $(Q)picotool load -x $(BUILD)/firmware.elf # First ensure that pico-sdk is initialised, then run CMake with the # UPDATE_SUBMODULES flag to update necessary submodules for this board. # # This is done in a dedicated build directory as some CMake cache values are not # set correctly if not all submodules are loaded yet. submodules: $(Q)$(MAKE) -f ../../py/mkrules.mk GIT_SUBMODULES="lib/pico-sdk" submodules $(Q)cmake -S . -B $(BUILD)/submodules -DUPDATE_SUBMODULES=1 ${CMAKE_ARGS}