This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 4c3dbed5b56ef60587af515302af55e4d02c897b
Author: simbit18 <101105604+simbi...@users.noreply.github.com>
AuthorDate: Mon Sep 22 16:28:20 2025 +0200

    arm/rp2040: CMake build for Raspberry Pi RP2040 implemented
    
    - CMake added board Raspberry Pi Pico
    
    - Added the entry:
    
         CMake,raspberrypi-pico:bmp280
    
       to the file arm-06.dat.
    
    - Moved the search for the Python 3 interpreter to the
      root CMakefile to avoid unnecessary repetition.
    
    Signed-off-by: simbit18 <simbi...@gmail.com>
---
 CMakeLists.txt                                     |   7 ++
 arch/arm/src/rp2040/CMakeLists.txt                 | 123 +++++++++++++++++++++
 arch/arm/src/rp2040/boot2/rp2040_boot_stage2.cmake | 111 +++++++++++++++++++
 .../arm/rp2040/common/CMakeLists.txt               |  30 +----
 boards/arm/rp2040/common/src/CMakeLists.txt        | 120 ++++++++++++++++++++
 .../arm/rp2040/raspberrypi-pico/CMakeLists.txt     |  42 +++----
 .../arm/rp2040/raspberrypi-pico/src/CMakeLists.txt |  51 +++++----
 cmake/nuttx_process_config.cmake                   |   4 +-
 tools/ci/testlist/arm-06.dat                       |   4 +
 9 files changed, 414 insertions(+), 78 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 685fb1f6445..3abdc821fb6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -53,6 +53,13 @@ if(POLICY CMP0169)
   cmake_policy(SET CMP0169 OLD)
 endif()
 
+# Find Python 3 interpreter
+
+find_package(Python3 REQUIRED COMPONENTS Interpreter)
+if(NOT Python3_Interpreter_FOUND)
+  message(FATAL_ERROR "Did NOT find Python interpreter.")
+endif()
+
 # Basic CMake configuration ##################################################
 
 set(CMAKE_CXX_EXTENSIONS OFF)
