| # Used for RP2040 and RP2350 |
| |
| include(cmake/on_device.cmake) |
| |
| # PICO_CMAKE_CONFIG: PICO_NO_FLASH, Option to default all binaries to not use flash i.e. run from SRAM, type=bool, default=0, group=build, docref=cmake-binary-type-config |
| option(PICO_NO_FLASH "Default binaries to not not use flash") |
| # PICO_CMAKE_CONFIG: PICO_COPY_TO_RAM, Option to default all binaries to copy code from flash to SRAM before running, type=bool, default=0, group=build, docref=cmake-binary-type-config |
| option(PICO_COPY_TO_RAM "Default binaries to copy code to RAM when booting from flash") |
| |
| # COMMON |
| pico_add_subdirectory(common/boot_picobin_headers) |
| pico_add_subdirectory(common/boot_picoboot_headers) |
| pico_add_subdirectory(common/boot_uf2_headers) |
| pico_add_subdirectory(common/pico_base_headers) |
| pico_add_subdirectory(common/pico_usb_reset_interface_headers) |
| |
| # PICO_CMAKE_CONFIG: PICO_BARE_METAL, Flag to exclude anything except base headers from the build, type=bool, default=0, group=build |
| if (NOT PICO_BARE_METAL) |
| pico_add_subdirectory(common/pico_bit_ops_headers) |
| pico_add_subdirectory(common/pico_binary_info) |
| pico_add_subdirectory(common/pico_divider_headers) |
| pico_add_subdirectory(common/pico_sync) |
| pico_add_subdirectory(common/pico_time) |
| pico_add_subdirectory(common/pico_util) |
| pico_add_subdirectory(common/pico_stdlib_headers) |
| endif() |
| pico_add_subdirectory(common/hardware_claim) |
| # |
| # RP2040/RP2350 specific From standard build variants |
| pico_add_subdirectory(${RP2_VARIANT_DIR}/pico_platform) |
| pico_add_subdirectory(${RP2_VARIANT_DIR}/hardware_regs) |
| pico_add_subdirectory(${RP2_VARIANT_DIR}/hardware_structs) |
| pico_add_subdirectory(${RP2_VARIANT_DIR}/boot_stage2) |
| |
| pico_add_subdirectory(rp2_common/hardware_base) |
| # HAL items which expose a public (inline rp2_common) functions/macro API above the raw hardware |
| pico_add_subdirectory(rp2_common/hardware_adc) |
| pico_add_subdirectory(rp2_common/hardware_boot_lock) |
| pico_add_subdirectory(rp2_common/hardware_clocks) |
| pico_add_subdirectory(rp2_common/hardware_divider) |
| pico_add_subdirectory(rp2_common/hardware_dma) |
| pico_add_subdirectory(rp2_common/hardware_exception) |
| pico_add_subdirectory(rp2_common/hardware_flash) |
| pico_add_subdirectory(rp2_common/hardware_gpio) |
| pico_add_subdirectory(rp2_common/hardware_i2c) |
| pico_add_subdirectory(rp2_common/hardware_interp) |
| pico_add_subdirectory(rp2_common/hardware_irq) |
| pico_add_subdirectory(rp2_common/hardware_pio) |
| pico_add_subdirectory(rp2_common/hardware_pll) |
| pico_add_subdirectory(rp2_common/hardware_pwm) |
| pico_add_subdirectory(rp2_common/hardware_resets) |
| if (PICO_RP2040 OR PICO_COMBINED_DOCS) |
| pico_add_subdirectory(rp2_common/hardware_rtc) |
| endif() |
| pico_add_subdirectory(rp2_common/hardware_spi) |
| pico_add_subdirectory(rp2_common/hardware_sync) |
| pico_add_subdirectory(rp2_common/hardware_sync_spin_lock) |
| pico_add_subdirectory(rp2_common/hardware_ticks) |
| pico_add_subdirectory(rp2_common/hardware_timer) |
| pico_add_subdirectory(rp2_common/hardware_uart) |
| pico_add_subdirectory(rp2_common/hardware_vreg) |
| pico_add_subdirectory(rp2_common/hardware_watchdog) |
| pico_add_subdirectory(rp2_common/hardware_xosc) |
| |
| if (PICO_RP2350 OR PICO_COMBINED_DOCS) |
| pico_add_subdirectory(rp2_common/hardware_powman) |
| # Note in spite of the name this is usable on Arm as well as RISC-V: |
| pico_add_subdirectory(rp2_common/hardware_riscv_platform_timer) |
| pico_add_subdirectory(rp2_common/hardware_sha256) |
| endif() |
| |
| if (PICO_RP2350 OR PICO_COMBINED_DOCS) |
| pico_add_subdirectory(rp2_common/hardware_dcp) |
| pico_add_subdirectory(rp2_common/hardware_rcp) |
| endif() |
| |
| if (PICO_RISCV OR PICO_COMBINED_DOCS) |
| pico_add_subdirectory(rp2_common/hardware_riscv) |
| pico_add_subdirectory(rp2_common/hardware_hazard3) |
| endif() |
| |
| # Helper functions to connect to data/functions in the bootrom |
| pico_add_subdirectory(rp2_common/pico_bootrom) |
| |
| pico_add_subdirectory(rp2_common/pico_platform_compiler) |
| pico_add_subdirectory(rp2_common/pico_platform_sections) |
| pico_add_subdirectory(rp2_common/pico_platform_panic) |
| |
| if (NOT PICO_BARE_METAL) |
| # NOTE THE ORDERING HERE IS IMPORTANT AS SOME TARGETS CHECK ON EXISTENCE OF OTHER TARGETS |
| pico_add_subdirectory(rp2_common/pico_aon_timer) |
| pico_add_subdirectory(rp2_common/pico_bootsel_via_double_reset) |
| pico_add_subdirectory(rp2_common/pico_multicore) |
| pico_add_subdirectory(rp2_common/pico_unique_id) |
| |
| pico_add_subdirectory(rp2_common/pico_atomic) |
| pico_add_subdirectory(rp2_common/pico_bit_ops) |
| pico_add_subdirectory(rp2_common/pico_divider) |
| pico_add_subdirectory(rp2_common/pico_double) |
| pico_add_subdirectory(rp2_common/pico_int64_ops) |
| pico_add_subdirectory(rp2_common/pico_flash) |
| pico_add_subdirectory(rp2_common/pico_float) |
| pico_add_subdirectory(rp2_common/pico_mem_ops) |
| pico_add_subdirectory(rp2_common/pico_malloc) |
| pico_add_subdirectory(rp2_common/pico_printf) |
| pico_add_subdirectory(rp2_common/pico_rand) |
| |
| if (PICO_RP2350 OR PICO_COMBINED_DOCS) |
| pico_add_subdirectory(rp2_common/pico_sha256) |
| endif() |
| |
| pico_add_subdirectory(rp2_common/pico_stdio_semihosting) |
| pico_add_subdirectory(rp2_common/pico_stdio_uart) |
| pico_add_subdirectory(rp2_common/pico_stdio_rtt) |
| |
| if (NOT PICO_RISCV) |
| pico_add_subdirectory(rp2_common/cmsis) |
| endif() |
| pico_add_subdirectory(rp2_common/tinyusb) |
| pico_add_subdirectory(rp2_common/pico_stdio_usb) |
| pico_add_subdirectory(rp2_common/pico_i2c_slave) |
| |
| # networking libraries - note dependency order is important |
| pico_add_subdirectory(rp2_common/pico_async_context) |
| pico_add_subdirectory(rp2_common/pico_btstack) |
| pico_add_subdirectory(rp2_common/pico_cyw43_driver) |
| pico_add_subdirectory(rp2_common/pico_lwip) |
| pico_add_subdirectory(rp2_common/pico_cyw43_arch) |
| pico_add_subdirectory(rp2_common/pico_mbedtls) |
| |
| pico_add_subdirectory(rp2_common/pico_time_adapter) |
| |
| pico_add_subdirectory(rp2_common/pico_crt0) |
| pico_add_subdirectory(rp2_common/pico_clib_interface) |
| pico_add_subdirectory(rp2_common/pico_cxx_options) |
| pico_add_subdirectory(rp2_common/pico_standard_binary_info) |
| pico_add_subdirectory(rp2_common/pico_standard_link) |
| |
| pico_add_subdirectory(rp2_common/pico_fix) |
| |
| # at the end as it includes a lot of other stuff |
| pico_add_subdirectory(rp2_common/pico_runtime_init) |
| pico_add_subdirectory(rp2_common/pico_runtime) |
| |
| # this requires all the pico_stdio_ libraries |
| pico_add_subdirectory(rp2_common/pico_stdio) |
| # this requires runtime |
| pico_add_subdirectory(rp2_common/pico_stdlib) |
| endif() |
| |
| # configure doxygen directories |
| #pico_add_doxygen(${COMMON_DIR}) |
| #pico_add_doxygen(${RP2_VARIANT_DIR}) |
| pico_add_doxygen_exclude(${RP2_VARIANT_DIR}/hardware_regs) # very very big |
| # but we DO want dreq.h; it doesn't change much, so lets just use configure_file |
| configure_file(${RP2_VARIANT_DIR}/hardware_regs/include/hardware/regs/dreq.h ${CMAKE_CURRENT_BINARY_DIR}/extra_doxygen/dreq.h COPYONLY) |
| # also intctrl.h |
| configure_file(${RP2_VARIANT_DIR}/hardware_regs/include/hardware/regs/intctrl.h ${CMAKE_CURRENT_BINARY_DIR}/extra_doxygen/intctrl.h COPYONLY) |
| pico_add_doxygen(${CMAKE_CURRENT_BINARY_DIR}/extra_doxygen) |
| |
| #pico_add_doxygen(rp2_common) |
| pico_add_doxygen_exclude(rp2_common/cmsis) # very big |