env.Append( ASFLAGS=["-x", "assembler-with-cpp"], CFLAGS=[ "-std=gnu99", "-Wpointer-arith", "-Wno-implicit-function-declaration", "-Wl,-EL", "-fno-inline-functions", "-nostdlib" ], CCFLAGS=[ "-Os", # optimize for size "-mlongcalls", "-mtext-section-literals", "-falign-functions=4", "-U__STRICT_ANSI__", "-ffunction-sections", "-fdata-sections" ], CXXFLAGS=[ "-fno-rtti", "-fno-exceptions", "-std=c++11", "-Wno-literal-suffix" ], LINKFLAGS=[ "-Os", "-nostdlib", "-Wl,--no-check-sections", "-Wl,-static", "-Wl,--gc-sections", "-u", "call_user_start", "-u", "_printf_float", "-u", "_scanf_float" ], CPPDEFINES=[ ("F_CPU", "$BOARD_F_CPU"), "__ets__", "ICACHE_FLASH" ], CPPPATH=[ join(FRAMEWORK_DIR, "include"), join(FRAMEWORK_DIR, "extra_include"), join(FRAMEWORK_DIR, "driver_lib", "include"), join(FRAMEWORK_DIR, "include", "espressif"), join(FRAMEWORK_DIR, "include", "lwip"), join(FRAMEWORK_DIR, "include", "lwip", "ipv4"), join(FRAMEWORK_DIR, "include", "lwip", "ipv6"), join(FRAMEWORK_DIR, "include", "nopoll"), join(FRAMEWORK_DIR, "include", "spiffs"), join(FRAMEWORK_DIR, "include", "ssl"), join(FRAMEWORK_DIR, "include", "json"), join(FRAMEWORK_DIR, "include", "openssl"), ], LIBPATH=[ join(FRAMEWORK_DIR, "lib"), join(FRAMEWORK_DIR, "ld") ], LIBS=[ "cirom", "crypto", "driver", "espconn", "espnow", "freertos", "gcc", "json", "hal", "lwip", "main", "mbedtls", "mesh", "mirom", "net80211", "nopoll", "phy", "pp", "pwm", "smartconfig", "spiffs", "ssl", "wpa", "wps" ] )
("IDF_VER", '\\"%s\\"' % platform.get_package_version("framework-espidf")) ], CCFLAGS=[ "-Werror=all", "-Wno-error=deprecated-declarations", "-Wextra", "-Wno-unused-parameter", "-Wno-sign-compare", "-Wno-error=unused-function" ], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")]) env.Append(LINKFLAGS=[ "-u", "__cxa_guard_dummy", "-u", "ld_include_panic_highint_hdl", "-T", "esp32.common.ld", "-T", "esp32.rom.ld", "-T", "esp32.peripherals.ld", "-T", "esp32.rom.libgcc.ld", "-T", "esp32.rom.spiram_incompatible_fns.ld" ], FLASH_EXTRA_IMAGES=[("0x1000", join("$BUILD_DIR", "bootloader.bin")), ("0x8000", join("$BUILD_DIR", "partitions.bin"))], CPPDEFINES=[("GCC_NOT_5_2_0", "%d" % 1 if get_toolchain_version() != "5.2.0" else 0) ]) cppdefines = env.Flatten(env.get("CPPDEFINES", [])) if "PIO_FRAMEWORK_ESP_IDF_ENABLE_EXCEPTIONS" in cppdefines: # remove unnecessary flag defined in main.py that disables exceptions try: index = env['CXXFLAGS'].index("-fno-exceptions") if index > 0: env['CXXFLAGS'].remove("-fno-exceptions")
env.Append( ASFLAGS=["-x", "assembler-with-cpp"], # CFLAGS=[ # ], CCFLAGS=[ "-Wall", "-Wunreachable-code", ], # NOTE: C++ probably not supported. CXXFLAGS=["-fno-rtti", "-fno-exceptions", "-std=c++11"], LINKFLAGS=[ "-Wl,--gc-sections", "-Wl,-u_AppColdStart", "-Wl,-u_AppWarmStart", # Chip/JNxxxx/Build/config_JNxxxx.mk "-nostartfiles", #"-nostdlib", ], JENNIC_CHIP=JENNIC_CHIP, CPPDEFINES=[ #("F_CPU", "$BOARD_F_CPU"), "EMBEDDED", "RTOS", # Always tell any actual drivers they're running under an RTOS in this usage # CHANNEL ?= 0 ("MK_CHANNEL", "0"), # OTA Support #"BUILD_OTA", #("CLD_OTA_MANF_ID_VALUE", "0x1037"), #"OTA_ENCRYPTED", "USER_VSR_HANDLER", # Chip/Common/Build/config.mk ("JENNIC_CHIP", JENNIC_CHIP), "JENNIC_CHIP_" + JENNIC_CHIP, ("JENNIC_CHIP_FAMILY", JENNIC_CHIP_FAMILY), "JENNIC_CHIP_FAMILY_" + JENNIC_CHIP_FAMILY, "JENNIC_STACK_" + JENNIC_STACK, "JENNIC_MAC_" + JENNIC_MAC, # Chip/JNxxxx/Build/config_JNxxxx.mk (JENNIC_CHIP_FAMILY, JENNIC_CHIP_FAMILY_ID), (JENNIC_CHIP, JENNIC_CHIP_ID), ("JENNIC_CHIP_NAME", "_" + JENNIC_CHIP), ("JENNIC_CHIP_FAMILY_NAME", "_" + JENNIC_CHIP_FAMILY), "WATCHDOG_ENABLED", # Featureset ("JENNIC_HW_BBC_RXINCCA", "1"), ("JENNIC_HW_BBC_DMA", "1"), ("JENNIC_HW_BBC_ISA", "0"), ("JENNIC_SW_EXTERNAL_FLASH", "0"), ("JN516X_DMA_UART_BACKWARDS_COMPATIBLE_API", "1"), ("UART_BACKWARDS_COMPATIBLE_API", "1"), #("PDM_DESCRIPTOR_BASED_API","1"), # Platform/Common/Build/config.mk ("JENNIC_PCB", "DEVKIT4"), "JENNIC_PCB_DEVKIT4", ], CPPPATH=[ # Hardware Development Platforms join(SDK_PLATFORM_DIR, "Common", "Include"), join(SDK_PLATFORM_DIR, "DK4", "Include"), # Common Stack join(SDK_COMPONENTS_DIR, "Common", "Include"), join(SDK_COMPONENTS_DIR, "HardwareApi", "Include"), join(SDK_COMPONENTS_DIR, "Aes", "Include"), join(SDK_COMPONENTS_DIR, "DBG", "Include"), ], # LIBSOURCE_DIRS=[ # join(FRAMEWORK_DIR, "libraries") # ], LIBPATH=[ join(SDK_COMPONENTS_DIR, "Library"), join(SDK_CHIP_DIR, "Build"), join(SDK_PLATFORM_DIR, "DK4", "Library"), ], JNLIBS=[ "Aes", "HardwareApi", "MicroSpecific", "Boot", "Recal", # Platform-specific board library "BoardLib" ], LIBS=[ # # Standard libraries: Peripheral API, MAC, etc. # "Aes_"+JENNIC_CHIP_FAMILY, # "HardwareApi_"+JENNIC_CHIP_FAMILY, # "MicroSpecific_"+JENNIC_CHIP_FAMILY, # "Boot_"+JENNIC_CHIP_FAMILY, # "Recal_"+JENNIC_CHIP_FAMILY, # # Platform-specific board library # "BoardLib_"+JENNIC_CHIP_FAMILY, ])
env.Append( ASFLAGS=[ "-c", "-g", "-w", "-x", "assembler-with-cpp", "-mthumb" ], CFLAGS=[ "-MMD" ], # both c and cpp CCFLAGS=[ "-Os", # optimize for size "-w", # disables compiler warnings "-nostdlib", "-Wall", # show warnings "-ffunction-sections", # place each function in its own section "-fdata-sections", "-mthumb" ], CXXFLAGS=[ "-fno-exceptions", "-fno-threadsafe-statics", "-fpermissive", "-mthumb" ], CPPDEFINES=[ ("F_CPU", "$BOARD_F_CPU") ], LINKFLAGS=[ "-Os", "-nostartfiles", "-nostdlib", "-Wl,--gc-sections", "-mthumb", "--specs=nano.specs", "--specs=nosys.specs" ], LIBS=["m", "gcc", "c", "stdc++"], BUILDERS=dict( ElfToHex=Builder( action=env.VerboseAction(" ".join([ "$OBJCOPY", "-O", "ihex", "$SOURCES", "$TARGET" ]), "Building $TARGET"), suffix=".hex" ) ) )
ERASECMD="nrfjprog $ERASEFLAGS", PROGSUFFIX=".elf") # Allow user to override via pre:script if env.get("PROGNAME", "program") == "program": env.Replace(PROGNAME="firmware") env.Append(BUILDERS=dict( ElfToBin=Builder(action=env.VerboseAction( " ".join(["$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]), "Building $TARGET"), suffix=".bin"), ElfToHex=Builder(action=env.VerboseAction( " ".join([ "$OBJCOPY", "-O", "ihex", "-R", ".eeprom", "$SOURCES", "$TARGET" ]), "Building $TARGET"), suffix=".hex"), MergeHex=Builder(action=env.VerboseAction( " ".join([ '"%s"' % join(platform.get_package_dir("tool-sreccat") or "", "srec_cat"), "$SOFTDEVICEHEX", "-intel", "$SOURCES", "-intel", "-o", "$TARGET", "-intel", "--line-length=44" ]), "Building $TARGET"), suffix=".hex"))) upload_protocol = env.subst("$UPLOAD_PROTOCOL") if "nrfutil" == upload_protocol or ( board.get("build.bsp.name", "nrf5") == "adafruit" and "arduino" in env.get("PIOFRAMEWORK", [])): env.Append(BUILDERS=dict(
env.Append( ASFLAGS=["-x", "assembler-with-cpp"], CFLAGS=["-march=rv32imc", "-std=gnu99", "-Wno-old-style-declaration"], CXXFLAGS=[ "-march=rv32imc", "-std=gnu++11", "-fno-exceptions", "-fno-rtti" ], CCFLAGS=[ "-ffunction-sections", "-fdata-sections", "-Wno-error=unused-function", "-Wno-error=unused-variable", "-Wno-error=deprecated-declarations", "-Wno-unused-parameter", "-Wno-sign-compare", "-ggdb", "-Wno-error=format=", "-nostartfiles", "-Wno-format", "-Og", "-fstrict-volatile-bitfields", "-Wno-error=unused-but-set-variable", "-fno-jump-tables", "-fno-tree-switch-conversion", "-MMD" ], LINKFLAGS=[ "-nostartfiles", "-march=rv32imc", "--specs=nosys.specs", "-Wl,--cref", "-Wl,--gc-sections", "-fno-rtti", "-fno-lto", "-Wl,--wrap=mbedtls_mpi_exp_mod", "-Wl,--undefined=uxTopUsedPriority", "-Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting", "-Wl,--wrap=__register_frame_info_bases", "-Wl,--wrap=__register_frame_info", "-Wl,--wrap=__register_frame", "-Wl,--wrap=__register_frame_info_table_bases", "-Wl,--wrap=__register_frame_info_table", "-Wl,--wrap=__register_frame_table", "-Wl,--wrap=__deregister_frame_info_bases", "-Wl,--wrap=__deregister_frame_info", "-Wl,--wrap=_Unwind_Find_FDE", "-Wl,--wrap=_Unwind_GetGR", "-Wl,--wrap=_Unwind_GetCFA", "-Wl,--wrap=_Unwind_GetIP", "-Wl,--wrap=_Unwind_GetIPInfo", "-Wl,--wrap=_Unwind_GetRegionStart", "-Wl,--wrap=_Unwind_GetDataRelBase", "-Wl,--wrap=_Unwind_GetTextRelBase", "-Wl,--wrap=_Unwind_SetIP", "-Wl,--wrap=_Unwind_SetGR", "-Wl,--wrap=_Unwind_GetLanguageSpecificData", "-Wl,--wrap=_Unwind_FindEnclosingFunction", "-Wl,--wrap=_Unwind_Resume", "-Wl,--wrap=_Unwind_RaiseException", "-Wl,--wrap=_Unwind_DeleteException", "-Wl,--wrap=_Unwind_ForcedUnwind", "-Wl,--wrap=_Unwind_Resume_or_Rethrow", "-Wl,--wrap=_Unwind_Backtrace", "-Wl,--wrap=__cxa_call_unexpected", "-Wl,--wrap=__gxx_personality_v0", "-T", "memory.ld", "-T", "sections.ld", "-T", "esp32c3.rom.ld", "-T", "esp32c3.rom.api.ld", "-T", "esp32c3.rom.libgcc.ld", "-T", "esp32c3.rom.newlib.ld", "-T", "esp32c3.rom.version.ld", "-T", "esp32c3.peripherals.ld", "-u", "_Z5setupv", "-u", "_Z4loopv", "-u", "esp_app_desc", "-u", "pthread_include_pthread_impl", "-u", "pthread_include_pthread_cond_impl", "-u", "pthread_include_pthread_local_storage_impl", "-u", "start_app", "-u", "__ubsan_include", "-u", "__assert_func", "-u", "vfs_include_syscalls_impl", "-u", "app_main", "-u", "newlib_include_heap_impl", "-u", "newlib_include_syscalls_impl", "-u", "newlib_include_pthread_impl", "-u", "__cxa_guard_dummy", "-u", "__cxx_fatal_exception", '-Wl,-Map="%s"' % join("$BUILD_DIR", basename(env.subst("${PROJECT_DIR}.map"))) ], CPPPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "config"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "newlib", "platform_include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "freertos", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "freertos", "port", "riscv", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_hw_support", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_hw_support", "include", "soc"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_hw_support", "include", "soc", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_hw_support", "port", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_hw_support", "port", "esp32c3", "private_include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "heap", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "log", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "lwip", "include", "apps"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "lwip", "include", "apps", "sntp"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "lwip", "lwip", "src", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "lwip", "port", "esp32", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "lwip", "port", "esp32", "include", "arch"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "soc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "soc", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "soc", "esp32c3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "hal", "esp32c3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "hal", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "hal", "platform_port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_rom", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_rom", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_rom", "include", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_system", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_system", "port", "soc"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_system", "port", "include", "riscv"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_system", "port", "public_compat"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "riscv", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "driver", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "driver", "esp32c3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_pm", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_ringbuf", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "efuse", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "efuse", "esp32c3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "vfs", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_wifi", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_event", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_netif", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_eth", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "tcpip_adapter", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_phy", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_phy", "esp32c3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "app_trace", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_timer", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_ipc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "mbedtls", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "mbedtls", "mbedtls", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "mbedtls", "esp_crt_bundle", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "app_update", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "spi_flash", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bootloader_support", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "nvs_flash", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "pthread", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_gdbstub", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_gdbstub", "riscv"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_gdbstub", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "espcoredump", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "espcoredump", "include", "port", "riscv"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "wpa_supplicant", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "wpa_supplicant", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "wpa_supplicant", "include", "esp_supplicant"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "ieee802154", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "asio", "asio", "asio", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "asio", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bt", "common", "osi", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bt", "include", "esp32c3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bt", "common", "api", "include", "api"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bt", "common", "btc", "profile", "esp", "blufi", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bt", "common", "btc", "profile", "esp", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "bt", "host", "bluedroid", "api", "include", "api"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "cbor", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "unity", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "unity", "unity", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "cmock", "CMock", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "coap", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "coap", "port", "include", "coap"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "coap", "libcoap", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "coap", "libcoap", "include", "coap2"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "console"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "nghttp", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "nghttp", "nghttp2", "lib", "includes"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp-tls"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp-tls", "esp-tls-crypto"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_adc_cal", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_hid", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "tcp_transport", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_http_client", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_http_server", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_https_ota", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_https_server", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_lcd", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_lcd", "interface"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "protobuf-c", "protobuf-c"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "protocomm", "include", "common"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "protocomm", "include", "security"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "protocomm", "include", "transports"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "mdns", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_local_ctrl", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "sdmmc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_serial_slave_link", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_websocket_client", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "expat", "expat", "expat", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "expat", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "wear_levelling", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "fatfs", "diskio"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "fatfs", "vfs"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "fatfs", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "freemodbus", "common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "idf_test", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "idf_test", "include", "esp32c3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "jsmn", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "json", "cJSON"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "libsodium", "libsodium", "src", "libsodium", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "libsodium", "port_include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "mqtt", "esp-mqtt", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "openssl", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "spiffs", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "wifi_provisioning", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_littlefs", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "esp_littlefs", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "include", "fb_gfx", "include"), join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) ], LIBPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "ld") ], LIBS=[ "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lasio", "-lbt", "-lcbor", "-lunity", "-lcmock", "-lcoap", "-lconsole", "-lnghttp", "-lesp-tls", "-lesp_adc_cal", "-lesp_hid", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lesp_https_server", "-lesp_lcd", "-lprotobuf-c", "-lprotocomm", "-lmdns", "-lesp_local_ctrl", "-lsdmmc", "-lesp_serial_slave_link", "-lesp_websocket_client", "-lexpat", "-lwear_levelling", "-lfatfs", "-lfreemodbus", "-ljsmn", "-ljson", "-llibsodium", "-lmqtt", "-lopenssl", "-lspiffs", "-lwifi_provisioning", "-lesp_littlefs", "-lfb_gfx", "-lasio", "-lcbor", "-lcmock", "-lunity", "-lcoap", "-lesp_hid", "-lesp_lcd", "-lesp_local_ctrl", "-lesp_https_server", "-lesp_websocket_client", "-lexpat", "-lfreemodbus", "-ljsmn", "-llibsodium", "-lmqtt", "-lesp_adc_cal", "-lfatfs", "-lwear_levelling", "-lopenssl", "-lspiffs", "-lwifi_provisioning", "-lprotocomm", "-lbt", "-lbtdm_app", "-lprotobuf-c", "-lmdns", "-lconsole", "-ljson", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lriscv", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lphy", "-lesp_phy", "-lphy", "-lesp_phy", "-lphy", "-lbtbb", "-lm", "-lnewlib", "-lstdc++", "-lpthread", "-lgcc", "-lcxx", "-lapp_trace", "-lgcov", "-lapp_trace", "-lgcov", "-lc" ], CPPDEFINES=[ "HAVE_CONFIG_H", ("MBEDTLS_CONFIG_FILE", '\\"mbedtls/esp_config.h\\"'), "UNITY_INCLUDE_CONFIG_H", "WITH_POSIX", "_GNU_SOURCE", ("IDF_VER", '\\"v4.4-dev-2313-gc69f0ec32\\"'), "ESP_PLATFORM", "ARDUINO_ARCH_ESP32", "ESP32", ("F_CPU", "$BOARD_F_CPU"), ("ARDUINO", 10812), ("ARDUINO_VARIANT", '\\"%s\\"' % env.BoardConfig().get("build.variant").replace('"', "")), ("ARDUINO_BOARD", '\\"%s\\"' % env.BoardConfig().get("name").replace('"', "")) ], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")], FLASH_EXTRA_IMAGES=[( "0x0000", join( FRAMEWORK_DIR, "tools", "sdk", "esp32c3", "bin", "bootloader_${BOARD_FLASH_MODE}_${__get_board_f_flash(__env__)}.bin" )), ("0x8000", join(env.subst("$BUILD_DIR"), "partitions.bin")), ("0xe000", join(FRAMEWORK_DIR, "tools", "partitions", "boot_app0.bin"))])
env.Append( ASFLAGS=env.get("CCFLAGS", [])[:], LINKFLAGS = [ "-Wl,--start-group", "-lc", "-lgcc", "-lm", "-Wl,--end-group", join(TOOLCHAIN_DIR, "lib", "gcc", "riscv64-unknown-elf", "8.2.0", "crti.o"), join(TOOLCHAIN_DIR, "lib", "gcc", "riscv64-unknown-elf", "8.2.0", "crtbegin.o"), ], CPPPATH = [ join(FRAMEWORK_DIR, "lib", "arch", "include"), join(FRAMEWORK_DIR, "lib", "bsp"), join(FRAMEWORK_DIR, "lib", "bsp", "include"), join(FRAMEWORK_DIR, "lib", "bsp", "config"), join(FRAMEWORK_DIR, "lib", "bsp", "device"), join(FRAMEWORK_DIR, "lib", "bsp", "syscalls"), join(FRAMEWORK_DIR, "lib", "drivers"), join(FRAMEWORK_DIR, "lib", "drivers", "src", "misc", "ws2812b"), join(FRAMEWORK_DIR, "lib", "drivers", "src", "network"), join(FRAMEWORK_DIR, "lib", "drivers", "src", "storage"), join(FRAMEWORK_DIR, "lib", "drivers", "include"), join(FRAMEWORK_DIR, "lib", "drivers", "include", "misc", "ws2812b"), join(FRAMEWORK_DIR, "lib", "drivers", "include", "network"), join(FRAMEWORK_DIR, "lib", "drivers", "include", "storage"), join(FRAMEWORK_DIR, "lib", "freertos"), join(FRAMEWORK_DIR, "lib", "freertos", "conf"), join(FRAMEWORK_DIR, "lib", "freertos", "include"), join(FRAMEWORK_DIR, "lib", "freertos", "include", "kernel"), join(FRAMEWORK_DIR, "lib", "freertos", "portable"), join(FRAMEWORK_DIR, "lib", "hal"), join(FRAMEWORK_DIR, "lib", "hal", "include"), join(FRAMEWORK_DIR, "lib", "posix"), join(FRAMEWORK_DIR, "lib", "posix", "include"), join(FRAMEWORK_DIR, "lib", "utils", "include"), join(FRAMEWORK_DIR, "third_party", "fatfs", "source"), join(FRAMEWORK_DIR, "third_party", "lwip", "src", "include"), join(FRAMEWORK_DIR, "third_party") ], LIBS = [ "c", "gcc", "m", "stdc++", "atomic" ] )
SIZEPROGREGEXP= r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*", SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*", SIZECHECKCMD="$SIZETOOL -A -d $SOURCES", SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES', PROGSUFFIX=".elf") # Allow user to override via pre:script if env.get("PROGNAME", "program") == "program": env.Replace(PROGNAME="firmware") env.Append(BUILDERS=dict(ElfToBin=Builder(action=env.VerboseAction( " ".join(["$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]), "Building $TARGET"), suffix=".bin"), ElfToHex=Builder(action=env.VerboseAction( " ".join([ "$OBJCOPY", "-O", "ihex", "-R", ".eeprom", "$SOURCES", "$TARGET" ]), "Building $TARGET"), suffix=".hex"))) if not env.get("PIOFRAMEWORK"): env.SConscript("frameworks/_bare.py") # # Target: Build executable and linkable firmware # if "zephyr" in env.get("PIOFRAMEWORK", []): env.SConscript(join(platform.get_package_dir("framework-zephyr"), "scripts", "platformio", "platformio-build-pre.py"),
env.Append( ASFLAGS=["-x", "assembler-with-cpp"], CFLAGS=["-mlongcalls", "-std=gnu99", "-Wno-old-style-declaration"], CXXFLAGS=["-mlongcalls", "-std=gnu++11", "-fexceptions", "-fno-rtti"], CCFLAGS=[ "-ffunction-sections", "-fdata-sections", "-Wno-error=unused-function", "-Wno-error=unused-variable", "-Wno-error=deprecated-declarations", "-Wno-unused-parameter", "-Wno-sign-compare", "-ggdb", "-Os", "-freorder-blocks", "-Wwrite-strings", "-fstack-protector", "-fstrict-volatile-bitfields", "-Wno-error=unused-but-set-variable", "-fno-jump-tables", "-fno-tree-switch-conversion", "-MMD" ], LINKFLAGS=[ "-mlongcalls", "-Wl,--cref", "-Wl,--gc-sections", "-fno-rtti", "-fno-lto", "-Wl,--wrap=longjmp", "-Wl,--undefined=uxTopUsedPriority", "-T", "memory.ld", "-T", "sections.ld", "-T", "esp32s3.rom.ld", "-T", "esp32s3.rom.api.ld", "-T", "esp32s3.rom.libgcc.ld", "-T", "esp32s3.rom.newlib.ld", "-T", "esp32s3.rom.version.ld", "-T", "esp32s3.rom.newlib-time.ld", "-T", "esp32s3.peripherals.ld", "-u", "_Z5setupv", "-u", "_Z4loopv", "-u", "esp_app_desc", "-u", "pthread_include_pthread_impl", "-u", "pthread_include_pthread_cond_impl", "-u", "pthread_include_pthread_local_storage_impl", "-u", "pthread_include_pthread_rwlock_impl", "-u", "include_esp_phy_override", "-u", "ld_include_highint_hdl", "-u", "start_app", "-u", "start_app_other_cores", "-u", "__ubsan_include", "-u", "__assert_func", "-u", "vfs_include_syscalls_impl", "-u", "app_main", "-u", "newlib_include_heap_impl", "-u", "newlib_include_syscalls_impl", "-u", "newlib_include_pthread_impl", "-u", "newlib_include_assert_impl", "-u", "__cxa_guard_dummy", '-Wl,-Map="%s"' % join("${BUILD_DIR}", "${PROGNAME}.map") ], CPPPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "newlib", "platform_include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "freertos", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "freertos", "include", "esp_additions", "freertos"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "freertos", "port", "xtensa", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "freertos", "include", "esp_additions"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_hw_support", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_hw_support", "include", "soc"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_hw_support", "include", "soc", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_hw_support", "port", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_hw_support", "port", "esp32s3", "private_include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "heap", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "log", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "lwip", "include", "apps"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "lwip", "include", "apps", "sntp"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "lwip", "lwip", "src", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "lwip", "port", "esp32", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "lwip", "port", "esp32", "include", "arch"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "soc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "soc", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "soc", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "hal", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "hal", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "hal", "platform_port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_rom", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_rom", "include", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_rom", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_system", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_system", "port", "soc"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_system", "port", "public_compat"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "xtensa", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "xtensa", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "driver", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "driver", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_pm", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_ringbuf", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "efuse", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "efuse", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "vfs", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_wifi", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_event", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_netif", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_eth", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "tcpip_adapter", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_phy", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_phy", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_ipc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "app_trace", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_timer", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "mbedtls", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "mbedtls", "mbedtls", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "mbedtls", "esp_crt_bundle", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "app_update", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "spi_flash", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bootloader_support", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "nvs_flash", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "pthread", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_gdbstub", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_gdbstub", "xtensa"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_gdbstub", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "espcoredump", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "espcoredump", "include", "port", "xtensa"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "wpa_supplicant", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "wpa_supplicant", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "wpa_supplicant", "esp_supplicant", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "ieee802154", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "console"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "asio", "asio", "asio", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "asio", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "common", "osi", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "include", "esp32s3", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "common", "api", "include", "api"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "common", "btc", "profile", "esp", "blufi", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "common", "btc", "profile", "esp", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "host", "bluedroid", "api", "include", "api"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_common", "tinycrypt", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_core"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_core", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_core", "storage"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "btc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_models", "common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_models", "client", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "mesh_models", "server", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "api", "core", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "api", "models", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "bt", "esp_ble_mesh", "api"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "cbor", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "unity", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "unity", "unity", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "cmock", "CMock", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "coap", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "coap", "libcoap", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "nghttp", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "nghttp", "nghttp2", "lib", "includes"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-tls"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-tls", "esp-tls-crypto"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_adc_cal", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_hid", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "tcp_transport", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_http_client", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_http_server", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_https_ota", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_https_server", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_lcd", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_lcd", "interface"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "protobuf-c", "protobuf-c"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "protocomm", "include", "common"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "protocomm", "include", "security"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "protocomm", "include", "transports"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "mdns", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_local_ctrl", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "sdmmc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_serial_slave_link", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_websocket_client", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "expat", "expat", "expat", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "expat", "port", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "wear_levelling", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "fatfs", "diskio"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "fatfs", "vfs"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "fatfs", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "freemodbus", "common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "idf_test", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "idf_test", "include", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "jsmn", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "json", "cJSON"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "libsodium", "libsodium", "src", "libsodium", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "libsodium", "port_include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "mqtt", "esp-mqtt", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "openssl", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "perfmon", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "spiffs", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "usb", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "ulp", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "wifi_provisioning", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "button", "button", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "rmaker_common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "json_parser", "upstream", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "json_parser", "upstream"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "json_generator", "upstream"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_schedule", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_rainmaker", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "qrcode", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "ws2812_led"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "dotprod", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "support", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "hann", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "blackman", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "blackman_harris", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "blackman_nuttall", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "nuttall", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "windows", "flat_top", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "iir", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "fir", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "add", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "sub", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "mul", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "addc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "mulc", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "math", "sqrt", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "matrix", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "fft", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "dct", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "conv", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "common", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "kalman", "ekf", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dsp", "modules", "kalman", "ekf_imu13states", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "freertos", "include", "freertos"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "arduino_tinyusb", "tinyusb", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "arduino_tinyusb", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_littlefs", "src"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp_littlefs", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "tool"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "typedef"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "image"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "math"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "nn"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "layer"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "detect"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-dl", "include", "model_zoo"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-sr", "esp-tts", "esp_tts_chinese", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp-sr", "include", "esp32s3"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp32-camera", "driver", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "esp32-camera", "conversions", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "include", "fb_gfx", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", env.BoardConfig().get("build.arduino.memory_type", "qspi_qspi"), "include"), join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) ], LIBPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "ld"), join(FRAMEWORK_DIR, "tools", "sdk", "esp32s3", env.BoardConfig().get("build.arduino.memory_type", "qspi_qspi")) ], LIBS=[ "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lasio", "-lbt", "-lcbor", "-lunity", "-lcmock", "-lcoap", "-lnghttp", "-lesp-tls", "-lesp_adc_cal", "-lesp_hid", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lesp_https_server", "-lesp_lcd", "-lprotobuf-c", "-lprotocomm", "-lmdns", "-lesp_local_ctrl", "-lsdmmc", "-lesp_serial_slave_link", "-lesp_websocket_client", "-lexpat", "-lwear_levelling", "-lfatfs", "-lfreemodbus", "-ljsmn", "-ljson", "-llibsodium", "-lmqtt", "-lopenssl", "-lperfmon", "-lspiffs", "-lusb", "-lulp", "-lwifi_provisioning", "-lbutton", "-lrmaker_common", "-ljson_parser", "-ljson_generator", "-lesp_schedule", "-lesp_rainmaker", "-lqrcode", "-lws2812_led", "-lesp-dsp", "-lesp-sr", "-lesp32-camera", "-lesp_littlefs", "-lfb_gfx", "-lasio", "-lcbor", "-lcmock", "-lunity", "-lcoap", "-lesp_lcd", "-lesp_websocket_client", "-lexpat", "-lfreemodbus", "-ljsmn", "-llibsodium", "-lperfmon", "-lusb", "-lesp_adc_cal", "-lesp_hid", "-lfatfs", "-lwear_levelling", "-lopenssl", "-lesp_rainmaker", "-lesp_local_ctrl", "-lesp_https_server", "-lwifi_provisioning", "-lprotocomm", "-lbt", "-lbtdm_app", "-lprotobuf-c", "-lmdns", "-lrmaker_common", "-lmqtt", "-ljson_parser", "-ljson_generator", "-lesp_schedule", "-lqrcode", "-larduino_tinyusb", "-lcat_face_detect", "-lhuman_face_detect", "-lcolor_detect", "-lmfn", "-ldl", "-lwakenet", "-lhufzip", "-lesp_audio_front_end", "-lesp_audio_processor", "-lmultinet", "-lesp-sr", "-lwakenet", "-lhufzip", "-lesp_audio_front_end", "-lesp_audio_processor", "-lmultinet", "-ljson", "-lspiffs", "-ldl_lib", "-lc_speech_features", "-lesp_tts_chinese", "-lvoice_set_xiaole", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lulp", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lulp", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lulp", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lulp", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lulp", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lesp_ringbuf", "-lefuse", "-lesp_ipc", "-ldriver", "-lesp_pm", "-lmbedtls", "-lapp_update", "-lbootloader_support", "-lspi_flash", "-lnvs_flash", "-lpthread", "-lesp_gdbstub", "-lespcoredump", "-lesp_phy", "-lesp_system", "-lesp_rom", "-lhal", "-lvfs", "-lesp_eth", "-ltcpip_adapter", "-lesp_netif", "-lesp_event", "-lwpa_supplicant", "-lesp_wifi", "-lconsole", "-llwip", "-llog", "-lheap", "-lsoc", "-lesp_hw_support", "-lxtensa", "-lesp_common", "-lesp_timer", "-lfreertos", "-lnewlib", "-lcxx", "-lapp_trace", "-lnghttp", "-lesp-tls", "-ltcp_transport", "-lesp_http_client", "-lesp_http_server", "-lesp_https_ota", "-lsdmmc", "-lesp_serial_slave_link", "-lulp", "-lmbedtls", "-lmbedcrypto", "-lmbedx509", "-lcoexist", "-lcore", "-lespnow", "-lmesh", "-lnet80211", "-lpp", "-lsmartconfig", "-lwapi", "-lphy", "-lbtbb", "-lesp_phy", "-lphy", "-lbtbb", "-lesp_phy", "-lphy", "-lbtbb", "-lxt_hal", "-lm", "-lnewlib", "-lstdc++", "-lpthread", "-lgcc", "-lcxx", "-lapp_trace", "-lgcov", "-lapp_trace", "-lgcov", "-lc" ], CPPDEFINES=[ "HAVE_CONFIG_H", ("MBEDTLS_CONFIG_FILE", '\\"mbedtls/esp_config.h\\"'), "UNITY_INCLUDE_CONFIG_H", "WITH_POSIX", "_GNU_SOURCE", ("IDF_VER", '\\"v4.4.1-1-gb8050b365e\\"'), "ESP_PLATFORM", "_POSIX_READER_WRITER_LOCKS", "ARDUINO_ARCH_ESP32", "ESP32", ("F_CPU", "$BOARD_F_CPU"), ("ARDUINO", 10812), ("ARDUINO_VARIANT", '\\"%s\\"' % env.BoardConfig().get("build.variant").replace('"', "")), ("ARDUINO_BOARD", '\\"%s\\"' % env.BoardConfig().get("name").replace('"', "")), "ARDUINO_PARTITION_%s" % basename(env.BoardConfig().get( "build.partitions", "default.csv")).replace(".csv", "").replace( "-", "_") ], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")], FLASH_EXTRA_IMAGES= [("0x0000", join( FRAMEWORK_DIR, "tools", "sdk", "esp32s3", "bin", "bootloader_${BOARD_FLASH_MODE}_${__get_board_f_flash(__env__)}.bin") ), ("0x8000", join(env.subst("$BUILD_DIR"), "partitions.bin")), ("0xe000", join(FRAMEWORK_DIR, "tools", "partitions", "boot_app0.bin"))] + [(offset, join(FRAMEWORK_DIR, img)) for offset, img in env.BoardConfig().get( "upload.arduino.flash_extra_images", [])], )
"-ffreestanding", "-fsigned-char", "-fno-move-loop-invariants", "-fno-strict-aliasing", "--specs=nano.specs", "--specs=nosys.specs", "-IMarlin/src/HAL", "-MMD", "-MP", "-DTARGET_STM32F1" ]) for i in range(1, len(sys.argv)): args += " " + sys.argv[i] print(args) # extra script for linker options else: from SCons.Script import DefaultEnvironment env = DefaultEnvironment() env.Append( ARFLAGS=["rcs"], ASFLAGS=["-x", "assembler-with-cpp"], CXXFLAGS=[ "-fabi-version=0", "-fno-use-cxa-atexit", "-fno-threadsafe-statics" ], LINKFLAGS=[ "-Os", "-mcpu=cortex-m3", "-ffreestanding", "-mthumb", "--specs=nano.specs", "--specs=nosys.specs", "-u_printf_float", ], )
], UPLOADEROTAFLAGS=[ "--debug", "--progress", "-i", "$UPLOAD_PORT", "$UPLOAD_FLAGS" ], UPLOADCMD='$UPLOADER $UPLOADERFLAGS -cf $SOURCE -cr', UPLOADOTACMD='"$PYTHONEXE" "$UPLOADEROTA" $UPLOADEROTAFLAGS -f $SOURCE', # # Misc # MKSPIFFSTOOL="mkspiffs", SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES', PROGNAME="firmware", PROGSUFFIX=".elf") env.Append(ASFLAGS=env.get("CCFLAGS", [])[:]) if int(ARGUMENTS.get("PIOVERBOSE", 0)): env.Prepend(UPLOADERFLAGS=["-vv"]) # # SPIFFS # def fetch_spiffs_size(env): spiffs_re = re.compile( r"PROVIDE\s*\(\s*_SPIFFS_(\w+)\s*=\s*(0x[\dA-F]+)\s*\)") with open(env.GetActualLDScript()) as f: for line in f.readlines(): match = spiffs_re.search(line)
env.Append(BUILDERS=dict( ElfToEep=Builder( action=env.VerboseAction( " ".join([ "$OBJCOPY", "-O", "ihex", "-j", ".eeprom", '--set-section-flags=.eeprom="alloc,load"', "--no-change-warnings", "--change-section-lma", ".eeprom=0", "$SOURCES", "$TARGET", ]), "Building $TARGET", ), suffix=".eep", ), ElfToHex=Builder( action=env.VerboseAction( " ".join([ "$OBJCOPY", "-O", "ihex", "-R", ".eeprom", "$SOURCES", "$TARGET" ]), "Building $TARGET", ), suffix=".hex", ), ))
env.Append( CCFLAGS=["-Wall"], CPPDEFINES=[("ARDUINO", 10805), ("ARDUINO_BOARD", '\\"PLATFORMIO_%s\\"' % env.BoardConfig().id.upper()), "LWIP_OPEN_SRC"], CPPPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "include"), join(FRAMEWORK_DIR, "tools", "sdk", "libc", "xtensa-lx106-elf", "include"), join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) ], LIBPATH=[ join("$BUILD_DIR", "ld"), # eagle.app.v6.common.ld join(FRAMEWORK_DIR, "tools", "sdk", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "ld"), join(FRAMEWORK_DIR, "tools", "sdk", "libc", "xtensa-lx106-elf", "lib") ], LIBS=[ "hal", "phy", "pp", "net80211", "wpa", "crypto", "main", "wps", "axtls", "espnow", "smartconfig", "airkiss", "wpa2", "stdc++", "m", "c", "gcc" ], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")], LINKFLAGS=[ "-Wl,-wrap,system_restart_local", "-Wl,-wrap,spi_flash_read", "-u", "app_entry" ])
env.Replace(LDSCRIPT_PATH=get_linker_script()) # # Prepare build environment # # The final firmware is linked against standard library with two specifications: # nano.specs - link against a reduced-size variant of libc # nosys.specs - link against stubbed standard syscalls env.Append( CPPPATH=[ os.path.join(CMSIS_DIR, "CMSIS", "Include"), os.path.join(CMSIS_DEVICE_DIR, "Include") ], LINKFLAGS=[ "--specs=nano.specs", "--specs=nosys.specs" ] ) # # Compile CMSIS sources # sources_path = os.path.join(CMSIS_DEVICE_DIR, "Source", "Templates") prepare_startup_file(sources_path) env.BuildSources( os.path.join("$BUILD_DIR", "FrameworkCMSIS"), sources_path,
ARFLAGS=["rc"], SIZEPROGREGEXP= r"^(?:\.text|\.data|\.rodata|\.text.align|\.ARM.exidx)\s+(\d+).*", SIZEDATAREGEXP=r"^(?:\.data|\.bss|\.noinit)\s+(\d+).*", SIZECHECKCMD="$SIZETOOL -A -d $SOURCES", SIZEPRINTCMD='$SIZETOOL -B -d $SOURCES', #LIBS=["twr-sdk"], PROGNAME="firmware", PROGSUFFIX=".elf") env.Append(BUILDERS=dict(ElfToBin=Builder(action=env.VerboseAction( " ".join(["$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]), "Building $TARGET"), suffix=".bin"), ElfToHex=Builder(action=env.VerboseAction( " ".join([ "$OBJCOPY", "-O", "ihex", "-R", ".eeprom", "$SOURCES", "$TARGET" ]), "Building $TARGET"), suffix=".hex"))) # # Target: Build executable and linkable firmware # target_elf = None if "nobuild" in COMMAND_LINE_TARGETS: target_elf = join("$BUILD_DIR", "${PROGNAME}.elf") target_firm = join("$BUILD_DIR", "${PROGNAME}.bin") else: target_elf = env.BuildProgram()
content = "" with open(main_ld_file) as f: content = f.read() incre = re.compile(r"^INCLUDE\s+\"?([^\.]+\.ld)\"?", re.M) with open(main_ld_file, "w") as f: f.write(incre.sub(_include_callback, content)) # # Processing ... # if env.BoardConfig().get("build.core") == "lm4f": env.Append(CPPDEFINES=["LM4F"]) env.Append(CPPPATH=[FRAMEWORK_DIR, join(FRAMEWORK_DIR, "include")]) root_dir = join(FRAMEWORK_DIR, "lib", env.BoardConfig().get("build.core", "")) if env.BoardConfig().get("build.core") == "stm32": root_dir = join(root_dir, env.BoardConfig().get("build.variant")[5:7]) ldscript_path = find_ldscript(root_dir) if ldscript_path: merge_ld_scripts(ldscript_path) generate_nvic_files() # override ldscript by libopencm3 #assert "LDSCRIPT_PATH" in env #env.Replace(
env.Append( ASFLAGS=[ "-x", "assembler-with-cpp", "-Wa,-march=%s" % board.get("build.march") ], CCFLAGS=[ "-Os", "-Wall", "-ffunction-sections", "-fdata-sections", "-march=%s" % board.get("build.march"), "-mabi=%s" % board.get("build.mabi"), "-mcmodel=%s" % board.get("build.mcmodel") ], LINKFLAGS=[ "-Os", "-march=%s" % board.get("build.march"), "-mabi=%s" % board.get("build.mabi"), "-mcmodel=%s" % board.get("build.mcmodel"), "-Wl,-gc-sections", "-nostdlib", "-nostartfiles", "-static", "-Wl,--wrap=malloc", "-Wl,--wrap=free", "-Wl,--wrap=open", "-Wl,--wrap=lseek", "-Wl,--wrap=read", "-Wl,--wrap=write", "-Wl,--wrap=fstat", "-Wl,--wrap=stat", "-Wl,--wrap=close", "-Wl,--wrap=link", "-Wl,--wrap=unlink", "-Wl,--wrap=execve", "-Wl,--wrap=fork", "-Wl,--wrap=getpid", "-Wl,--wrap=kill", "-Wl,--wrap=wait", "-Wl,--wrap=isatty", "-Wl,--wrap=times", "-Wl,--wrap=sbrk", "-Wl,--wrap=_exit" "-Wl,-Map=" + os.path.join("$BUILD_DIR", os.path.basename(env.subst("${PROJECT_DIR}.map"))), "-Wl,--defsym=__comrv_cache_size=0", ] )
env.Append( ASFLAGS=["-x", "assembler-with-cpp"], CFLAGS=[ "-std=gnu99", "-Wno-old-style-declaration", "-Wno-implicit-fallthrough" ], CCFLAGS=[ "-Os", "-g3", "-Wall", "-nostdlib", "-Wpointer-arith", "-Wno-error=unused-but-set-variable", "-Wno-error=unused-variable", "-mlongcalls", "-ffunction-sections", "-fdata-sections", "-fstrict-volatile-bitfields", "-Wno-error=deprecated-declarations", "-Wno-error=unused-function", "-Wno-unused-parameter", "-Wno-sign-compare", "-Wno-frame-address", "-Wwrite-strings", "-mfix-esp32-psram-cache-issue", "-fstack-protector", "-fexceptions", "-Werror=reorder", "-MMD" ], CXXFLAGS=["-fno-rtti", "-fno-exceptions", "-std=gnu++11"], LINKFLAGS=[ "-nostdlib", "-Wl,-static", "-u", "call_user_start_cpu0", "-Wl,--undefined=uxTopUsedPriority", "-Wl,--gc-sections", "-Wl,-EL", "-T", "esp32_out.ld", "-T", "esp32.project.ld", "-T", "esp32.peripherals.ld", "-T", "esp32.rom.ld", "-T", "esp32.rom.libgcc.ld", "-T", "esp32.rom.syscalls.ld", "-T", "esp32.rom.newlib-data.ld", "-u", "ld_include_panic_highint_hdl", "-u", "__cxa_guard_dummy", "-u", "newlib_include_locks_impl", "-u", "newlib_include_heap_impl", "-u", "newlib_include_syscalls_impl", "-u", "pthread_include_pthread_impl", "-u", "pthread_include_pthread_cond_impl", "-u", "pthread_include_pthread_local_storage_impl" ], CPPDEFINES=[ "ESP32", "ESP_PLATFORM", ("F_CPU", "$BOARD_F_CPU"), "HAVE_CONFIG_H", "_GNU_SOURCE", ("GCC_NOT_5_2_0", 1), ("MBEDTLS_CONFIG_FILE", '\\"mbedtls/esp_config.h\\"'), ("ARDUINO", 10805), "ARDUINO_ARCH_ESP32", ("ARDUINO_VARIANT", '\\"%s\\"' % env.BoardConfig().get("build.variant").replace('"', "")), ("ARDUINO_BOARD", '\\"%s\\"' % env.BoardConfig().get("name").replace('"', "")) ], CPPPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "include", "config"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "app_trace"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "app_update"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "asio"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "bootloader_support"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "bt"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "coap"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "console"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "driver"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "efuse"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp-tls"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp32"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_adc_cal"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_common"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_eth"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_event"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_gdbstub"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_http_client"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_http_server"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_https_ota"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_local_ctrl"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_ringbuf"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_rom"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_websocket_client"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp_wifi"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "espcoredump"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "expat"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "fatfs"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "freemodbus"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "freertos"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "heap"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "idf_test"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "jsmn"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "json"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "libsodium"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "log"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "lwip"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "mbedtls"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "mdns"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "mqtt"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "newlib"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "nghttp"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "nvs_flash"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "openssl"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "protobuf-c"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "protocomm"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "pthread"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "sdmmc"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "soc"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "spi_flash"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "spiffs"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "tcp_transport"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "tcpip_adapter"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "ulp"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "unity"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "vfs"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "wear_levelling"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "wifi_provisioning"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "wpa_supplicant"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "xtensa"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp-face"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp32-camera"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "esp-face"), join(FRAMEWORK_DIR, "tools", "sdk", "include", "fb_gfx"), join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core")) ], LIBPATH=[ join(FRAMEWORK_DIR, "tools", "sdk", "lib"), join(FRAMEWORK_DIR, "tools", "sdk", "ld") ], LIBS=[ "-lgcc", "-lcoexist", "-lheap", "-lpthread", "-lnvs_flash", "-lapp_update", "-lbtdm_app", "-lwifi_provisioning", "-lmesh", "-lm", "-lesp_websocket_client", "-lspiffs", "-lnghttp", "-lespnow", "-lsoc", "-lmbedtls", "-lface_detection", "-lface_recognition", "-lprotocomm", "-lmdns", "-lconsole", "-lbt", "-lesp_rom", "-lfreemodbus", "-lfb_gfx", "-lsdmmc", "-lfr", "-lcoap", "-lfd", "-lnet80211", "-lcore", "-lexpat", "-lbootloader_support", "-lesp_gdbstub", "-lrtc", "-lesp_ringbuf", "-lasio", "-lxtensa", "-lspi_flash", "-lesp_adc_cal", "-ldl", "-lesp_common", "-lphy", "-lesp_eth", "-ljson", "-lesp_http_server", "-lwear_levelling", "-lesp32", "-ljsmn", "-llibsodium", "-lcxx", "-lvfs", "-lpp", "-llog", "-lulp", "-lod", "-lunity", "-ldriver", "-lfreertos", "-lesp_http_client", "-lespcoredump", "-lopenssl", "-limage_util", "-lesp_https_ota", "-lwpa_supplicant", "-lmqtt", "-lhal", "-ltcpip_adapter", "-lesp_event", "-ltcp_transport", "-llwip", "-lesp-tls", "-lesp_wifi", "-lesp32-camera", "-lapp_trace", "-lesp_local_ctrl", "-lefuse", "-lnewlib", "-lsmartconfig", "-lfatfs", "-lprotobuf-c", "-lc", "-lstdc++" ], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")], FLASH_EXTRA_IMAGES=[( "0x1000", join( FRAMEWORK_DIR, "tools", "sdk", "bin", "bootloader_${BOARD_FLASH_MODE}_${__get_board_f_flash(__env__)}.bin" )), ("0x8000", join(env.subst("$BUILD_DIR"), "partitions.bin")), ("0xe000", join(FRAMEWORK_DIR, "tools", "partitions", "boot_app0.bin"))])
env = DefaultEnvironment() env.Replace(_BINPREFIX="", AR="${_BINPREFIX}ar", AS="${_BINPREFIX}as", CC="${_BINPREFIX}gcc", CXX="${_BINPREFIX}g++", GDB="${_BINPREFIX}gdb", OBJCOPY="${_BINPREFIX}objcopy", RANLIB="${_BINPREFIX}ranlib", SIZETOOL="${_BINPREFIX}size", SIZEPRINTCMD='$SIZETOOL $SOURCES', PROGSUFFIX=".exe") env.Append(LINKFLAGS=["-static", "-static-libgcc", "-static-libstdc++"]) if get_systype() == "darwin_x86_64": env.Replace(_BINPREFIX="i586-mingw32-") elif get_systype() in ("linux_x86_64", "linux_i686"): env.Replace(_BINPREFIX="i686-w64-mingw32-") # # Target: Build executable program # target_bin = env.BuildProgram() # # Target: Print binary size #
env.Append( CCFLAGS=[ "--param", "max-inline-insns-single=500", "-march=armv7-m" ], CPPDEFINES=[ ("ARDUINO", 10610), "BOARD_%s" % board.get("build.variant"), ("ERROR_LED_PORT", "GPIOB"), ("ERROR_LED_PIN", 1), ("DEBUG_LEVEL", "DEBUG_NONE"), "__STM32F1__", "ARDUINO_ARCH_STM32F1" ], CPPPATH=[ join(FRAMEWORK_DIR, "cores", board.get("build.core")), join(FRAMEWORK_DIR, "system", "libmaple"), join(FRAMEWORK_DIR, "system", "libmaple", "include"), join(FRAMEWORK_DIR, "system", "libmaple", "usb", "stm32f1"), join(FRAMEWORK_DIR, "system", "libmaple", "usb", "usb_lib") ], LIBPATH=[ join(FRAMEWORK_DIR, "variants", board.get("build.variant"), "ld") ], LIBS=["c"] )
""" from SCons.Script import AlwaysBuild, Default, DefaultEnvironment env = DefaultEnvironment() # Preserve C and C++ build flags backup_cflags = env.get("CFLAGS", []) backup_cxxflags = env.get("CXXFLAGS", []) # Scan for GCC compiler env.Tool("gcc") env.Tool("g++") # Restore C/C++ build flags as they were overridden by env.Tool env.Append(CFLAGS=backup_cflags, CXXFLAGS=backup_cxxflags) # # Target: Build executable program # target_bin = env.BuildProgram() # # Target: Print binary size # target_size = env.Alias( "size", target_bin, env.VerboseAction("$SIZEPRINTCMD", "Calculating size $SOURCE")) AlwaysBuild(target_size)
"USB_MIDI16", "USB_MIDI_SERIAL", "USB_MIDI4_SERIAL", "USB_MIDI16_SERIAL", "USB_AUDIO", "USB_MIDI_AUDIO_SERIAL", "USB_MIDI16_AUDIO_SERIAL", "USB_MTPDISK", "USB_RAWHID", "USB_FLIGHTSIM", "USB_FLIGHTSIM_JOYSTICK", "USB_EVERYTHING", "USB_DISABLED", ) if not set(env.get("CPPDEFINES", [])) & set(BUILTIN_USB_FLAGS): env.Append(CPPDEFINES=["USB_SERIAL"]) env.Replace( SIZEPROGREGEXP= r"^(?:\.text|\.text\.progmem|\.text\.itcm|\.data|\.text\.csf)\s+([0-9]+).*", SIZEDATAREGEXP= r"^(?:\.usbdescriptortable|\.dmabuffers|\.usbbuffers|\.data|\.bss|\.noinit|\.text\.itcm|\.text\.itcm\.padding)\s+([0-9]+).*" ) env.Append(CPPDEFINES=[("ARDUINO", 10805), ("TEENSYDUINO", int(FRAMEWORK_VERSION.split(".")[1])), "CORE_TEENSY"], CPPPATH=[join(FRAMEWORK_DIR, "cores", BUILD_CORE)], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")]) if "BOARD" in env and BUILD_CORE == "teensy":
from os.path import isdir, join from SCons.Script import DefaultEnvironment env = DefaultEnvironment() platform = env.PioPlatform() FRAMEWORK_DIR = platform.get_package_dir("framework-arduinomicrochippic32") BUILD_CORE = env.BoardConfig().get("build.core") assert isdir(FRAMEWORK_DIR) env.Append( CPPDEFINES=[("ARDUINO", 10808), "ARDUINO_ARCH_PIC32", ("IDE", "Arduino")], CPPPATH=[join(FRAMEWORK_DIR, "cores", BUILD_CORE)], LIBPATH=[ join(FRAMEWORK_DIR, "cores", BUILD_CORE), join(FRAMEWORK_DIR, "variants", env.BoardConfig().get("build.variant")) ], LINKFLAGS=[join(FRAMEWORK_DIR, "cores", BUILD_CORE, "cpp-startup.S")], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")]) # # Process USB flags # cpp_flags = env.Flatten(env.get("CPPDEFINES", [])) if any(str(f).startswith("PIO_ARDUINO_ENABLE_USB") for f in cpp_flags): env.Append(CPPDEFINES=["__USB_ENABLED__", "__SERIAL_IS_USB__"]) if "PIO_ARDUINO_ENABLE_USB_SERIAL" in cpp_flags: env.Append(CPPDEFINES=["__USB_CDCACM__"]) elif "PIO_ARDUINO_ENABLE_USB_HID" in cpp_flags:
env.Append( ASFLAGS=["-x", "assembler-with-cpp"], CCFLAGS=[ "-Os", # optimize for size "-ffunction-sections", # place each function in its own section "-fdata-sections", "-Wall", "-mthumb", "-nostdlib" ], CXXFLAGS=[ "-fno-rtti", "-fno-exceptions" ], CPPDEFINES=[ ("F_CPU", "$BOARD_F_CPU") ], LINKFLAGS=[ "-Os", "-Wl,--gc-sections,--relax", "-mthumb", "-nostartfiles", "-nostdlib" ], LIBS=["c", "gcc", "m", "stdc++", "nosys"] )
LIBS=[ "app_update", "bt", "btdm_app", "c", "coexist", "core", "driver", "esp32", "ethernet", "expat", "freertos", "g", "hal", "json", "log", "lwip", "m", "mbedtls", "net80211", "newlib", "nghttp", "nvs_flash", "openssl", "phy", "pp", "rtc", "smartconfig", "spi_flash", "tcpip_adapter", "ulp", "vfs", "wpa", "wpa2", "wpa_supplicant", "wps", "xtensa-debug-module" ] ) env.Append( LIBSOURCE_DIRS=[ join(FRAMEWORK_DIR, "libraries") ], LINKFLAGS=[ "-T", "esp32.common.ld", "-T", "esp32.rom.ld", "-T", "esp32.peripherals.ld" ] ) # # Target: Build Core Library # libs = [] if "build.variant" in env.BoardConfig(): env.Append( CPPPATH=[
'"%s"' % join("$PROJECT_DIR", "upload.gdb") ], UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS') else: env.Replace( UPLOADER=join("$PIOPACKAGES_DIR", "tool-stlink", "st-flash"), UPLOADERFLAGS=[ "write", # write in flash "$SOURCES", # firmware path to flash "0x08000000" # flash start adress ], UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS') env.Append(CPPDEFINES=[ env.get("BOARD_OPTIONS", {}).get("build", {}).get("variant", "").upper() ], LIBS=["stdc++", "nosys"], LINKFLAGS=["-nostartfiles", "-nostdlib"]) # # Target: Build executable and linkable firmware # target_elf = env.BuildProgram() # # Target: Build the .bin file # if "uploadlazy" in COMMAND_LINE_TARGETS: target_firm = join("$BUILD_DIR", "firmware.bin")
env.Append( ASFLAGS=["-x", "assembler-with-cpp"], CFLAGS=["-std=gnu11"], CCFLAGS=[ "-Os", # optimize for size "-ffunction-sections", # place each function in its own section "-fdata-sections", "-Wall", "-mthumb", "-nostdlib", "--param", "max-inline-insns-single=500" ], CXXFLAGS=[ "-fno-rtti", "-fno-exceptions", "-std=gnu++11", "-fno-threadsafe-statics" ], CPPDEFINES=[ ("ARDUINO", 10805), # For compatibility with sketches designed for AVR@16 MHz (see SPI lib) ("F_CPU", "16000000L"), "ARDUINO_ARCH_NRF5", "NRF5", "%s" % board.get("build.mcu", "")[0:5].upper() ], LIBPATH=[ join(FRAMEWORK_DIR, "cores", board.get("build.core"), "SDK", "components", "toolchain", "gcc") ], CPPPATH=[ join(FRAMEWORK_DIR, "cores", board.get("build.core")), join(FRAMEWORK_DIR, "cores", board.get("build.core"), "SDK", "components", "drivers_nrf", "delay"), join(FRAMEWORK_DIR, "cores", board.get("build.core"), "SDK", "components", "device"), join(FRAMEWORK_DIR, "cores", board.get("build.core"), "SDK", "components", "toolchain"), join(FRAMEWORK_DIR, "cores", board.get("build.core"), "SDK", "components", "toolchain", "CMSIS", "Include") ], LINKFLAGS=[ "-Os", "-Wl,--gc-sections", "-mthumb", "--specs=nano.specs", "--specs=nosys.specs", "-Wl,--check-sections", "-Wl,--unresolved-symbols=report-all", "-Wl,--warn-common", "-Wl,--warn-section-align" ], LIBSOURCE_DIRS=[join(FRAMEWORK_DIR, "libraries")], LIBS=["m"])
LINK="$CC", LINKFLAGS=["-Os", "-mmcu=$BOARD_MCU", "-Wl,-gc-sections,-u,main"], LIBS=["m"], SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES', UPLOADER=join("$PIOPACKAGES_DIR", "tool-mspdebug", "mspdebug"), UPLOADERFLAGS=[ "$UPLOAD_PROTOCOL" if system() != "Windows" else "tilib", "--force-reset" ], UPLOADCMD='"$UPLOADER" $UPLOADERFLAGS "prog $SOURCES"', PROGNAME="firmware", PROGSUFFIX=".elf") env.Append( ASFLAGS=env.get("CCFLAGS", [])[:], BUILDERS=dict(ElfToHex=Builder(action=" ".join( ["$OBJCOPY", "-O", "ihex", "-R", ".eeprom", "$SOURCES", "$TARGET"]), suffix=".hex"))) # # Target: Build executable and linkable firmware # target_elf = env.BuildProgram() # # Target: Build the .hex # if "uploadlazy" in COMMAND_LINE_TARGETS: target_firm = join("$BUILD_DIR", "firmware.hex")
env.Append( CPPDEFINES=["CORE_" + CORE.upper()], # -D CPPPATH=[ # -I CORE_DIR, join(CORE_DIR, "include"), join(CORE_DIR, "ril", "inc"), join(CORE_DIR, "fota", "inc"), ], CFLAGS=[ "-march=armv5te", "-mfloat-abi=soft", "-mfpu=vfp", "-fsingle-precision-constant", "-mthumb", "-mthumb-interwork", "-std=c99", "-O0", "-Wall", "-fno-builtin", "-Wstrict-prototypes", "-Wp,-w", ], LINKFLAGS=[ "-march=armv5te", "-mfloat-abi=soft", "-mfpu=vfp", "-mthumb", "-mthumb-interwork", "-nostartfiles", "-Rbuild", "-Wl,--gc-sections,--relax", ], LIBPATH=[CORE_DIR], LDSCRIPT_PATH=join(CORE_DIR, "linkscript.ld"), LIBS=["gcc", "m", "app_start"], UPLOADER=join( ".", TOOL_DIR, "QFlash_V4.0", "QFlash_V4.0"), # We are waithing Quectel for console uploader UPLOADERFLAGS=[], # https://ss64.com/nt/start.html UPLOADCMD='START /D ' + TOOL_DIR + '\\QFlash_V4.0 /W QFlash_V4.0.exe', BUILDERS=dict( ElfToBin=Builder(action=env.VerboseAction( " ".join(["$OBJCOPY", "-O", "binary", "$SOURCES", "$TARGET"]), "Building $TARGET"), suffix=".dat"), GFH=Builder( # Add Mediatek Header action=env.VerboseAction( " ".join( ['"$PYTHONEXE"', '"$HEADERTOOL"', "$SOURCES", "$TARGET"]), "Adding Header"), suffix=".bin")) #dict )
_extra_flags = "-DSTM32F103xE" elif "F103x8" in _extra_flags: _extra_flags = "-DSTM32F103xB" env.ProcessFlags(_extra_flags) # remove base flags env.ProcessUnFlags(env.get("BUILD_UNFLAGS")) # apply user flags env.ProcessFlags(env.get("BUILD_FLAGS")) env.Append(CPPPATH=[ join(FRAMEWORK_DIR, FRAMEWORK_CORE, "Drivers", "CMSIS", "Include"), join(FRAMEWORK_DIR, FRAMEWORK_CORE, "Drivers", "CMSIS", "Device", "ST", MCU_FAMILY.upper() + "xx", "Include"), join(FRAMEWORK_DIR, FRAMEWORK_CORE, "Drivers", MCU_FAMILY.upper() + "xx_HAL_Driver", "Inc") ], LIBPATH=[ join(FRAMEWORK_DIR, FRAMEWORK_CORE, "Drivers", "CMSIS", "Lib", "GCC"), join(FRAMEWORK_DIR, "platformio", "ldscripts") ]) # # Generate framework specific files # generate_hal_config_file(env.BoardConfig().get("build.mcu")) # # Target: Build HAL Library #