blob: 0ed5c36916bb413b625dac7c8fa111194d377802 [file] [log] [blame]
# 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") {
}
}