Parse included board files for pico_cmake_set declarations #2968
No reviewers
Labels
No labels
bazel
bluetooth
board settings
boot_stage2
bug
build
c++
can't reproduce
clang
clib-interface
cmsis
code cleanliness
code size
compiler version issues
cyw43_driver
debug
discussion
documentation
duplicate
dynamic_clock
elf2uf2
enhancement
errata
filesystem
flash layout
floating point
FreeRTOS
hardware_adc
hardware_claim
hardware_clocks
hardware_dma
hardware_exception
hardware_flash
hardware_gpio
hardware_i2c
hardware_irq
hardware_pio
hardware_pwm
hardware_rcp
hardware_rtc
hardware_spi
hardware_sync
hardware_uart
hardware_vreg
hardware_watchdog
hardware_xosc
help wanted
host
IAR
installation
invalid
linker scripts
lto
lwip
mbedtls
missing API
needs reporter detail
networking
newlib
newlib-multicore
non-c
non-cmake
non-gcc
openocd
orphan PR
OS integration
pico_async_context
pico_base
pico_binary_info
pico_flash
picolibc
pico_lwip
pico_malloc
pico_multicore
pico_printf
pico_runtime
pico_stdio
pico_stdio_usb
pico_sync
pico_time
pico_util
pioasm
port
question
review
review2
rtos interop
runtime init
static library
svd
test
tinyusb
vscode
wifi integration
wontfix
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gh-raspberrypi/pico-sdk!2968
Loading…
Reference in a new issue
No description provided.
Delete branch "cmake-set-includes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Currently if you have a
#includewithin a board header file (eg in vgaboard.h) anypico_cmake_setandpico_cmake_set_defaultdeclarations in the included file aren't parsed (#2112)This fixes #2112 by parsing those files for these comments. It only parses includes which start with
boards/, as it needs to extract the.hfile directly for use withpico_find_in_paths.The inclusion order matches what would be expected (I think) - ie:
gives
PICO_PLATFORM = rp2040frompico.h,gives
PICO_PLATFORM = rp2350,gives
PICO_FLASH_SIZE_BYTES = (8 * 1024 * 1024)(matching the pre-processor defines), andgives
PICO_FLASH_SIZE_BYTES = (2 * 1024 * 1024)frompico.h(again matching the pre-processor defines)This is a duplicate of #2113, which I accidentally closed
seems like this could be an elseif
@ -41,6 +42,13 @@ if (EXISTS ${PICO_BOARD_HEADER_FILE})else()seems like this could be an
elseif- not i don't particularly care, but since I'm gonna suggest you also prevent foot-gunning on recursive includes (which might otherwise be fixed by include guards in the headers themselves)I'm no CMake expert, but why is this regex doing
[ \t\]*when[ \t]*is being used on lines 35 and 38?Because this PR was originally created before https://github.com/raspberrypi/pico-sdk/pull/2526 - I will remove the unnecessary escapes
@ -14,6 +14,7 @@ pico_find_in_paths(PICO_BOARD_HEADER_FILE PICO_BOARD_HEADER_DIRS ${PICO_BOARD}.hif (EXISTS ${PICO_BOARD_HEADER_FILE})message("Using board configuration from ${PICO_BOARD_HEADER_FILE}")list(APPEND PICO_CONFIG_HEADER_FILES ${PICO_BOARD_HEADER_FILE})list(APPEND PICO_BOARD_INCLUDED_FILES ${PICO_BOARD_HEADER_FILE})Should
PICO_INCLUDED_BOARD_HEADER_FILEalso be appended toPICO_CONFIG_HEADER_FILES? 🤔 And if so, could you just usePICO_CONFIG_HEADER_FILESinstead ofPICO_BOARD_INCLUDED_FILES? (Apologies in advance if this is a stupid suggestion!)Is a similar fix to this needed for the Bazel side of things? Or is this only needed for CMake?
@ -14,6 +14,7 @@ pico_find_in_paths(PICO_BOARD_HEADER_FILE PICO_BOARD_HEADER_DIRS ${PICO_BOARD}.hif (EXISTS ${PICO_BOARD_HEADER_FILE})message("Using board configuration from ${PICO_BOARD_HEADER_FILE}")list(APPEND PICO_CONFIG_HEADER_FILES ${PICO_BOARD_HEADER_FILE})list(APPEND PICO_BOARD_INCLUDED_FILES ${PICO_BOARD_HEADER_FILE})No, it doesn't need to be added to
PICO_CONFIG_HEADER_FILES(used to makeconfig_autogen.h), as it's being included by the base board file already in the C/C++ buildBazel handles boards differently to CMake, and doesn't use the
pico_board_cmake_set/pico_board_cmake_set_defaultvalues, so this fix isn't needed there