Files
nuttx/tools/rp23xx/Config.mk
Niccolò Maggioni 86c466b6bc
Some checks failed
Build Documentation / build-html (push) Has been cancelled
tools/rp{2040,23xx}: Ensure that picotool is found or built
The current logic failed silently on some systems, maybe because of a
different default shell? This resulted in builds that completed
successfully but generated invalid UF2 files, which were refused by
the uC bootloader.

Now the check is properly enforced and picotool is either found in
the $PATH or built from the pico-sdk source.

Signed-off-by: Niccolò Maggioni <nicco.maggioni+nuttx@gmail.com>
2025-08-22 00:30:28 +08:00

64 lines
2.4 KiB
Makefile

############################################################################
# tools/rp23xx/Config.mk
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
# These are the macros that will be used in the NuttX make system to compile
# and assembly source files and to insert the resulting object files into an
# archive. These replace the default definitions at tools/Config.mk
# POSTBUILD -- Perform post build operations
PICOTOOL_FOUND := $(shell command -v picotool 2> /dev/null)
PICOTOOL_BIN_PATH ?= $(PICO_SDK_PATH)$(DELIM)_deps$(DELIM)picotool$(DELIM)picotool
define GEN_PICO_UF2
$(Q)echo "Generating: nuttx.uf2"; \
$(Q)$1 uf2 convert --quiet -t elf nuttx nuttx.uf2;
$(Q)([ $$? -eq 0 ] && echo nuttx.uf2 >> nuttx.manifest && echo "Done.")
endef
ifeq ($(CONFIG_RP23XX_UF2_BINARY),y)
ifdef PICOTOOL_FOUND
define POSTBUILD
$(call GEN_PICO_UF2, picotool)
endef
else
ifdef PICO_SDK_PATH
define POSTBUILD
$(warning "picotool not found in $$PATH, it will be sourced from pico-sdk")
$(Q)if [[ ! -x "$(PICOTOOL_BIN_PATH)" ]]; then \
echo "Warning: building picotool from pico-sdk will skip USB support! See https://github.com/raspberrypi/pico-sdk/issues/1827" >&2; \
cd $(PICO_SDK_PATH); \
cmake . >&/dev/null; \
make picotoolBuild >/dev/null; \
fi
$(call GEN_PICO_UF2, $(PICOTOOL_BIN_PATH))
endef
else
define POSTBUILD
$(error "Generating UF2 files requires picotool to be available in $$PATH, or $$PICO_SDK_PATH must be specified")
endef
endif
endif
endif