diff --git a/arch/arm/src/rp2040/CMakeLists.txt 
b/arch/arm/src/rp2040/CMakeLists.txt
new file mode 100644
index 00000000000..5b8b5f5102d
--- /dev/null
+++ b/arch/arm/src/rp2040/CMakeLists.txt
@@ -0,0 +1,123 @@
+# 
##############################################################################
+# arch/arm/src/rp2040/CMakeLists.txt
+#
+# 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.
+#
+# 
##############################################################################
+
+list(
+  APPEND
+  SRCS
+  rp2040_idle.c
+  rp2040_irq.c
+  rp2040_uart.c
+  rp2040_serial.c
+  rp2040_start.c
+  rp2040_timerisr.c
+  rp2040_gpio.c
+  rp2040_pio.c
+  rp2040_clock.c
+  rp2040_xosc.c
+  rp2040_pll.c)
+
+if(CONFIG_SMP)
+  list(APPEND SRCS rp2040_cpustart.c rp2040_smpcall.c rp2040_cpuidlestack.c
+       rp2040_testset.c)
+endif()
+
+if(CONFIG_ARCH_HAVE_MULTICPU)
+  list(APPEND SRCS rp2040_cpuindex.c)
+endif()
+
+if(CONFIG_RP2040_DMAC)
+  list(APPEND SRCS rp2040_dmac.c)
+endif()
+
+if(CONFIG_RP2040_SPI)
+  list(APPEND SRCS rp2040_spi.c)
+endif()
+
+if(CONFIG_RP2040_PWM)
+  list(APPEND SRCS rp2040_pwm.c)
+endif()
+
+if(CONFIG_RP2040_I2C)
+  list(APPEND SRCS rp2040_i2c.c)
+endif()
+
+if(CONFIG_RP2040_I2C_SLAVE)
+  list(APPEND SRCS rp2040_i2c_slave.c)
+endif()
+
+if(CONFIG_RP2040_I2S)
+  list(APPEND SRCS rp2040_i2s.c rp2040_i2s_pio.c)
+endif()
+
+if(CONFIG_USBDEV)
+  list(APPEND SRCS rp2040_usbdev.c)
+endif()
+
+if(CONFIG_WS2812)
+  list(APPEND SRCS rp2040_ws2812.c)
+endif()
+
+if(CONFIG_ADC)
+  list(APPEND SRCS rp2040_adc.c)
+endif()
+
+if(CONFIG_IEEE80211_INFINEON_CYW43439)
+  list(APPEND SRCS rp2040_cyw43439.c)
+endif()
+
+if(CONFIG_WATCHDOG)
+  list(APPEND SRCS rp2040_wdt.c)
+endif()
+
+if(CONFIG_RP2040_FLASH_FILE_SYSTEM)
+  list(APPEND SRCS rp2040_flash_mtd.c rp2040_flash_initialize.S)
+endif()
+
+if(CONFIG_RP2040_FLASH_BOOT)
+
+  # Set the Pico SDK path using the environment variable
+
+  if(NOT DEFINED ENV{PICO_SDK_PATH})
+    message(
+      FATAL_ERROR
+        "PICO_SDK_PATH environment variable is not set. Please set it to the 
path of your Pico SDK installation."
+    )
+  else()
+    message(STATUS "PICO_SDK_PATH environment variable is set.")
+
+    set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
+    include(${CMAKE_CURRENT_SOURCE_DIR}/boot2/rp2040_boot_stage2.cmake)
+
+    set(PATH_CHIP_RP2040 ${CMAKE_BINARY_DIR}/arch/${CONFIG_ARCH}/src/chip)
+    pico_define_boot_stage2(rp2040_boot_stage2 ${PATH_CHIP_RP2040})
+
+    if(EXISTS ${PATH_CHIP_RP2040}/rp2040_boot_stage2.S)
+      list(APPEND SRCS ${PATH_CHIP_RP2040}/rp2040_boot_stage2.S)
+      target_sources(nuttx PRIVATE ${PATH_CHIP_RP2040}/rp2040_boot_stage2.S)
+    else()
+      message(
+        FATAL_ERROR "No rp2040_boot_stage2.S found at ${PATH_CHIP_RP2040}")
+    endif()
+  endif()
+endif()
+
+target_sources(arch PRIVATE ${SRCS})
diff --git a/arch/arm/src/rp2040/boot2/rp2040_boot_stage2.cmake 
b/arch/arm/src/rp2040/boot2/rp2040_boot_stage2.cmake
new file mode 100644
index 00000000000..5f18d1ae612
--- /dev/null
+++ b/arch/arm/src/rp2040/boot2/rp2040_boot_stage2.cmake
@@ -0,0 +1,111 @@
+# 
##############################################################################
+# arch/arm/src/rp2040/boot2/rp2040_boot_stage2.cmake
+#
+# 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.
+#
+# 
##############################################################################
+
+# ~~~
+# pico_define_boot_stage2
+#
+# Description: Define a boot stage 2 for the Raspberry Pi rp2040.
+#
+# Parameters:
+#  NAME        : The name of the boot stage 2
+#  path_chip   : The full path of the CMake build /${CONFIG_ARCH}/src/chip
+# ~~~
+
+function(pico_define_boot_stage2 NAME path_chip)
+
+  set(PICO_BOOT_STAGE2_DIR "${PICO_SDK_PATH}/src/rp2040/boot_stage2")
+  set(BOOT2SRC "${PICO_BOOT_STAGE2_DIR}/boot2_${CONFIG_RP2040_FLASH_CHIP}.S")
+
+  set(BOOT2CFLAGSLIST
+      "-T${NUTTX_BOARD_DIR}/scripts/raspberrypi-pico-flash.ld"
+      -DPICO_BOARD=\"pico\" -DPICO_BUILD=1 -DPICO_NO_HARDWARE=0
+      -DPICO_ON_DEVICE=1)
+
+  list(APPEND BOOT2CFLAGSLIST -I${path_chip}/boot2)
+  list(APPEND BOOT2CFLAGSLIST -I${PICO_BOOT_STAGE2_DIR}/asminclude)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2040/hardware_regs/include)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2_common/hardware_base/include)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/common/pico_base_headers/include)
+  list(APPEND BOOT2CFLAGSLIST -I${PICO_SDK_PATH}/src/boards/include)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2040/pico_platform/include)
+
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2_common/pico_platform_common/include)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2_common/pico_platform_compiler/include)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2_common/pico_platform_sections/include)
+  list(APPEND BOOT2CFLAGSLIST
+       -I${PICO_SDK_PATH}/src/rp2_common/pico_platform_panic/include)
+  list(APPEND BOOT2CFLAGSLIST -Wl,--no-warn-rwx-segments)
+
+  string(REPLACE ";" " " BOOT2CFLAGS "${BOOT2CFLAGSLIST}")
+
+  set(ORIGINAL_ELF ${path_chip}/${NAME}.elf)
+
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} -E touch
+            
${PICO_SDK_PATH}/src/common/pico_base_headers/include/pico/version.h
+  )
+  execute_process(
+    COMMAND
+      ${CMAKE_COMMAND} -E touch
+      
${PICO_SDK_PATH}/src/common/pico_base_headers/include/pico/config_autogen.h
+  )
+
+  set(builtin
+      "${CMAKE_C_COMPILER} -nostdlib ${BOOT2CFLAGS} -o ${ORIGINAL_ELF} 
${BOOT2SRC}"
+  )
+
+  if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
+    execute_process(COMMAND cmd /c "${builtin}" RESULT_VARIABLE resultVar)
+  else()
+    execute_process(COMMAND sh -c "${builtin}" RESULT_VARIABLE resultVar)
+  endif()
+
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} -E remove -f
+            
${PICO_SDK_PATH}/src/common/pico_base_headers/include/pico/version.h
+  )
+  execute_process(
+    COMMAND
+      ${CMAKE_COMMAND} -E remove -f
+      
${PICO_SDK_PATH}/src/common/pico_base_headers/include/pico/config_autogen.h
+  )
+
+  if(resultVar AND NOT resultVar EQUAL 0)
+    message(FATAL_ERROR "Failed: ${resultVar}")
+  else()
+    set(ORIGINAL_BIN ${path_chip}/${NAME}.bin)
+    set(PADDED_CHECKSUMMED_ASM ${path_chip}/${NAME}.S)
+
+    execute_process(COMMAND ${CMAKE_OBJCOPY} -Obinary ${ORIGINAL_ELF}
+                            ${ORIGINAL_BIN})
+    execute_process(
+      COMMAND ${Python3_EXECUTABLE} ${PICO_BOOT_STAGE2_DIR}/pad_checksum -s
+              0xffffffff ${ORIGINAL_BIN} ${PADDED_CHECKSUMMED_ASM})
+  endif()
+endfunction()
diff --git a/cmake/nuttx_process_config.cmake 
b/boards/arm/rp2040/common/CMakeLists.txt
similarity index 53%
copy from cmake/nuttx_process_config.cmake
copy to boards/arm/rp2040/common/CMakeLists.txt
index ceeef73fdb0..0873bcb7b57 100644
--- a/cmake/nuttx_process_config.cmake
+++ b/boards/arm/rp2040/common/CMakeLists.txt
@@ -1,5 +1,5 @@
 # 
