blob: b6cf214bba64c9fc858b1091b6d2eaa47b4a3586 [file] [log] [blame]
Damien George9b908822020-09-23 15:55:55 +10001# Set location of base MicroPython directory.
2get_filename_component(MICROPY_DIR ${PROJECT_DIR}/../.. ABSOLUTE)
3
4# Include core source components.
5include(${MICROPY_DIR}/py/py.cmake)
6include(${MICROPY_DIR}/extmod/extmod.cmake)
7
8set(MICROPY_SOURCE_EXTMOD_EXTRA
9 ${MICROPY_DIR}/extmod/modonewire.c
10)
11
12set(MICROPY_SOURCE_LIB
13 ${MICROPY_DIR}/lib/littlefs/lfs1.c
14 ${MICROPY_DIR}/lib/littlefs/lfs1_util.c
15 ${MICROPY_DIR}/lib/littlefs/lfs2.c
16 ${MICROPY_DIR}/lib/littlefs/lfs2_util.c
17 ${MICROPY_DIR}/lib/mbedtls_errors/mp_mbedtls_errors.c
18 ${MICROPY_DIR}/lib/mp-readline/readline.c
19 ${MICROPY_DIR}/lib/netutils/netutils.c
20 ${MICROPY_DIR}/lib/oofatfs/ff.c
21 ${MICROPY_DIR}/lib/oofatfs/ffunicode.c
22 ${MICROPY_DIR}/lib/timeutils/timeutils.c
23 ${MICROPY_DIR}/lib/utils/interrupt_char.c
24 ${MICROPY_DIR}/lib/utils/stdout_helpers.c
25 ${MICROPY_DIR}/lib/utils/sys_stdio_mphal.c
26 ${MICROPY_DIR}/lib/utils/pyexec.c
27)
28
29set(MICROPY_SOURCE_DRIVERS
30 ${MICROPY_DIR}/drivers/bus/softspi.c
31 ${MICROPY_DIR}/drivers/dht/dht.c
32)
33
34set(MICROPY_SOURCE_PORT
35 ${PROJECT_DIR}/main.c
36 ${PROJECT_DIR}/uart.c
37 ${PROJECT_DIR}/gccollect.c
38 ${PROJECT_DIR}/mphalport.c
39 ${PROJECT_DIR}/fatfs_port.c
40 ${PROJECT_DIR}/help.c
41 ${PROJECT_DIR}/modutime.c
42 ${PROJECT_DIR}/moduos.c
43 ${PROJECT_DIR}/machine_timer.c
44 ${PROJECT_DIR}/machine_pin.c
45 ${PROJECT_DIR}/machine_touchpad.c
46 ${PROJECT_DIR}/machine_adc.c
47 ${PROJECT_DIR}/machine_dac.c
48 ${PROJECT_DIR}/machine_i2c.c
49 ${PROJECT_DIR}/machine_pwm.c
50 ${PROJECT_DIR}/machine_uart.c
51 ${PROJECT_DIR}/modmachine.c
52 ${PROJECT_DIR}/modnetwork.c
53 ${PROJECT_DIR}/network_lan.c
54 ${PROJECT_DIR}/network_ppp.c
55 ${PROJECT_DIR}/mpnimbleport.c
56 ${PROJECT_DIR}/modsocket.c
57 ${PROJECT_DIR}/modesp.c
58 ${PROJECT_DIR}/esp32_partition.c
59 ${PROJECT_DIR}/esp32_rmt.c
60 ${PROJECT_DIR}/esp32_ulp.c
61 ${PROJECT_DIR}/modesp32.c
62 ${PROJECT_DIR}/espneopixel.c
63 ${PROJECT_DIR}/machine_hw_spi.c
64 ${PROJECT_DIR}/machine_wdt.c
65 ${PROJECT_DIR}/mpthreadport.c
66 ${PROJECT_DIR}/machine_rtc.c
67 ${PROJECT_DIR}/machine_sdcard.c
68)
69
70set(MICROPY_SOURCE_QSTR
71 ${MICROPY_SOURCE_PY}
72 ${MICROPY_SOURCE_EXTMOD}
73 ${MICROPY_SOURCE_EXTMOD_EXTRA}
74 ${MICROPY_SOURCE_LIB}
75 ${MICROPY_SOURCE_PORT}
76)
77
78set(IDF_COMPONENTS
79 app_update
80 bootloader_support
Damien Georgeda2b5fa2021-02-14 01:36:30 +110081 bt
Damien George9b908822020-09-23 15:55:55 +100082 driver
83 esp32
84 esp_common
85 esp_eth
86 esp_event
87 esp_ringbuf
88 esp_rom
89 esp_wifi
90 freertos
91 heap
92 log
93 lwip
94 mbedtls
95 mdns
96 newlib
97 nvs_flash
98 sdmmc
99 soc
100 spi_flash
101 tcpip_adapter
102 ulp
103 vfs
104 xtensa
105)
106
Damien Georged191d882021-02-15 21:00:01 +1100107if(IDF_VERSION_MINOR GREATER_EQUAL 1)
108 list(APPEND IDF_COMPONENTS esp_netif)
109endif()
110
Damien Georgea9150022021-02-15 21:00:09 +1100111if(IDF_VERSION_MINOR GREATER_EQUAL 2)
112 list(APPEND IDF_COMPONENTS esp_system)
113 list(APPEND IDF_COMPONENTS esp_timer)
114endif()
115
Damien George143372a2021-02-19 10:38:01 +1100116if(IDF_VERSION_MINOR GREATER_EQUAL 3)
117 list(APPEND IDF_COMPONENTS esp_hw_support)
118 list(APPEND IDF_COMPONENTS esp_pm)
119 list(APPEND IDF_COMPONENTS hal)
120endif()
121
Damien George9b908822020-09-23 15:55:55 +1000122# Register the main IDF component.
123idf_component_register(
124 SRCS
125 ${MICROPY_SOURCE_PY}
126 ${MICROPY_SOURCE_EXTMOD}
127 ${MICROPY_SOURCE_EXTMOD_EXTRA}
128 ${MICROPY_SOURCE_LIB}
129 ${MICROPY_SOURCE_DRIVERS}
130 ${MICROPY_SOURCE_PORT}
131 INCLUDE_DIRS
132 ${MICROPY_DIR}
133 ${MICROPY_PORT_DIR}
134 ${MICROPY_BOARD_DIR}
135 ${CMAKE_BINARY_DIR}
136 REQUIRES
137 ${IDF_COMPONENTS}
138)
139
140# Set the MicroPython target as the current (main) IDF component target.
141set(MICROPY_TARGET ${COMPONENT_TARGET})
142
143# Define mpy-cross flags, for use with frozen code.
144set(MICROPY_CROSS_FLAGS -march=xtensawin)
145
146# Set compile options for this port.
147target_compile_definitions(${MICROPY_TARGET} PUBLIC
148 MICROPY_ESP_IDF_4=1
149 MICROPY_VFS_FAT=1
150 MICROPY_VFS_LFS2=1
151 FFCONF_H=\"${MICROPY_OOFATFS_DIR}/ffconf.h\"
152 LFS1_NO_MALLOC LFS1_NO_DEBUG LFS1_NO_WARN LFS1_NO_ERROR LFS1_NO_ASSERT
153 LFS2_NO_MALLOC LFS2_NO_DEBUG LFS2_NO_WARN LFS2_NO_ERROR LFS2_NO_ASSERT
154)
155
156# Disable some warnings to keep the build output clean.
157target_compile_options(${MICROPY_TARGET} PUBLIC
158 -Wno-clobbered
159 -Wno-deprecated-declarations
160 -Wno-missing-field-initializers
161)
162
163# Collect all of the include directories and compile definitions for the IDF components.
164foreach(comp ${IDF_COMPONENTS})
165 get_target_property(type __idf_${comp} TYPE)
166 set(_inc OFF)
167 set(_def OFF)
168 if(${type} STREQUAL STATIC_LIBRARY)
169 get_target_property(_inc __idf_${comp} INCLUDE_DIRECTORIES)
170 get_target_property(_def __idf_${comp} COMPILE_DEFINITIONS)
171 elseif(${type} STREQUAL INTERFACE_LIBRARY)
172 get_target_property(_inc __idf_${comp} INTERFACE_INCLUDE_DIRECTORIES)
173 get_target_property(_def __idf_${comp} INTERFACE_COMPILE_DEFINITIONS)
174 endif()
175 if(_inc)
176 list(APPEND MICROPY_CPP_INC_EXTRA ${_inc})
177 endif()
178 if(_def)
179 list(APPEND MICROPY_CPP_DEF_EXTRA ${_def})
180 endif()
181endforeach()
182
Damien Georgea9150022021-02-15 21:00:09 +1100183if(IDF_VERSION_MINOR GREATER_EQUAL 2)
184 # These paths cannot currently be found by the IDF_COMPONENTS search loop above,
185 # so add them explicitly.
186 list(APPEND MICROPY_CPP_INC_EXTRA ${IDF_PATH}/components/soc/soc/${IDF_TARGET}/include)
187 list(APPEND MICROPY_CPP_INC_EXTRA ${IDF_PATH}/components/soc/soc/include)
188endif()
189
Damien George9b908822020-09-23 15:55:55 +1000190# Include the main MicroPython cmake rules.
191include(${MICROPY_DIR}/py/mkrules.cmake)