ec79e44502
It was noticed that the esp32 port didn't build ulab correctly. The problem was a multiple defintion of the 'mp_hal_stdout_tx_str' and 'mp_hal_stdout_tx_strn_cooked' functions. They were defined in stdout_helpers.c but also in the ports/esp32/mphalport.c. Fixed by removing stdout_helpers.c from the build. Signed-off-by: Michael O'Cleirigh <michael.ocleirigh@rivulet.ca>
200 lines
5.4 KiB
CMake
200 lines
5.4 KiB
CMake
# Set location of base MicroPython directory.
|
|
get_filename_component(MICROPY_DIR ${PROJECT_DIR}/../.. ABSOLUTE)
|
|
|
|
# Include core source components.
|
|
include(${MICROPY_DIR}/py/py.cmake)
|
|
include(${MICROPY_DIR}/extmod/extmod.cmake)
|
|
|
|
if(NOT CMAKE_BUILD_EARLY_EXPANSION)
|
|
include(${MICROPY_DIR}/py/usermod.cmake)
|
|
endif()
|
|
|
|
set(MICROPY_QSTRDEFS_PORT
|
|
${PROJECT_DIR}/qstrdefsport.h
|
|
)
|
|
|
|
set(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/mp_mbedtls_errors.c
|
|
${MICROPY_DIR}/lib/mp-readline/readline.c
|
|
${MICROPY_DIR}/lib/netutils/netutils.c
|
|
${MICROPY_DIR}/lib/oofatfs/ff.c
|
|
${MICROPY_DIR}/lib/oofatfs/ffunicode.c
|
|
${MICROPY_DIR}/lib/timeutils/timeutils.c
|
|
${MICROPY_DIR}/lib/utils/interrupt_char.c
|
|
${MICROPY_DIR}/lib/utils/sys_stdio_mphal.c
|
|
${MICROPY_DIR}/lib/utils/pyexec.c
|
|
)
|
|
|
|
set(MICROPY_SOURCE_DRIVERS
|
|
${MICROPY_DIR}/drivers/bus/softspi.c
|
|
${MICROPY_DIR}/drivers/dht/dht.c
|
|
)
|
|
|
|
set(MICROPY_SOURCE_PORT
|
|
${PROJECT_DIR}/main.c
|
|
${PROJECT_DIR}/uart.c
|
|
${PROJECT_DIR}/gccollect.c
|
|
${PROJECT_DIR}/mphalport.c
|
|
${PROJECT_DIR}/fatfs_port.c
|
|
${PROJECT_DIR}/help.c
|
|
${PROJECT_DIR}/modutime.c
|
|
${PROJECT_DIR}/moduos.c
|
|
${PROJECT_DIR}/machine_timer.c
|
|
${PROJECT_DIR}/machine_pin.c
|
|
${PROJECT_DIR}/machine_touchpad.c
|
|
${PROJECT_DIR}/machine_adc.c
|
|
${PROJECT_DIR}/machine_dac.c
|
|
${PROJECT_DIR}/machine_i2c.c
|
|
${PROJECT_DIR}/machine_pwm.c
|
|
${PROJECT_DIR}/machine_uart.c
|
|
${PROJECT_DIR}/modmachine.c
|
|
${PROJECT_DIR}/modnetwork.c
|
|
${PROJECT_DIR}/network_lan.c
|
|
${PROJECT_DIR}/network_ppp.c
|
|
${PROJECT_DIR}/mpnimbleport.c
|
|
${PROJECT_DIR}/modsocket.c
|
|
${PROJECT_DIR}/modesp.c
|
|
${PROJECT_DIR}/esp32_nvs.c
|
|
${PROJECT_DIR}/esp32_partition.c
|
|
${PROJECT_DIR}/esp32_rmt.c
|
|
${PROJECT_DIR}/esp32_ulp.c
|
|
${PROJECT_DIR}/modesp32.c
|
|
${PROJECT_DIR}/espneopixel.c
|
|
${PROJECT_DIR}/machine_hw_spi.c
|
|
${PROJECT_DIR}/machine_wdt.c
|
|
${PROJECT_DIR}/mpthreadport.c
|
|
${PROJECT_DIR}/machine_rtc.c
|
|
${PROJECT_DIR}/machine_sdcard.c
|
|
)
|
|
|
|
set(MICROPY_SOURCE_QSTR
|
|
${MICROPY_SOURCE_PY}
|
|
${MICROPY_SOURCE_EXTMOD}
|
|
${MICROPY_SOURCE_USERMOD}
|
|
${MICROPY_SOURCE_LIB}
|
|
${MICROPY_SOURCE_PORT}
|
|
)
|
|
|
|
set(IDF_COMPONENTS
|
|
app_update
|
|
bootloader_support
|
|
bt
|
|
driver
|
|
esp32
|
|
esp_common
|
|
esp_eth
|
|
esp_event
|
|
esp_ringbuf
|
|
esp_rom
|
|
esp_wifi
|
|
freertos
|
|
heap
|
|
log
|
|
lwip
|
|
mbedtls
|
|
mdns
|
|
newlib
|
|
nvs_flash
|
|
sdmmc
|
|
soc
|
|
spi_flash
|
|
tcpip_adapter
|
|
ulp
|
|
vfs
|
|
xtensa
|
|
)
|
|
|
|
if(IDF_VERSION_MINOR GREATER_EQUAL 1)
|
|
list(APPEND IDF_COMPONENTS esp_netif)
|
|
endif()
|
|
|
|
if(IDF_VERSION_MINOR GREATER_EQUAL 2)
|
|
list(APPEND IDF_COMPONENTS esp_system)
|
|
list(APPEND IDF_COMPONENTS esp_timer)
|
|
endif()
|
|
|
|
if(IDF_VERSION_MINOR GREATER_EQUAL 3)
|
|
list(APPEND IDF_COMPONENTS esp_hw_support)
|
|
list(APPEND IDF_COMPONENTS esp_pm)
|
|
list(APPEND IDF_COMPONENTS hal)
|
|
endif()
|
|
|
|
# Register the main IDF component.
|
|
idf_component_register(
|
|
SRCS
|
|
${MICROPY_SOURCE_PY}
|
|
${MICROPY_SOURCE_EXTMOD}
|
|
${MICROPY_SOURCE_LIB}
|
|
${MICROPY_SOURCE_DRIVERS}
|
|
${MICROPY_SOURCE_PORT}
|
|
INCLUDE_DIRS
|
|
${MICROPY_DIR}
|
|
${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_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
|
|
)
|
|
|
|
# add usermod
|
|
target_link_libraries(${MICROPY_TARGET} usermod)
|
|
|
|
|
|
# Collect all of the include directories and compile definitions for the IDF components.
|
|
foreach(comp ${IDF_COMPONENTS})
|
|
get_target_property(type __idf_${comp} TYPE)
|
|
set(_inc OFF)
|
|
set(_def OFF)
|
|
if(${type} STREQUAL STATIC_LIBRARY)
|
|
get_target_property(_inc __idf_${comp} INCLUDE_DIRECTORIES)
|
|
get_target_property(_def __idf_${comp} COMPILE_DEFINITIONS)
|
|
elseif(${type} STREQUAL INTERFACE_LIBRARY)
|
|
get_target_property(_inc __idf_${comp} INTERFACE_INCLUDE_DIRECTORIES)
|
|
get_target_property(_def __idf_${comp} INTERFACE_COMPILE_DEFINITIONS)
|
|
endif()
|
|
if(_inc)
|
|
list(APPEND MICROPY_CPP_INC_EXTRA ${_inc})
|
|
endif()
|
|
if(_def)
|
|
list(APPEND MICROPY_CPP_DEF_EXTRA ${_def})
|
|
endif()
|
|
endforeach()
|
|
|
|
if(IDF_VERSION_MINOR GREATER_EQUAL 2)
|
|
# These paths cannot currently be found by the IDF_COMPONENTS search loop above,
|
|
# so add them explicitly.
|
|
list(APPEND MICROPY_CPP_INC_EXTRA ${IDF_PATH}/components/soc/soc/${IDF_TARGET}/include)
|
|
list(APPEND MICROPY_CPP_INC_EXTRA ${IDF_PATH}/components/soc/soc/include)
|
|
endif()
|
|
|
|
# Include the main MicroPython cmake rules.
|
|
include(${MICROPY_DIR}/py/mkrules.cmake)
|