##############################################################################
-# cmake/nuttx_process_config.cmake
+# boards/arm/rp2040/common/CMakeLists.txt
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -20,29 +20,5 @@
 #
 # 
##############################################################################
 
-function(process_config OUTPUT INPUT)
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs INCLUDE_PATHS)
-  cmake_parse_arguments(PARSE_ARGV 2 PROCESS_INCLUDES "${options}"
-                        "${oneValueArgs}" "${multiValueArgs}")
-
-  find_package(Python3 REQUIRED COMPONENTS Interpreter)
-
-  set(include_args "")
-  foreach(path IN LISTS PROCESS_INCLUDES_INCLUDE_PATHS)
-    list(APPEND include_args "${path}")
-  endforeach()
-
-  message(STATUS "Processing includes: ${INPUT} → ${OUTPUT}")
-  execute_process(
-    COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/process_config.py
-            ${OUTPUT} ${INPUT} ${include_args}
-    RESULT_VARIABLE result
-    OUTPUT_VARIABLE out
-    ERROR_VARIABLE err)
-
-  if(NOT result EQUAL 0)
-    message(FATAL_ERROR "Failed to process includes:\n${err}")
-  endif()
-endfunction()
+add_subdirectory(src)
+target_include_directories(board PRIVATE include)
diff --git a/boards/arm/rp2040/common/src/CMakeLists.txt 
b/boards/arm/rp2040/common/src/CMakeLists.txt
new file mode 100644
index 00000000000..8754018d188
--- /dev/null
+++ b/boards/arm/rp2040/common/src/CMakeLists.txt
@@ -0,0 +1,120 @@
+# 
##############################################################################
+# boards/arm/rp2040/common/src/CMakeLists.txt
+#
+# 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.
+#
+# 
##############################################################################
+
+if(CONFIG_ARCH_BOARD_COMMON)
+
+  list(APPEND SRCS rp2040_common_bringup.c rp2040_common_initialize.c)
+
+  if(CONFIG_BOARDCTL_RESET)
+    list(APPEND SRCS rp2040_reset.c)
+  endif()
+
+  if(CONFIG_SPI)
+    list(APPEND SRCS rp2040_spi.c)
+  endif()
+
+  if(CONFIG_RP2040_I2C_DRIVER)
+    list(APPEND SRCS rp2040_i2cdev.c)
+  endif()
+
+  if(CONFIG_RP2040_PWM)
+    list(APPEND SRCS rp2040_pwmdev.c)
+  endif()
+
+  if(CONFIG_RP2040_SPI_DRIVER)
+    list(APPEND SRCS rp2040_spidev.c)
+  endif()
+
+  if(CONFIG_RP2040_I2S)
+    list(APPEND SRCS rp2040_i2sdev.c)
+  endif()
+
+  if(CONFIG_LCD_SSD1306)
+    list(APPEND SRCS rp2040_ssd1306.c)
+  endif()
+
+  if(CONFIG_LCD_ST7789)
+    list(APPEND SRCS rp2040_st7789.c)
+  endif()
+
+  if(CONFIG_LCD_ST7735)
+    list(APPEND SRCS rp2040_st7735.c)
+  endif()
+
+  if(CONFIG_LCD_GC9A01)
+    list(APPEND SRCS rp2040_gc9a01.c)
+  endif()
+
+  if(CONFIG_USBMSC)
+    list(APPEND SRCS rp2040_usbmsc.c)
+  endif()
+
+  if(CONFIG_USBDEV_COMPOSITE)
+    list(APPEND SRCS rp2040_composite.c)
+  endif()
+
+  if(CONFIG_RP2040_SPISD)
+    list(APPEND SRCS rp2040_spisd.c)
+  endif()
+
+  if(CONFIG_SENSORS_BMP180)
+    list(APPEND SRCS rp2040_bmp180.c)
+  endif()
+
+  if(CONFIG_SENSORS_BMP280)
+    list(APPEND SRCS rp2040_bmp280.c)
+  endif()
+
+  if(CONFIG_SENSORS_INA219)
+    list(APPEND SRCS rp2040_ina219.c)
+  endif()
+
+  if(CONFIG_ENC28J60)
+    list(APPEND SRCS rp2040_enc28j60.c)
+  endif()
+
+  if(CONFIG_LCD_BACKPACK)
+    list(APPEND SRCS rp2040_lcd_backpack.c)
+  endif()
+
+  if(CONFIG_BOARDCTL_UNIQUEID)
+    list(APPEND SRCS rp2040_uniqueid.c)
+  endif()
+
+  if(CONFIG_NET_W5500)
+    list(APPEND SRCS rp2040_w5500.c)
+  endif()
+
+  if(CONFIG_SENSORS_MAX6675)
+    list(APPEND SRCS rp2040_max6675.c)
+  endif()
+
+  if(CONFIG_SENSORS_TMP112)
+    list(APPEND SRCS rp2040_tmp112.c)
+  endif()
+
+  if(CONFIG_ADC_ADS7046)
+    list(APPEND SRCS rp2040_ads7046.c)
+  endif()
+
+endif()
+target_sources(board PRIVATE ${SRCS})
diff --git a/cmake/nuttx_process_config.cmake 
b/boards/arm/rp2040/raspberrypi-pico/CMakeLists.txt
similarity index 53%
copy from cmake/nuttx_process_config.cmake
copy to boards/arm/rp2040/raspberrypi-pico/CMakeLists.txt
index ceeef73fdb0..d44e6572fd8 100644
--- a/cmake/nuttx_process_config.cmake
+++ b/boards/arm/rp2040/raspberrypi-pico/CMakeLists.txt
@@ -1,5 +1,5 @@
 # 
