1# Used for RP2040 and RP2350 2 3include(cmake/on_device.cmake) 4 5# 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 6option(PICO_NO_FLASH "Default binaries to not not use flash") 7# 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 8option(PICO_COPY_TO_RAM "Default binaries to copy code to RAM when booting from flash") 9 10# COMMON 11pico_add_subdirectory(common/boot_picobin_headers) 12pico_add_subdirectory(common/boot_picoboot_headers) 13pico_add_subdirectory(common/boot_uf2_headers) 14pico_add_subdirectory(common/pico_base_headers) 15pico_add_subdirectory(common/pico_usb_reset_interface_headers) 16 17# PICO_CMAKE_CONFIG: PICO_BARE_METAL, Flag to exclude anything except base headers from the build, type=bool, default=0, group=build 18if (NOT PICO_BARE_METAL) 19 pico_add_subdirectory(common/pico_bit_ops_headers) 20 pico_add_subdirectory(common/pico_binary_info) 21 pico_add_subdirectory(common/pico_divider_headers) 22 pico_add_subdirectory(common/pico_sync) 23 pico_add_subdirectory(common/pico_time) 24 pico_add_subdirectory(common/pico_util) 25 pico_add_subdirectory(common/pico_stdlib_headers) 26endif() 27pico_add_subdirectory(common/hardware_claim) 28# 29# RP2040/RP2350 specific From standard build variants 30pico_add_subdirectory(${RP2_VARIANT_DIR}/pico_platform) 31pico_add_subdirectory(${RP2_VARIANT_DIR}/hardware_regs) 32pico_add_subdirectory(${RP2_VARIANT_DIR}/hardware_structs) 33pico_add_subdirectory(${RP2_VARIANT_DIR}/boot_stage2) 34 35pico_add_subdirectory(rp2_common/hardware_base) 36# HAL items which expose a public (inline rp2_common) functions/macro API above the raw hardware 37pico_add_subdirectory(rp2_common/hardware_adc) 38pico_add_subdirectory(rp2_common/hardware_boot_lock) 39pico_add_subdirectory(rp2_common/hardware_clocks) 40pico_add_subdirectory(rp2_common/hardware_divider) 41pico_add_subdirectory(rp2_common/hardware_dma) 42pico_add_subdirectory(rp2_common/hardware_exception) 43pico_add_subdirectory(rp2_common/hardware_flash) 44pico_add_subdirectory(rp2_common/hardware_gpio) 45pico_add_subdirectory(rp2_common/hardware_i2c) 46pico_add_subdirectory(rp2_common/hardware_interp) 47pico_add_subdirectory(rp2_common/hardware_irq) 48pico_add_subdirectory(rp2_common/hardware_pio) 49pico_add_subdirectory(rp2_common/hardware_pll) 50pico_add_subdirectory(rp2_common/hardware_pwm) 51pico_add_subdirectory(rp2_common/hardware_resets) 52if (PICO_RP2040 OR PICO_COMBINED_DOCS) 53 pico_add_subdirectory(rp2_common/hardware_rtc) 54endif() 55pico_add_subdirectory(rp2_common/hardware_spi) 56pico_add_subdirectory(rp2_common/hardware_sync) 57pico_add_subdirectory(rp2_common/hardware_sync_spin_lock) 58pico_add_subdirectory(rp2_common/hardware_ticks) 59pico_add_subdirectory(rp2_common/hardware_timer) 60pico_add_subdirectory(rp2_common/hardware_uart) 61pico_add_subdirectory(rp2_common/hardware_vreg) 62pico_add_subdirectory(rp2_common/hardware_watchdog) 63pico_add_subdirectory(rp2_common/hardware_xip_cache) 64pico_add_subdirectory(rp2_common/hardware_xosc) 65 66if (PICO_RP2350 OR PICO_COMBINED_DOCS) 67 pico_add_subdirectory(rp2_common/hardware_powman) 68 # Note in spite of the name this is usable on Arm as well as RISC-V: 69 pico_add_subdirectory(rp2_common/hardware_riscv_platform_timer) 70 pico_add_subdirectory(rp2_common/hardware_sha256) 71endif() 72 73if (PICO_RP2350 OR PICO_COMBINED_DOCS) 74 pico_add_subdirectory(rp2_common/hardware_dcp) 75 pico_add_subdirectory(rp2_common/hardware_rcp) 76endif() 77 78if (PICO_RISCV OR PICO_COMBINED_DOCS) 79 pico_add_subdirectory(rp2_common/hardware_riscv) 80 pico_add_subdirectory(rp2_common/hardware_hazard3) 81endif() 82 83# Basic bootrom headers 84pico_add_subdirectory(rp2_common/boot_bootrom_headers) 85pico_add_subdirectory(rp2_common/pico_platform_compiler) 86pico_add_subdirectory(rp2_common/pico_platform_sections) 87pico_add_subdirectory(rp2_common/pico_platform_panic) 88 89if (NOT PICO_BARE_METAL) 90 # NOTE THE ORDERING HERE IS IMPORTANT AS SOME TARGETS CHECK ON EXISTENCE OF OTHER TARGETS 91 pico_add_subdirectory(rp2_common/pico_aon_timer) 92 # Helper functions to connect to data/functions in the bootrom 93 pico_add_subdirectory(rp2_common/pico_bootrom) 94 pico_add_subdirectory(rp2_common/pico_bootsel_via_double_reset) 95 pico_add_subdirectory(rp2_common/pico_multicore) 96 pico_add_subdirectory(rp2_common/pico_unique_id) 97 98 pico_add_subdirectory(rp2_common/pico_atomic) 99 pico_add_subdirectory(rp2_common/pico_bit_ops) 100 pico_add_subdirectory(rp2_common/pico_divider) 101 pico_add_subdirectory(rp2_common/pico_double) 102 pico_add_subdirectory(rp2_common/pico_int64_ops) 103 pico_add_subdirectory(rp2_common/pico_flash) 104 pico_add_subdirectory(rp2_common/pico_float) 105 pico_add_subdirectory(rp2_common/pico_mem_ops) 106 pico_add_subdirectory(rp2_common/pico_malloc) 107 pico_add_subdirectory(rp2_common/pico_printf) 108 pico_add_subdirectory(rp2_common/pico_rand) 109 110 if (PICO_RP2350 OR PICO_COMBINED_DOCS) 111 pico_add_subdirectory(rp2_common/pico_sha256) 112 endif() 113 114 pico_add_subdirectory(rp2_common/pico_stdio_semihosting) 115 pico_add_subdirectory(rp2_common/pico_stdio_uart) 116 pico_add_subdirectory(rp2_common/pico_stdio_rtt) 117 118 if (NOT PICO_RISCV) 119 pico_add_subdirectory(rp2_common/cmsis) 120 endif() 121 pico_add_subdirectory(rp2_common/tinyusb) 122 pico_add_subdirectory(rp2_common/pico_stdio_usb) 123 pico_add_subdirectory(rp2_common/pico_i2c_slave) 124 125 # networking libraries - note dependency order is important 126 pico_add_subdirectory(rp2_common/pico_async_context) 127 pico_add_subdirectory(rp2_common/pico_btstack) 128 pico_add_subdirectory(rp2_common/pico_cyw43_driver) 129 pico_add_subdirectory(rp2_common/pico_lwip) 130 pico_add_subdirectory(rp2_common/pico_cyw43_arch) 131 pico_add_subdirectory(rp2_common/pico_mbedtls) 132 133 pico_add_subdirectory(rp2_common/pico_time_adapter) 134 135 pico_add_subdirectory(rp2_common/pico_crt0) 136 pico_add_subdirectory(rp2_common/pico_clib_interface) 137 pico_add_subdirectory(rp2_common/pico_cxx_options) 138 pico_add_subdirectory(rp2_common/pico_standard_binary_info) 139 pico_add_subdirectory(rp2_common/pico_standard_link) 140 141 pico_add_subdirectory(rp2_common/pico_fix) 142 143 # at the end as it includes a lot of other stuff 144 pico_add_subdirectory(rp2_common/pico_runtime_init) 145 pico_add_subdirectory(rp2_common/pico_runtime) 146 147 # this requires all the pico_stdio_ libraries 148 pico_add_subdirectory(rp2_common/pico_stdio) 149 # this requires runtime 150 pico_add_subdirectory(rp2_common/pico_stdlib) 151endif() 152 153# configure doxygen directories 154#pico_add_doxygen(${COMMON_DIR}) 155#pico_add_doxygen(${RP2_VARIANT_DIR}) 156pico_add_doxygen_exclude(${RP2_VARIANT_DIR}/hardware_regs) # very very big 157# but we DO want dreq.h; it doesn't change much, so lets just use configure_file 158configure_file(${RP2_VARIANT_DIR}/hardware_regs/include/hardware/regs/dreq.h ${CMAKE_CURRENT_BINARY_DIR}/extra_doxygen/dreq.h COPYONLY) 159# also intctrl.h 160configure_file(${RP2_VARIANT_DIR}/hardware_regs/include/hardware/regs/intctrl.h ${CMAKE_CURRENT_BINARY_DIR}/extra_doxygen/intctrl.h COPYONLY) 161pico_add_doxygen(${CMAKE_CURRENT_BINARY_DIR}/extra_doxygen) 162 163#pico_add_doxygen(rp2_common) 164pico_add_doxygen_exclude(rp2_common/cmsis) # very big 165