diff options
Diffstat (limited to 'ports/esp32/esp32_common.cmake')
| -rw-r--r-- | ports/esp32/esp32_common.cmake | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/ports/esp32/esp32_common.cmake b/ports/esp32/esp32_common.cmake new file mode 100644 index 000000000..d55dd3813 --- /dev/null +++ b/ports/esp32/esp32_common.cmake @@ -0,0 +1,200 @@ +# Set location of base MicroPython directory. +if(NOT MICROPY_DIR) + get_filename_component(MICROPY_DIR ${CMAKE_CURRENT_LIST_DIR}/../.. ABSOLUTE) +endif() + +# Set location of the ESP32 port directory. +if(NOT MICROPY_PORT_DIR) + get_filename_component(MICROPY_PORT_DIR ${MICROPY_DIR}/ports/esp32 ABSOLUTE) +endif() + +# Include core source components. +include(${MICROPY_DIR}/py/py.cmake) + +if(NOT CMAKE_BUILD_EARLY_EXPANSION) + # Enable extmod components that will be configured by extmod.cmake. + # A board may also have enabled additional components. + set(MICROPY_PY_BTREE ON) + + include(${MICROPY_DIR}/py/usermod.cmake) + include(${MICROPY_DIR}/extmod/extmod.cmake) +endif() + +list(APPEND MICROPY_QSTRDEFS_PORT + ${MICROPY_PORT_DIR}/qstrdefsport.h +) + +list(APPEND MICROPY_SOURCE_SHARED + ${MICROPY_DIR}/shared/readline/readline.c + ${MICROPY_DIR}/shared/netutils/netutils.c + ${MICROPY_DIR}/shared/timeutils/timeutils.c + ${MICROPY_DIR}/shared/runtime/interrupt_char.c + ${MICROPY_DIR}/shared/runtime/stdout_helpers.c + ${MICROPY_DIR}/shared/runtime/sys_stdio_mphal.c + ${MICROPY_DIR}/shared/runtime/pyexec.c +) + +list(APPEND MICROPY_SOURCE_LIB + ${MICROPY_DIR}/lib/littlefs/lfs1.c + ${MICROPY_DIR}/lib/littlefs/lfs1_util.c + ${MICROPY_DIR}/lib/littlefs/lfs2.c + ${MICROPY_DIR}/lib/littlefs/lfs2_util.c + #${MICROPY_DIR}/lib/mbedtls_errors/esp32_mbedtls_errors.c + ${MICROPY_DIR}/lib/oofatfs/ff.c + ${MICROPY_DIR}/lib/oofatfs/ffunicode.c +) + +list(APPEND MICROPY_SOURCE_DRIVERS + ${MICROPY_DIR}/drivers/bus/softspi.c + ${MICROPY_DIR}/drivers/dht/dht.c +) + +list(APPEND MICROPY_SOURCE_PORT + main.c + ppp_set_auth.c + uart.c + usb.c + usb_serial_jtag.c + gccollect.c + mphalport.c + fatfs_port.c + help.c + machine_bitstream.c + machine_timer.c + machine_pin.c + machine_touchpad.c + machine_adc.c + machine_adcblock.c + machine_dac.c + machine_i2c.c + machine_i2s.c + machine_uart.c + modmachine.c + network_common.c + network_lan.c + network_ppp.c + network_wlan.c + mpnimbleport.c + modsocket.c + modesp.c + esp32_nvs.c + esp32_partition.c + esp32_rmt.c + esp32_ulp.c + modesp32.c + machine_hw_spi.c + machine_wdt.c + mpthreadport.c + machine_rtc.c + machine_sdcard.c + modespnow.c +) +list(TRANSFORM MICROPY_SOURCE_PORT PREPEND ${MICROPY_PORT_DIR}/) + +list(APPEND MICROPY_SOURCE_QSTR + ${MICROPY_SOURCE_PY} + ${MICROPY_SOURCE_EXTMOD} + ${MICROPY_SOURCE_USERMOD} + ${MICROPY_SOURCE_SHARED} + ${MICROPY_SOURCE_LIB} + ${MICROPY_SOURCE_PORT} + ${MICROPY_SOURCE_BOARD} +) + +list(APPEND IDF_COMPONENTS + app_update + bootloader_support + bt + driver + esp_adc + esp_app_format + esp_common + esp_eth + esp_event + esp_hw_support + esp_netif + esp_partition + esp_pm + esp_psram + esp_ringbuf + esp_rom + esp_system + esp_timer + esp_wifi + freertos + hal + heap + log + lwip + mbedtls + newlib + nvs_flash + sdmmc + soc + spi_flash + ulp + vfs + xtensa +) + +# Register the main IDF component. +idf_component_register( + SRCS + ${MICROPY_SOURCE_PY} + ${MICROPY_SOURCE_EXTMOD} + ${MICROPY_SOURCE_SHARED} + ${MICROPY_SOURCE_LIB} + ${MICROPY_SOURCE_DRIVERS} + ${MICROPY_SOURCE_PORT} + ${MICROPY_SOURCE_BOARD} + INCLUDE_DIRS + ${MICROPY_INC_CORE} + ${MICROPY_INC_USERMOD} + ${MICROPY_PORT_DIR} + ${MICROPY_BOARD_DIR} + ${CMAKE_BINARY_DIR} + REQUIRES + ${IDF_COMPONENTS} +) + +# Set the MicroPython target as the current (main) IDF component target. +set(MICROPY_TARGET ${COMPONENT_TARGET}) + +# Define mpy-cross flags, for use with frozen code. +set(MICROPY_CROSS_FLAGS -march=xtensawin) + +# Set compile options for this port. +target_compile_definitions(${MICROPY_TARGET} PUBLIC + ${MICROPY_DEF_CORE} + MICROPY_ESP_IDF_4=1 + MICROPY_VFS_FAT=1 + MICROPY_VFS_LFS2=1 + FFCONF_H=\"${MICROPY_OOFATFS_DIR}/ffconf.h\" + LFS1_NO_MALLOC LFS1_NO_DEBUG LFS1_NO_WARN LFS1_NO_ERROR LFS1_NO_ASSERT + LFS2_NO_MALLOC LFS2_NO_DEBUG LFS2_NO_WARN LFS2_NO_ERROR LFS2_NO_ASSERT +) + +# Disable some warnings to keep the build output clean. +target_compile_options(${MICROPY_TARGET} PUBLIC + -Wno-clobbered + -Wno-deprecated-declarations + -Wno-missing-field-initializers +) + +# Additional include directories needed for private NimBLE headers. +target_include_directories(${MICROPY_TARGET} PUBLIC + ${IDF_PATH}/components/bt/host/nimble/nimble +) + +# Add additional extmod and usermod components. +target_link_libraries(${MICROPY_TARGET} micropy_extmod_btree) +target_link_libraries(${MICROPY_TARGET} usermod) + +# Collect all of the include directories and compile definitions for the IDF components. +foreach(comp ${IDF_COMPONENTS}) + micropy_gather_target_properties(__idf_${comp}) + micropy_gather_target_properties(${comp}) +endforeach() + +# Include the main MicroPython cmake rules. +include(${MICROPY_DIR}/py/mkrules.cmake) |