##############################################################################
-# cmake/nuttx_process_config.cmake
+# boards/arm/rp2040/raspberrypi-pico/CMakeLists.txt
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -20,29 +20,21 @@
 #
 # 
##############################################################################
 
-function(process_config OUTPUT INPUT)
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs INCLUDE_PATHS)
-  cmake_parse_arguments(PARSE_ARGV 2 PROCESS_INCLUDES "${options}"
-                        "${oneValueArgs}" "${multiValueArgs}")
+add_subdirectory(src)
 
-  find_package(Python3 REQUIRED COMPONENTS Interpreter)
+add_custom_target(
+  nuttx_post_build
+  DEPENDS nuttx
+  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+  COMMENT "Regenerate nuttx.uf2")
 
-  set(include_args "")
-  foreach(path IN LISTS PROCESS_INCLUDES_INCLUDE_PATHS)
-    list(APPEND include_args "${path}")
-  endforeach()
-
-  message(STATUS "Processing includes: ${INPUT} → ${OUTPUT}")
-  execute_process(
-    COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/process_config.py
-            ${OUTPUT} ${INPUT} ${include_args}
-    RESULT_VARIABLE result
-    OUTPUT_VARIABLE out
-    ERROR_VARIABLE err)
-
-  if(NOT result EQUAL 0)
-    message(FATAL_ERROR "Failed to process includes:\n${err}")
-  endif()
-endfunction()
+# The uf2 command to convert ELF/BIN to UF2
+add_custom_command(
+  TARGET nuttx_post_build
+  POST_BUILD
+  COMMAND picotool ARGS uf2 convert --quiet -t elf nuttx nuttx.uf2
+  COMMAND_EXPAND_LISTS
+  COMMAND ${CMAKE_COMMAND} -E echo "nuttx.uf2" >>
+          ${CMAKE_BINARY_DIR}/nuttx.manifest
+  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+  COMMENT "Regenerate nuttx.uf2")
diff --git a/cmake/nuttx_process_config.cmake 
b/boards/arm/rp2040/raspberrypi-pico/src/CMakeLists.txt
similarity index 53%
copy from cmake/nuttx_process_config.cmake
copy to boards/arm/rp2040/raspberrypi-pico/src/CMakeLists.txt
index ceeef73fdb0..d332a5eb902 100644
--- a/cmake/nuttx_process_config.cmake
+++ b/boards/arm/rp2040/raspberrypi-pico/src/CMakeLists.txt
@@ -1,5 +1,5 @@
 # 
