From 2692d9a4cbd57fe926fe6476332112329a584cf7 Mon Sep 17 00:00:00 2001 From: will-v-pi <108662275+will-v-pi@users.noreply.github.com> Date: Thu, 21 Nov 2024 23:47:51 +0000 Subject: [PATCH] Propogate changed pico_cmake_set_default values to the compilation (#2034) * Propogate non-default pico_cmake_set_default values through to compile definitions Add PICO_BOARD_CMAKE_OVERRIDES common scope variable, to contain any pico_cmake_set_default CMake variables which have been overwritten. This allows passing CMake arguments to the build, without needing extra target_compile_definitions. Also add pico_cmake_set_default PICO_RP2350_A2_SUPPORTED to enable/disable the E10 abs-block fix * Fix more board files missing pico_cmake_set_default PICO_RP2350_A2_SUPPORTED * Apply @lurch's patch to check_board_header.py --- cmake/generic_board.cmake | 2 + pico_sdk_init.cmake | 1 + .../include/boards/adafruit_feather_rp2350.h | 1 + .../include/boards/datanoisetv_rp2350_dsp.h | 1 + src/boards/include/boards/defcon32_badge.h | 1 + src/boards/include/boards/gen4_rp2350_24.h | 1 + src/boards/include/boards/gen4_rp2350_24ct.h | 1 + src/boards/include/boards/gen4_rp2350_24t.h | 1 + src/boards/include/boards/gen4_rp2350_28.h | 1 + src/boards/include/boards/gen4_rp2350_28ct.h | 1 + src/boards/include/boards/gen4_rp2350_28t.h | 1 + src/boards/include/boards/gen4_rp2350_32.h | 1 + src/boards/include/boards/gen4_rp2350_32ct.h | 1 + src/boards/include/boards/gen4_rp2350_32t.h | 1 + src/boards/include/boards/gen4_rp2350_35.h | 1 + src/boards/include/boards/gen4_rp2350_35ct.h | 1 + src/boards/include/boards/gen4_rp2350_35t.h | 1 + src/boards/include/boards/hellbender_0001.h | 1 + .../boards/hellbender_2350A_devboard.h | 1 + .../boards/ilabs_challenger_rp2350_bconnect.h | 1 + .../boards/ilabs_challenger_rp2350_wifi_ble.h | 1 + .../boards/melopero_perpetuo_rp2350_lora.h | 1 + .../include/boards/phyx_rick_tny_rp2350.h | 1 + src/boards/include/boards/pico2.h | 1 + src/boards/include/boards/pico2_w.h | 1 + src/boards/include/boards/pimoroni_pga2350.h | 1 + .../boards/pimoroni_pico_plus2_rp2350.h | 1 + .../include/boards/pimoroni_plasma2350.h | 1 + src/boards/include/boards/pimoroni_tiny2350.h | 1 + src/boards/include/boards/seeed_xiao_rp2350.h | 1 + .../include/boards/solderparty_rp2350_stamp.h | 1 + .../boards/solderparty_rp2350_stamp_xl.h | 1 + .../include/boards/sparkfun_promicro_rp2350.h | 1 + .../switchscience_picossci2_conta_base.h | 1 + .../switchscience_picossci2_dev_board.h | 1 + .../boards/switchscience_picossci2_micro.h | 1 + .../switchscience_picossci2_rp2350_breakout.h | 1 + .../boards/switchscience_picossci2_tiny.h | 1 + .../boards/tinycircuits_thumby_color_rp2350.h | 1 + src/common/pico_base_headers/CMakeLists.txt | 5 ++ tools/CMakeLists.txt | 2 +- tools/check_board_header.py | 48 +++++++++++++++---- 42 files changed, 84 insertions(+), 11 deletions(-) diff --git a/cmake/generic_board.cmake b/cmake/generic_board.cmake index 18d78975..c7fdfe5a 100644 --- a/cmake/generic_board.cmake +++ b/cmake/generic_board.cmake @@ -26,6 +26,8 @@ if (EXISTS ${PICO_BOARD_HEADER_FILE}) if (LINE MATCHES "^[ \t\]*//[ \t\]*pico_cmake_set_default[ \t\]*([a-zA-Z_][a-zA-Z0-9_]*)[ \t\]*=[ \t\]*(.*)") if (NOT DEFINED "${CMAKE_MATCH_1}") set("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}") + else() + list(APPEND PICO_BOARD_CMAKE_OVERRIDES ${CMAKE_MATCH_1}) endif() endif() endwhile() diff --git a/pico_sdk_init.cmake b/pico_sdk_init.cmake index 48b44db3..b708b634 100644 --- a/pico_sdk_init.cmake +++ b/pico_sdk_init.cmake @@ -75,6 +75,7 @@ if (NOT TARGET _pico_sdk_pre_init_marker) PICO_SDK_POST_LIST_FILES PICO_CONFIG_HEADER_FILES PICO_RP2040_CONFIG_HEADER_FILES + PICO_BOARD_CMAKE_OVERRIDES ) macro(pico_promote_common_scope_vars) diff --git a/src/boards/include/boards/adafruit_feather_rp2350.h b/src/boards/include/boards/adafruit_feather_rp2350.h index 36456b9a..20d77478 100644 --- a/src/boards/include/boards/adafruit_feather_rp2350.h +++ b/src/boards/include/boards/adafruit_feather_rp2350.h @@ -78,6 +78,7 @@ #define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/datanoisetv_rp2350_dsp.h b/src/boards/include/boards/datanoisetv_rp2350_dsp.h index 21ae6977..feb5792c 100644 --- a/src/boards/include/boards/datanoisetv_rp2350_dsp.h +++ b/src/boards/include/boards/datanoisetv_rp2350_dsp.h @@ -48,6 +48,7 @@ #define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/defcon32_badge.h b/src/boards/include/boards/defcon32_badge.h index 0c5f3d45..3466fc71 100644 --- a/src/boards/include/boards/defcon32_badge.h +++ b/src/boards/include/boards/defcon32_badge.h @@ -108,6 +108,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_24.h b/src/boards/include/boards/gen4_rp2350_24.h index dc8b9f89..ec479653 100644 --- a/src/boards/include/boards/gen4_rp2350_24.h +++ b/src/boards/include/boards/gen4_rp2350_24.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_24ct.h b/src/boards/include/boards/gen4_rp2350_24ct.h index 39632fac..71b8f2e6 100644 --- a/src/boards/include/boards/gen4_rp2350_24ct.h +++ b/src/boards/include/boards/gen4_rp2350_24ct.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_24t.h b/src/boards/include/boards/gen4_rp2350_24t.h index d1bfbf41..df086fae 100644 --- a/src/boards/include/boards/gen4_rp2350_24t.h +++ b/src/boards/include/boards/gen4_rp2350_24t.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_28.h b/src/boards/include/boards/gen4_rp2350_28.h index a005be77..b460b878 100644 --- a/src/boards/include/boards/gen4_rp2350_28.h +++ b/src/boards/include/boards/gen4_rp2350_28.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_28ct.h b/src/boards/include/boards/gen4_rp2350_28ct.h index c93126ad..11153e14 100644 --- a/src/boards/include/boards/gen4_rp2350_28ct.h +++ b/src/boards/include/boards/gen4_rp2350_28ct.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_28t.h b/src/boards/include/boards/gen4_rp2350_28t.h index 9c3f908b..c948c9eb 100644 --- a/src/boards/include/boards/gen4_rp2350_28t.h +++ b/src/boards/include/boards/gen4_rp2350_28t.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_32.h b/src/boards/include/boards/gen4_rp2350_32.h index 33caaf55..89693774 100644 --- a/src/boards/include/boards/gen4_rp2350_32.h +++ b/src/boards/include/boards/gen4_rp2350_32.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_32ct.h b/src/boards/include/boards/gen4_rp2350_32ct.h index 839fdc01..0e137357 100644 --- a/src/boards/include/boards/gen4_rp2350_32ct.h +++ b/src/boards/include/boards/gen4_rp2350_32ct.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_32t.h b/src/boards/include/boards/gen4_rp2350_32t.h index 2a1be7d2..6280f0d7 100644 --- a/src/boards/include/boards/gen4_rp2350_32t.h +++ b/src/boards/include/boards/gen4_rp2350_32t.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_35.h b/src/boards/include/boards/gen4_rp2350_35.h index c0e2c075..d26f5303 100644 --- a/src/boards/include/boards/gen4_rp2350_35.h +++ b/src/boards/include/boards/gen4_rp2350_35.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_35ct.h b/src/boards/include/boards/gen4_rp2350_35ct.h index 98780479..8576ac50 100644 --- a/src/boards/include/boards/gen4_rp2350_35ct.h +++ b/src/boards/include/boards/gen4_rp2350_35ct.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/gen4_rp2350_35t.h b/src/boards/include/boards/gen4_rp2350_35t.h index 079143f8..ee8cb238 100644 --- a/src/boards/include/boards/gen4_rp2350_35t.h +++ b/src/boards/include/boards/gen4_rp2350_35t.h @@ -76,6 +76,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/hellbender_0001.h b/src/boards/include/boards/hellbender_0001.h index 1e2882b4..9091f912 100644 --- a/src/boards/include/boards/hellbender_0001.h +++ b/src/boards/include/boards/hellbender_0001.h @@ -140,6 +140,7 @@ // --- RP2350 VARIANT --- #define PICO_RP2350B 1 +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/hellbender_2350A_devboard.h b/src/boards/include/boards/hellbender_2350A_devboard.h index 404e9564..63753bcc 100644 --- a/src/boards/include/boards/hellbender_2350A_devboard.h +++ b/src/boards/include/boards/hellbender_2350A_devboard.h @@ -91,6 +91,7 @@ // --- RP2350 VARIANT --- #define PICO_RP2350A 1 +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/ilabs_challenger_rp2350_bconnect.h b/src/boards/include/boards/ilabs_challenger_rp2350_bconnect.h index 66a4a7ea..92d8960b 100644 --- a/src/boards/include/boards/ilabs_challenger_rp2350_bconnect.h +++ b/src/boards/include/boards/ilabs_challenger_rp2350_bconnect.h @@ -83,6 +83,7 @@ #define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/ilabs_challenger_rp2350_wifi_ble.h b/src/boards/include/boards/ilabs_challenger_rp2350_wifi_ble.h index a88e797c..1278209b 100644 --- a/src/boards/include/boards/ilabs_challenger_rp2350_wifi_ble.h +++ b/src/boards/include/boards/ilabs_challenger_rp2350_wifi_ble.h @@ -80,6 +80,7 @@ #define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/melopero_perpetuo_rp2350_lora.h b/src/boards/include/boards/melopero_perpetuo_rp2350_lora.h index cc358de3..e86492b3 100644 --- a/src/boards/include/boards/melopero_perpetuo_rp2350_lora.h +++ b/src/boards/include/boards/melopero_perpetuo_rp2350_lora.h @@ -82,6 +82,7 @@ +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/phyx_rick_tny_rp2350.h b/src/boards/include/boards/phyx_rick_tny_rp2350.h index 7db83954..7012ac14 100644 --- a/src/boards/include/boards/phyx_rick_tny_rp2350.h +++ b/src/boards/include/boards/phyx_rick_tny_rp2350.h @@ -80,6 +80,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/pico2.h b/src/boards/include/boards/pico2.h index e47dcc54..4dbb232d 100644 --- a/src/boards/include/boards/pico2.h +++ b/src/boards/include/boards/pico2.h @@ -93,6 +93,7 @@ #define PICO_VSYS_PIN 29 #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/pico2_w.h b/src/boards/include/boards/pico2_w.h index eb15b822..42acdc4c 100644 --- a/src/boards/include/boards/pico2_w.h +++ b/src/boards/include/boards/pico2_w.h @@ -109,6 +109,7 @@ #define PICO_VSYS_PIN 29 #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/pimoroni_pga2350.h b/src/boards/include/boards/pimoroni_pga2350.h index 9690f130..f4f0a3d2 100644 --- a/src/boards/include/boards/pimoroni_pga2350.h +++ b/src/boards/include/boards/pimoroni_pga2350.h @@ -85,6 +85,7 @@ // no PICO_VBUS_PIN // no PICO_VSYS_PIN +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/pimoroni_pico_plus2_rp2350.h b/src/boards/include/boards/pimoroni_pico_plus2_rp2350.h index 006e6c47..34c5fb38 100644 --- a/src/boards/include/boards/pimoroni_pico_plus2_rp2350.h +++ b/src/boards/include/boards/pimoroni_pico_plus2_rp2350.h @@ -99,6 +99,7 @@ #define PICO_VSYS_PIN 43 #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/pimoroni_plasma2350.h b/src/boards/include/boards/pimoroni_plasma2350.h index 4ee4d898..7525a8a8 100644 --- a/src/boards/include/boards/pimoroni_plasma2350.h +++ b/src/boards/include/boards/pimoroni_plasma2350.h @@ -109,6 +109,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/pimoroni_tiny2350.h b/src/boards/include/boards/pimoroni_tiny2350.h index 09f32e65..bf00cbdb 100644 --- a/src/boards/include/boards/pimoroni_tiny2350.h +++ b/src/boards/include/boards/pimoroni_tiny2350.h @@ -89,6 +89,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/seeed_xiao_rp2350.h b/src/boards/include/boards/seeed_xiao_rp2350.h index 5c585940..3390dedc 100644 --- a/src/boards/include/boards/seeed_xiao_rp2350.h +++ b/src/boards/include/boards/seeed_xiao_rp2350.h @@ -142,6 +142,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/solderparty_rp2350_stamp.h b/src/boards/include/boards/solderparty_rp2350_stamp.h index 64ac474e..bb2fd7b5 100644 --- a/src/boards/include/boards/solderparty_rp2350_stamp.h +++ b/src/boards/include/boards/solderparty_rp2350_stamp.h @@ -78,6 +78,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/solderparty_rp2350_stamp_xl.h b/src/boards/include/boards/solderparty_rp2350_stamp_xl.h index 90a17b98..33233f7d 100644 --- a/src/boards/include/boards/solderparty_rp2350_stamp_xl.h +++ b/src/boards/include/boards/solderparty_rp2350_stamp_xl.h @@ -78,6 +78,7 @@ #define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/sparkfun_promicro_rp2350.h b/src/boards/include/boards/sparkfun_promicro_rp2350.h index fd12de50..8709e8dc 100644 --- a/src/boards/include/boards/sparkfun_promicro_rp2350.h +++ b/src/boards/include/boards/sparkfun_promicro_rp2350.h @@ -81,6 +81,7 @@ // --- RP2350 VARIANT --- #define PICO_RP2350A 1 +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/switchscience_picossci2_conta_base.h b/src/boards/include/boards/switchscience_picossci2_conta_base.h index 1da3ddfe..638e47e5 100644 --- a/src/boards/include/boards/switchscience_picossci2_conta_base.h +++ b/src/boards/include/boards/switchscience_picossci2_conta_base.h @@ -79,6 +79,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/switchscience_picossci2_dev_board.h b/src/boards/include/boards/switchscience_picossci2_dev_board.h index 432d2d9b..b674362b 100644 --- a/src/boards/include/boards/switchscience_picossci2_dev_board.h +++ b/src/boards/include/boards/switchscience_picossci2_dev_board.h @@ -80,6 +80,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/switchscience_picossci2_micro.h b/src/boards/include/boards/switchscience_picossci2_micro.h index 5d664997..e1ccf359 100644 --- a/src/boards/include/boards/switchscience_picossci2_micro.h +++ b/src/boards/include/boards/switchscience_picossci2_micro.h @@ -66,6 +66,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/switchscience_picossci2_rp2350_breakout.h b/src/boards/include/boards/switchscience_picossci2_rp2350_breakout.h index 68d39f92..ec53d165 100644 --- a/src/boards/include/boards/switchscience_picossci2_rp2350_breakout.h +++ b/src/boards/include/boards/switchscience_picossci2_rp2350_breakout.h @@ -79,6 +79,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/switchscience_picossci2_tiny.h b/src/boards/include/boards/switchscience_picossci2_tiny.h index f43307ce..f422017b 100644 --- a/src/boards/include/boards/switchscience_picossci2_tiny.h +++ b/src/boards/include/boards/switchscience_picossci2_tiny.h @@ -79,6 +79,7 @@ #define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/boards/include/boards/tinycircuits_thumby_color_rp2350.h b/src/boards/include/boards/tinycircuits_thumby_color_rp2350.h index 0a3c14a6..58088e58 100644 --- a/src/boards/include/boards/tinycircuits_thumby_color_rp2350.h +++ b/src/boards/include/boards/tinycircuits_thumby_color_rp2350.h @@ -93,6 +93,7 @@ #define PICO_VSYS_PIN 29 #endif +// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1 #ifndef PICO_RP2350_A2_SUPPORTED #define PICO_RP2350_A2_SUPPORTED 1 #endif diff --git a/src/common/pico_base_headers/CMakeLists.txt b/src/common/pico_base_headers/CMakeLists.txt index 57973fea..89f89b50 100644 --- a/src/common/pico_base_headers/CMakeLists.txt +++ b/src/common/pico_base_headers/CMakeLists.txt @@ -6,6 +6,11 @@ if (NOT TARGET pico_base_headers) target_compile_definitions(pico_base_headers INTERFACE PICO_BOARD="${PICO_BOARD}") + foreach(override ${PICO_BOARD_CMAKE_OVERRIDES}) + target_compile_definitions(pico_base_headers INTERFACE + ${override}=${${override}}) + endforeach() + target_link_libraries(pico_base_headers INTERFACE pico_platform_headers) list(APPEND PICO_SDK_POST_LIST_FILES ${CMAKE_CURRENT_LIST_DIR}/generate_config_header.cmake) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index d98ea4d1..5eef0f15 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -400,7 +400,7 @@ function(pico_add_uf2_output TARGET) endif() get_target_property(extra_uf2_args ${TARGET} PICOTOOL_EXTRA_UF2_ARGS) - if (1) # TODO: A2 only (Errata RP2350-E9) + if (PICO_RP2350_A2_SUPPORTED) if (NOT extra_uf2_args) set(extra_uf2_args "--abs-block") elseif(NOT "--abs-block" IN_LIST extra_uf2_args) diff --git a/tools/check_board_header.py b/tools/check_board_header.py index 60ff0af5..c259c813 100755 --- a/tools/check_board_header.py +++ b/tools/check_board_header.py @@ -29,6 +29,11 @@ chip_interfaces = { 'RP2350B': "src/rp2350/rp2350b_interface_pins.json", } +compulsory_cmake_settings = set(['PICO_PLATFORM']) +compulsory_cmake_default_settings = set(['PICO_FLASH_SIZE_BYTES']) +matching_cmake_default_settings = set(['PICO_FLASH_SIZE_BYTES', 'PICO_RP2350_A2_SUPPORTED']) +compulsory_defines = set(['PICO_FLASH_SIZE_BYTES']) + DefineType = namedtuple("DefineType", ["name", "value", "resolved_value", "lineno"]) def list_to_string_with(lst, joiner): @@ -230,7 +235,13 @@ with open(board_header) as header_fh: if name in cmake_settings: raise Exception("{}:{} Multiple values for pico_cmake_set {} ({} and {})".format(board_header, lineno, name, cmake_settings[name].value, value)) else: - cmake_settings[name] = DefineType(name, value, None, lineno) + if value: + try: + # most cmake settings are integer values + value = int(value, 0) + except ValueError: + pass + cmake_settings[name] = DefineType(name, value, None, lineno) continue # look for "// pico_cmake_set_default BLAH_BLAH=42" @@ -246,7 +257,13 @@ with open(board_header) as header_fh: if name in cmake_default_settings: raise Exception("{}:{} Multiple values for pico_cmake_set_default {} ({} and {})".format(board_header, lineno, name, cmake_default_settings[name].value, value)) else: - cmake_default_settings[name] = DefineType(name, value, None, lineno) + if value: + try: + # most cmake settings are integer values + value = int(value, 0) + except ValueError: + pass + cmake_default_settings[name] = DefineType(name, value, None, lineno) continue # look for "#else" @@ -362,8 +379,9 @@ if board_header_basename == "none.h": chip = 'RP2040' other_chip = 'RP2350' else: - if 'PICO_PLATFORM' not in cmake_settings: - raise Exception("{} is missing a pico_cmake_set {} comment".format(board_header, 'PICO_PLATFORM')) + for setting in compulsory_cmake_settings: + if setting not in cmake_settings: + raise Exception("{} is missing a pico_cmake_set {} comment".format(board_header, setting)) if cmake_settings['PICO_PLATFORM'].value == "rp2040": chip = 'RP2040' other_chip = 'RP2350' @@ -374,16 +392,26 @@ else: else: chip = 'RP2350B' if not board_header.endswith("amethyst_fpga.h"): + if 'PICO_RP2350_A2_SUPPORTED' not in cmake_default_settings: + raise Exception("{} uses chip {} but is missing a pico_cmake_set_default {} comment".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED')) if 'PICO_RP2350_A2_SUPPORTED' not in defines: raise Exception("{} uses chip {} but is missing a #define {}".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED')) if defines['PICO_RP2350_A2_SUPPORTED'].resolved_value != 1: raise Exception("{} sets #define {} {} (should be 1)".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED', defines['PICO_RP2350_A2_SUPPORTED'].resolved_value)) - if 'PICO_FLASH_SIZE_BYTES' not in cmake_default_settings: - raise Exception("{} is missing a pico_cmake_set_default {} comment".format(board_header, 'PICO_FLASH_SIZE_BYTES')) - if 'PICO_FLASH_SIZE_BYTES' not in defines: - raise Exception("{} is missing a #define {}".format(board_header, 'PICO_FLASH_SIZE_BYTES')) - if cmake_default_settings['PICO_FLASH_SIZE_BYTES'].value != defines['PICO_FLASH_SIZE_BYTES'].resolved_value: - raise Exception("{} has mismatched pico_cmake_set_default and #define values for {}".format(board_header, 'PICO_FLASH_SIZE_BYTES')) + for setting in compulsory_cmake_default_settings: + if setting not in cmake_default_settings: + raise Exception("{} is missing a pico_cmake_set_default {} comment".format(board_header, setting)) + for setting in matching_cmake_default_settings: + if setting in cmake_default_settings and setting not in defines: + raise Exception("{} has pico_cmake_set_default {} but is missing a matching #define".format(board_header, setting)) + elif setting in defines and setting not in cmake_default_settings: + raise Exception("{} has #define {} but is missing a matching pico_cmake_set_default comment".format(board_header, setting)) + elif setting in defines and setting in cmake_default_settings: + if cmake_default_settings[setting].value != defines[setting].resolved_value: + raise Exception("{} has mismatched pico_cmake_set_default and #define values for {}".format(board_header, setting)) + for setting in compulsory_defines: + if setting not in defines: + raise Exception("{} is missing a #define {}".format(board_header, setting)) if chip is None: raise Exception("Couldn't determine chip for {}".format(board_header))