| # Copyright 2021 The Pigweed Authors |
| # |
| # Licensed 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 |
| # |
| # https://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. |
| |
| import("//build_overrides/pigweed.gni") |
| |
| import("$dir_pw_toolchain/generate_toolchain.gni") |
| |
| if (dir_third_party_pico_sdk != "") { |
| import("target_toolchains.gni") |
| |
| generate_toolchains("toolchains") { |
| toolchains = toolchains_list |
| } |
| |
| if (current_toolchain != default_toolchain) { |
| _pico_sdk_dir = rebase_path(dir_third_party_pico_sdk) |
| |
| config("pico_config") { |
| defines = [ |
| "DIR_THIRD_PARTY_PICO_SDK=\"$_pico_sdk_dir\"", |
| "PICO_H_LOCATION=\"${_pico_sdk_dir}/src/boards/include/boards/pico.h\"", |
| "RENAME_EXCEPTIONS_H_LOCATION=\"$_pico_sdk_dir/src/rp2_common/cmsis/include/cmsis/rename_exceptions.h\"", |
| "CFG_TUSB_DEBUG=0", |
| "CFG_TUSB_MCU=OPT_MCU_RP2040", |
| "CFG_TUSB_OS=OPT_OS_PICO", |
| "LIB_PICO_BIT_OPS=1", |
| "LIB_PICO_BIT_OPS_PICO=1", |
| "LIB_PICO_DIVIDER=1", |
| "LIB_PICO_DIVIDER_HARDWARE=1", |
| "LIB_PICO_DOUBLE=1", |
| "LIB_PICO_DOUBLE_PICO=1", |
| "LIB_PICO_FIX_RP2040_USB_DEVICE_ENUMERATION=1", |
| "LIB_PICO_FLOAT=1", |
| "LIB_PICO_FLOAT_PICO=1", |
| "LIB_PICO_INT64_OPS=1", |
| "LIB_PICO_INT64_OPS_PICO=1", |
| "LIB_PICO_MALLOC=1", |
| "LIB_PICO_MEM_OPS=1", |
| "LIB_PICO_MEM_OPS_PICO=1", |
| "LIB_PICO_PLATFORM=1", |
| "LIB_PICO_PRINTF=1", |
| "LIB_PICO_PRINTF_PICO=1", |
| "LIB_PICO_RUNTIME=1", |
| "LIB_PICO_STANDARD_LINK=1", |
| "LIB_PICO_STDIO=1", |
| "LIB_PICO_STDIO_USB=1", |
| "LIB_PICO_STDLIB=1", |
| "LIB_PICO_SYNC=1", |
| "LIB_PICO_SYNC_CORE=1", |
| "LIB_PICO_SYNC_CRITICAL_SECTION=1", |
| "LIB_PICO_SYNC_MUTEX=1", |
| "LIB_PICO_SYNC_SEM=1", |
| "LIB_PICO_TIME=1", |
| "LIB_PICO_UNIQUE_ID=1", |
| "LIB_PICO_UTIL=1", |
| "PICO_BOARD=\"pico\"", |
| "PICO_BUILD=1", |
| "PICO_CMAKE_BUILD_TYPE=\"Release\"", |
| "PICO_COPY_TO_RAM=0", |
| "PICO_CXX_ENABLE_EXCEPTIONS=0", |
| "PICO_NO_FLASH=0", |
| "PICO_NO_HARDWARE=0", |
| "PICO_ON_DEVICE=1", |
| |
| # "PICO_TARGET_NAME=\"hello_usb\"", |
| "PICO_USE_BLOCKED_RAM=0", |
| ] |
| include_dirs = [ |
| "$dir_third_party_pico_sdk/src/common/pico_stdlib/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_gpio/include", |
| "$dir_third_party_pico_sdk/src/common/pico_base/include", |
| "$dir_pico_build/public_overrides", |
| "$dir_third_party_pico_sdk/src/boards/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_platform/include", |
| "$dir_third_party_pico_sdk/src/rp2040/hardware_regs/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_base/include", |
| "$dir_third_party_pico_sdk/src/rp2040/hardware_structs/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_claim/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_sync/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_uart/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_divider/include", |
| "$dir_third_party_pico_sdk/src/common/pico_time/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_timer/include", |
| "$dir_third_party_pico_sdk/src/common/pico_sync/include", |
| "$dir_third_party_pico_sdk/src/common/pico_util/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_runtime/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_clocks/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_irq/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_resets/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_pll/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_vreg/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_watchdog/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_xosc/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_printf/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_bootrom/include", |
| "$dir_third_party_pico_sdk/src/common/pico_bit_ops/include", |
| "$dir_third_party_pico_sdk/src/common/pico_divider/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_double/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_int64_ops/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_float/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_malloc/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/boot_stage2/include", |
| "$dir_third_party_pico_sdk/src/common/pico_binary_info/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdio/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdio_usb/include", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/common", |
| "$dir_third_party_pico_sdk/lib/tinyusb/hw", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_unique_id/include", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_flash/include", |
| "$dir_third_party_pico_sdk/src/common/pico_usb_reset_interface/include", |
| "-NDEBUG", |
| ] |
| cflags = [ |
| "-Wno-unused-function", |
| "-Wno-maybe-uninitialized", |
| "-ffunction-sections", |
| "-fdata-sections", |
| "-Wno-error=undef", |
| "-Wno-error=cast-qual", |
| "-Wno-error=pointer-arith", |
| ] |
| cflags_c = [ "-std=gnu11" ] |
| ldflags = [ |
| "-Wl,--wrap=sprintf", |
| "-Wl,--wrap=snprintf", |
| "-Wl,--wrap=vsnprintf", |
| "-Wl,--wrap=__clzsi2", |
| "-Wl,--wrap=__clzdi2", |
| "-Wl,--wrap=__ctzsi2", |
| "-Wl,--wrap=__ctzdi2", |
| "-Wl,--wrap=__popcountsi2", |
| "-Wl,--wrap=__popcountdi2", |
| "-Wl,--wrap=__clz", |
| "-Wl,--wrap=__clzl", |
| "-Wl,--wrap=__clzll", |
| "-Wl,--wrap=__aeabi_idiv", |
| "-Wl,--wrap=__aeabi_idivmod", |
| "-Wl,--wrap=__aeabi_ldivmod", |
| "-Wl,--wrap=__aeabi_uidiv", |
| "-Wl,--wrap=__aeabi_uidivmod", |
| "-Wl,--wrap=__aeabi_uldivmod", |
| "-Wl,--wrap=__aeabi_lmul", |
| "-Wl,--wrap=__aeabi_fadd", |
| "-Wl,--wrap=__aeabi_fdiv", |
| "-Wl,--wrap=__aeabi_fmul", |
| "-Wl,--wrap=__aeabi_frsub", |
| "-Wl,--wrap=__aeabi_fsub", |
| "-Wl,--wrap=__aeabi_cfcmpeq", |
| "-Wl,--wrap=__aeabi_cfrcmple", |
| "-Wl,--wrap=__aeabi_cfcmple", |
| "-Wl,--wrap=__aeabi_fcmpeq", |
| "-Wl,--wrap=__aeabi_fcmplt", |
| "-Wl,--wrap=__aeabi_fcmple", |
| "-Wl,--wrap=__aeabi_fcmpge", |
| "-Wl,--wrap=__aeabi_fcmpgt", |
| "-Wl,--wrap=__aeabi_fcmpun", |
| "-Wl,--wrap=__aeabi_i2f", |
| "-Wl,--wrap=__aeabi_l2f", |
| "-Wl,--wrap=__aeabi_ui2f", |
| "-Wl,--wrap=__aeabi_ul2f", |
| "-Wl,--wrap=__aeabi_f2iz", |
| "-Wl,--wrap=__aeabi_f2lz", |
| "-Wl,--wrap=__aeabi_f2uiz", |
| "-Wl,--wrap=__aeabi_f2ulz", |
| "-Wl,--wrap=__aeabi_f2d", |
| "-Wl,--wrap=sqrtf", |
| "-Wl,--wrap=cosf", |
| "-Wl,--wrap=sinf", |
| "-Wl,--wrap=tanf", |
| "-Wl,--wrap=atan2f", |
| "-Wl,--wrap=expf", |
| "-Wl,--wrap=logf", |
| "-Wl,--wrap=ldexpf", |
| "-Wl,--wrap=copysignf", |
| "-Wl,--wrap=truncf", |
| "-Wl,--wrap=floorf", |
| "-Wl,--wrap=ceilf", |
| "-Wl,--wrap=roundf", |
| "-Wl,--wrap=sincosf", |
| "-Wl,--wrap=asinf", |
| "-Wl,--wrap=acosf", |
| "-Wl,--wrap=atanf", |
| "-Wl,--wrap=sinhf", |
| "-Wl,--wrap=coshf", |
| "-Wl,--wrap=tanhf", |
| "-Wl,--wrap=asinhf", |
| "-Wl,--wrap=acoshf", |
| "-Wl,--wrap=atanhf", |
| "-Wl,--wrap=exp2f", |
| "-Wl,--wrap=log2f", |
| "-Wl,--wrap=exp10f", |
| "-Wl,--wrap=log10f", |
| "-Wl,--wrap=powf", |
| "-Wl,--wrap=powintf", |
| "-Wl,--wrap=hypotf", |
| "-Wl,--wrap=cbrtf", |
| "-Wl,--wrap=fmodf", |
| "-Wl,--wrap=dremf", |
| "-Wl,--wrap=remainderf", |
| "-Wl,--wrap=remquof", |
| "-Wl,--wrap=expm1f", |
| "-Wl,--wrap=log1pf", |
| "-Wl,--wrap=fmaf", |
| "-Wl,--wrap=malloc", |
| "-Wl,--wrap=calloc", |
| "-Wl,--wrap=free", |
| "-Wl,--wrap=memcpy", |
| "-Wl,--wrap=memset", |
| "-Wl,--wrap=__aeabi_memcpy", |
| "-Wl,--wrap=__aeabi_memset", |
| "-Wl,--wrap=__aeabi_memcpy4", |
| "-Wl,--wrap=__aeabi_memset4", |
| "-Wl,--wrap=__aeabi_memcpy8", |
| "-Wl,--wrap=__aeabi_memset8", |
| "-Wl,-Map=hello_usb.elf.map", |
| "-Wl,--script=${_pico_sdk_dir}/src/rp2_common/pico_standard_link/memmap_default.ld", |
| "-Wl,-z,max-page-size=4096", |
| "-Wl,--gc-sections", |
| "-Wl,--wrap=printf", |
| "-Wl,--wrap=vprintf", |
| "-Wl,--wrap=puts", |
| "-Wl,--wrap=putchar", |
| "-Wl,--wrap=getchar", |
| ] |
| } |
| |
| pw_source_set("pre_init") { |
| sources = [ "init.cc" ] |
| |
| public_deps = [ |
| "$dir_pw_sys_io_pico", |
| "//targets/pico:pico_core_sources", |
| ] |
| deps = [] |
| remove_configs = [ "$dir_pw_build:strict_warnings" ] |
| } |
| |
| pw_source_set("pico_core_sources") { |
| public_configs = [ ":pico_config" ] |
| sources = [ |
| "$dir_pico_build/bs2_default_padded_checksummed.S", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/audio/audio_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/cdc/cdc_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/dfu/dfu_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/dfu/dfu_rt_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/hid/hid_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/midi/midi_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/msc/msc_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/net/ecm_rndis_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/net/ncm_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/usbtmc/usbtmc_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/vendor/vendor_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/class/video/video_device.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/common/tusb_fifo.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/device/usbd.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/device/usbd_control.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c", |
| "$dir_third_party_pico_sdk/lib/tinyusb/src/tusb.c", |
| "$dir_third_party_pico_sdk/src/common/pico_sync/critical_section.c", |
| "$dir_third_party_pico_sdk/src/common/pico_sync/lock_core.c", |
| "$dir_third_party_pico_sdk/src/common/pico_sync/mutex.c", |
| "$dir_third_party_pico_sdk/src/common/pico_sync/sem.c", |
| "$dir_third_party_pico_sdk/src/common/pico_time/time.c", |
| "$dir_third_party_pico_sdk/src/common/pico_time/timeout_helper.c", |
| "$dir_third_party_pico_sdk/src/common/pico_util/datetime.c", |
| "$dir_third_party_pico_sdk/src/common/pico_util/pheap.c", |
| "$dir_third_party_pico_sdk/src/common/pico_util/queue.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_claim/claim.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_clocks/clocks.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_flash/flash.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_gpio/gpio.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_irq/irq.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_irq/irq_handler_chain.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_pll/pll.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_sync/sync.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_timer/timer.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_uart/uart.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_vreg/vreg.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_watchdog/watchdog.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/hardware_xosc/xosc.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_bootrom/bootrom.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_divider/divider.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_double/double_aeabi.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_double/double_init_rom.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_double/double_math.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_double/double_v1_rom_shim.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_float/float_init_rom.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_float/float_math.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_malloc/pico_malloc.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_platform/platform.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_printf/printf.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_runtime/runtime.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_standard_link/binary_info.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_standard_link/crt0.S", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_standard_link/new_delete.cpp", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdio/stdio.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdio_usb/reset_interface.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdio_usb/stdio_usb.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdio_usb/stdio_usb_descriptors.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_stdlib/stdlib.c", |
| "$dir_third_party_pico_sdk/src/rp2_common/pico_unique_id/unique_id.c", |
| ] |
| } |
| } |
| } else { |
| config("pico_config") { |
| } |
| group("pre_init") { |
| } |
| } |