##############################################################################
-# cmake/nuttx_process_config.cmake
+# boards/arm/rp2040/raspberrypi-pico/src/CMakeLists.txt
 #
 # SPDX-License-Identifier: Apache-2.0
 #
@@ -20,29 +20,34 @@
 #
 # 
##############################################################################
 
-function(process_config OUTPUT INPUT)
-  set(options)
-  set(oneValueArgs)
-  set(multiValueArgs INCLUDE_PATHS)
-  cmake_parse_arguments(PARSE_ARGV 2 PROCESS_INCLUDES "${options}"
-                        "${oneValueArgs}" "${multiValueArgs}")
+set(SRCS rp2040_boardinitialize.c rp2040_bringup.c)
 
-  find_package(Python3 REQUIRED COMPONENTS Interpreter)
+if(CONFIG_DEV_GPIO)
+  list(APPEND SRCS rp2040_gpio.c)
+endif()
 
-  set(include_args "")
-  foreach(path IN LISTS PROCESS_INCLUDES_INCLUDE_PATHS)
-    list(APPEND include_args "${path}")
-  endforeach()
+if(CONFIG_ARCH_LEDS)
+  list(APPEND SRCS rp2040_autoleds.c)
+else()
+  list(APPEND SRCS rp2040_userleds.c)
+endif()
 
