mboot fails to build
Port, board and/or hardware
ARDUINO_PORTENTA_H7
MicroPython version
git describe --dirty: v1.24.0-181-g495ce91ca; Building for ARDUINO_PORTENTA_H7.
But the board says MicroPython v1.25.0-preview.180.g495ce91ca on 2025-01-07; Arduino Portenta H7 with STM32H747 when I flash mpython (it already has mboot I guess).
I've also tried this for tag v1.24.0 and the same error occurs.
Reproduction
Following build instructions from here: https://github.com/micropython/micropython/tree/master/ports/stm32#build-instructions
git clone https://github.com/micropython/micropython.git
cd micropython/
make -C mpy-cross
cd ports/stm32/
make BOARD=ARDUINO_PORTENTA_H7 submodules
make BOARD=ARDUINO_PORTENTA_H7
make -C mboot BOARD=ARDUINO_PORTENTA_H7
Expected behaviour
mboot builds
Observed behaviour
....
....
CC ../../../lib/uzlib/header.c
CC ../../../lib/uzlib/tinflate.c
CC adc.c
CC main.c
main.c: In function 'build_flash_layout_str':
main.c:449:40: error: 'FLASH_LAYOUT_TEMPLATE' undeclared (first use in this function); did you mean 'FLASH_LAYOUT_STR_ALLOC'?
449 | #define FLASH_LAYOUT_STR_ALLOC (sizeof(FLASH_LAYOUT_TEMPLATE))
| ^~~~~~~~~~~~~~~~~~~~~
main.c:453:18: note: in expansion of macro 'FLASH_LAYOUT_STR_ALLOC'
453 | size_t len = FLASH_LAYOUT_STR_ALLOC - 1;
| ^~~~~~~~~~~~~~~~~~~~~~
main.c:449:40: note: each undeclared identifier is reported only once for each function it appears in
449 | #define FLASH_LAYOUT_STR_ALLOC (sizeof(FLASH_LAYOUT_TEMPLATE))
| ^~~~~~~~~~~~~~~~~~~~~
main.c:453:18: note: in expansion of macro 'FLASH_LAYOUT_STR_ALLOC'
453 | size_t len = FLASH_LAYOUT_STR_ALLOC - 1;
| ^~~~~~~~~~~~~~~~~~~~~~
main.c: In function 'pyb_usbdd_StrDescriptor':
main.c:449:40: error: 'FLASH_LAYOUT_TEMPLATE' undeclared (first use in this function); did you mean 'FLASH_LAYOUT_STR_ALLOC'?
449 | #define FLASH_LAYOUT_STR_ALLOC (sizeof(FLASH_LAYOUT_TEMPLATE))
| ^~~~~~~~~~~~~~~~~~~~~
main.c:1191:26: note: in expansion of macro 'FLASH_LAYOUT_STR_ALLOC'
1191 | char buf[FLASH_LAYOUT_STR_ALLOC];
| ^~~~~~~~~~~~~~~~~~~~~~
main.c:1191:22: error: unused variable 'buf' [-Werror=unused-variable]
1191 | char buf[FLASH_LAYOUT_STR_ALLOC];
| ^~~
cc1: all warnings being treated as errors
make: *** [Makefile:295: build-ARDUINO_PORTENTA_H7/main.o] Error 1
make: Leaving directory '........./micropython/ports/stm32/mboot'
Additional Information
Link to offending line in main.c for your convenience: https://github.com/micropython/micropython/blob/master/ports/stm32/mboot/main.c#L449
Code of Conduct
Yes, I agree
stm32/mboot: Generate FLASH_LAYOUT_STR at runtime on H5 MCUs.
The size of the flash varies among MCU variants. Instead of requiring a build-time variable to configure this, compute it at runtime using the special device information word accessible through the FLASH_SIZE macro.
This feature is currently only implemented for H5 MCUs, but can be extended to others.