blob: 494b1202b442f7ef4d80e69dfbdc8266040a703c [file] [log] [blame]
# 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