summaryrefslogtreecommitdiff
path: root/ports/esp32/esp32_common.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'ports/esp32/esp32_common.cmake')
-rw-r--r--ports/esp32/esp32_common.cmake200
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)