-  message(STATUS "Processing includes: ${INPUT} → ${OUTPUT}")
-  execute_process(
-    COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/process_config.py
-            ${OUTPUT} ${INPUT} ${include_args}
-    RESULT_VARIABLE result
-    OUTPUT_VARIABLE out
-    ERROR_VARIABLE err)
+if(CONFIG_ARCH_BUTTONS)
+  list(APPEND SRCS rp2040_buttons.c)
+endif()
 
-  if(NOT result EQUAL 0)
-    message(FATAL_ERROR "Failed to process includes:\n${err}")
-  endif()
-endfunction()
+if(CONFIG_BOARDCTL)
+  list(APPEND SRCS rp2040_appinit.c)
+endif()
+
+target_sources(board PRIVATE ${SRCS})
+
+if(CONFIG_RP2040_FLASH_BOOT)
+  set_property(
+    GLOBAL PROPERTY LD_SCRIPT
+                    "${NUTTX_BOARD_DIR}/scripts/raspberrypi-pico-flash.ld")
+else()
+  set_property(
+    GLOBAL PROPERTY LD_SCRIPT
+                    "${NUTTX_BOARD_DIR}/scripts/raspberrypi-pico-sram.ld")
+endif()
diff --git a/cmake/nuttx_process_config.cmake b/cmake/nuttx_process_config.cmake
index ceeef73fdb0..8fab3b72edd 100644
--- a/cmake/nuttx_process_config.cmake
+++ b/cmake/nuttx_process_config.cmake
@@ -27,14 +27,12 @@ function(process_config OUTPUT INPUT)
   cmake_parse_arguments(PARSE_ARGV 2 PROCESS_INCLUDES "${options}"
                         "${oneValueArgs}" "${multiValueArgs}")
 
-  find_package(Python3 REQUIRED COMPONENTS Interpreter)
-
   set(include_args "")
   foreach(path IN LISTS PROCESS_INCLUDES_INCLUDE_PATHS)
     list(APPEND include_args "${path}")
   endforeach()
 
-  message(STATUS "Processing includes: ${INPUT} → ${OUTPUT}")
+  message(STATUS "Processing includes: ${INPUT} -> ${OUTPUT}")
   execute_process(
     COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/process_config.py
             ${OUTPUT} ${INPUT} ${include_args}
diff --git a/tools/ci/testlist/arm-06.dat b/tools/ci/testlist/arm-06.dat
index 0e80d3c8990..8aae949b04f 100644
--- a/tools/ci/testlist/arm-06.dat
+++ b/tools/ci/testlist/arm-06.dat
@@ -1 +1,5 @@
 /arm/r*,CONFIG_ARM_TOOLCHAIN_GNU_EABI
+
+# Boards build by CMake
+
+CMake,raspberrypi-pico:bmp280

Reply via email to