|
1 |
| -# Check ESP-IDF version and error out if it is not in the supported range. |
2 |
| -# |
3 |
| -# Note for arduino-esp32 developers: to bypass the version check locally, |
4 |
| -# set ARDUINO_SKIP_IDF_VERSION_CHECK environment variable to 1. For example: |
5 |
| -# export ARDUINO_SKIP_IDF_VERSION_CHECK=1 |
6 |
| -# idf.py build |
7 |
| - |
8 |
| -set(min_supported_idf_version "4.4.0") |
9 |
| -set(max_supported_idf_version "4.4.99") |
10 |
| -set(idf_version "${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}.${IDF_VERSION_PATCH}") |
11 |
| - |
12 |
| -if ("${idf_version}" AND NOT "$ENV{ARDUINO_SKIP_IDF_VERSION_CHECK}") |
13 |
| - if (idf_version VERSION_LESS min_supported_idf_version) |
14 |
| - message(FATAL_ERROR "Arduino-esp32 can be used with ESP-IDF versions " |
15 |
| - "between ${min_supported_idf_version} and ${max_supported_idf_version}, " |
16 |
| - "but an older version is detected: ${idf_version}.") |
17 |
| - endif() |
18 |
| - if (idf_version VERSION_GREATER max_supported_idf_version) |
19 |
| - message(FATAL_ERROR "Arduino-esp32 can be used with ESP-IDF versions " |
20 |
| - "between ${min_supported_idf_version} and ${max_supported_idf_version}, " |
21 |
| - "but a newer version is detected: ${idf_version}.") |
22 |
| - endif() |
23 |
| -endif() |
24 |
| - |
25 |
| -set(CORE_SRCS |
26 |
| - cores/esp32/base64.cpp |
27 |
| - cores/esp32/cbuf.cpp |
28 |
| - cores/esp32/esp32-hal-adc.c |
29 |
| - cores/esp32/esp32-hal-bt.c |
30 |
| - cores/esp32/esp32-hal-cpu.c |
31 |
| - cores/esp32/esp32-hal-dac.c |
32 |
| - cores/esp32/esp32-hal-gpio.c |
33 |
| - cores/esp32/esp32-hal-i2c.c |
34 |
| - cores/esp32/esp32-hal-i2c-slave.c |
35 |
| - cores/esp32/esp32-hal-ledc.c |
36 |
| - cores/esp32/esp32-hal-matrix.c |
37 |
| - cores/esp32/esp32-hal-misc.c |
38 |
| - cores/esp32/esp32-hal-psram.c |
39 |
| - cores/esp32/esp32-hal-rgb-led.c |
40 |
| - cores/esp32/esp32-hal-sigmadelta.c |
41 |
| - cores/esp32/esp32-hal-spi.c |
42 |
| - cores/esp32/esp32-hal-time.c |
43 |
| - cores/esp32/esp32-hal-timer.c |
44 |
| - cores/esp32/esp32-hal-tinyusb.c |
45 |
| - cores/esp32/esp32-hal-touch.c |
46 |
| - cores/esp32/esp32-hal-uart.c |
47 |
| - cores/esp32/esp32-hal-rmt.c |
48 |
| - cores/esp32/Esp.cpp |
49 |
| - cores/esp32/FunctionalInterrupt.cpp |
50 |
| - cores/esp32/HardwareSerial.cpp |
51 |
| - cores/esp32/IPAddress.cpp |
52 |
| - cores/esp32/IPv6Address.cpp |
53 |
| - cores/esp32/libb64/cdecode.c |
54 |
| - cores/esp32/libb64/cencode.c |
55 |
| - cores/esp32/main.cpp |
56 |
| - cores/esp32/MD5Builder.cpp |
57 |
| - cores/esp32/Print.cpp |
58 |
| - cores/esp32/stdlib_noniso.c |
59 |
| - cores/esp32/Stream.cpp |
60 |
| - cores/esp32/StreamString.cpp |
61 |
| - cores/esp32/Tone.cpp |
62 |
| - cores/esp32/HWCDC.cpp |
63 |
| - cores/esp32/USB.cpp |
64 |
| - cores/esp32/USBCDC.cpp |
65 |
| - cores/esp32/USBMSC.cpp |
66 |
| - cores/esp32/FirmwareMSC.cpp |
67 |
| - cores/esp32/firmware_msc_fat.c |
68 |
| - cores/esp32/wiring_pulse.c |
69 |
| - cores/esp32/wiring_shift.c |
70 |
| - cores/esp32/WMath.cpp |
71 |
| - cores/esp32/WString.cpp |
72 |
| - ) |
73 |
| - |
74 |
| -set(LIBRARY_SRCS |
75 |
| - libraries/ArduinoOTA/src/ArduinoOTA.cpp |
76 |
| - libraries/AsyncUDP/src/AsyncUDP.cpp |
77 |
| - libraries/BluetoothSerial/src/BluetoothSerial.cpp |
78 |
| - libraries/BluetoothSerial/src/BTAddress.cpp |
79 |
| - libraries/BluetoothSerial/src/BTAdvertisedDeviceSet.cpp |
80 |
| - libraries/BluetoothSerial/src/BTScanResultsSet.cpp |
81 |
| - libraries/DNSServer/src/DNSServer.cpp |
82 |
| - libraries/EEPROM/src/EEPROM.cpp |
83 |
| - libraries/ESPmDNS/src/ESPmDNS.cpp |
84 |
| - libraries/Ethernet/src/ETH.cpp |
85 |
| - libraries/FFat/src/FFat.cpp |
86 |
| - libraries/FS/src/FS.cpp |
87 |
| - libraries/FS/src/vfs_api.cpp |
88 |
| - libraries/HTTPClient/src/HTTPClient.cpp |
89 |
| - libraries/HTTPUpdate/src/HTTPUpdate.cpp |
90 |
| - libraries/LittleFS/src/LittleFS.cpp |
91 |
| - libraries/Insights/src/Insights.cpp |
92 |
| - libraries/I2S/src/I2S.cpp |
93 |
| - libraries/NetBIOS/src/NetBIOS.cpp |
94 |
| - libraries/Preferences/src/Preferences.cpp |
95 |
| - libraries/RainMaker/src/RMaker.cpp |
96 |
| - libraries/RainMaker/src/RMakerNode.cpp |
97 |
| - libraries/RainMaker/src/RMakerParam.cpp |
98 |
| - libraries/RainMaker/src/RMakerDevice.cpp |
99 |
| - libraries/RainMaker/src/RMakerType.cpp |
100 |
| - libraries/RainMaker/src/RMakerQR.cpp |
101 |
| - libraries/RainMaker/src/RMakerUtils.cpp |
102 |
| - libraries/RainMaker/src/AppInsights.cpp |
103 |
| - libraries/SD_MMC/src/SD_MMC.cpp |
104 |
| - libraries/SD/src/SD.cpp |
105 |
| - libraries/SD/src/sd_diskio.cpp |
106 |
| - libraries/SD/src/sd_diskio_crc.c |
107 |
| - libraries/SimpleBLE/src/SimpleBLE.cpp |
108 |
| - libraries/SPIFFS/src/SPIFFS.cpp |
109 |
| - libraries/SPI/src/SPI.cpp |
110 |
| - libraries/Ticker/src/Ticker.cpp |
111 |
| - libraries/Update/src/Updater.cpp |
112 |
| - libraries/Update/src/HttpsOTAUpdate.cpp |
113 |
| - libraries/USB/src/USBHID.cpp |
114 |
| - libraries/USB/src/USBHIDMouse.cpp |
115 |
| - libraries/USB/src/USBHIDKeyboard.cpp |
116 |
| - libraries/USB/src/USBHIDGamepad.cpp |
117 |
| - libraries/USB/src/USBHIDConsumerControl.cpp |
118 |
| - libraries/USB/src/USBHIDSystemControl.cpp |
119 |
| - libraries/USB/src/USBHIDVendor.cpp |
120 |
| - libraries/USB/src/USBVendor.cpp |
121 |
| - libraries/WebServer/src/WebServer.cpp |
122 |
| - libraries/WebServer/src/Parsing.cpp |
123 |
| - libraries/WebServer/src/detail/mimetable.cpp |
124 |
| - libraries/WiFiClientSecure/src/ssl_client.cpp |
125 |
| - libraries/WiFiClientSecure/src/esp_crt_bundle.c |
126 |
| - libraries/WiFiClientSecure/src/WiFiClientSecure.cpp |
127 |
| - libraries/WiFi/src/WiFiAP.cpp |
128 |
| - libraries/WiFi/src/WiFiClient.cpp |
129 |
| - libraries/WiFi/src/WiFi.cpp |
130 |
| - libraries/WiFi/src/WiFiGeneric.cpp |
131 |
| - libraries/WiFi/src/WiFiMulti.cpp |
132 |
| - libraries/WiFi/src/WiFiScan.cpp |
133 |
| - libraries/WiFi/src/WiFiServer.cpp |
134 |
| - libraries/WiFi/src/WiFiSTA.cpp |
135 |
| - libraries/WiFi/src/WiFiUdp.cpp |
136 |
| - libraries/WiFiProv/src/WiFiProv.cpp |
137 |
| - libraries/Wire/src/Wire.cpp |
138 |
| - ) |
139 |
| - |
140 |
| -set(BLE_SRCS |
141 |
| - libraries/BLE/src/BLE2902.cpp |
142 |
| - libraries/BLE/src/BLE2904.cpp |
143 |
| - libraries/BLE/src/BLEAddress.cpp |
144 |
| - libraries/BLE/src/BLEAdvertisedDevice.cpp |
145 |
| - libraries/BLE/src/BLEAdvertising.cpp |
146 |
| - libraries/BLE/src/BLEBeacon.cpp |
147 |
| - libraries/BLE/src/BLECharacteristic.cpp |
148 |
| - libraries/BLE/src/BLECharacteristicMap.cpp |
149 |
| - libraries/BLE/src/BLEClient.cpp |
150 |
| - libraries/BLE/src/BLEDescriptor.cpp |
151 |
| - libraries/BLE/src/BLEDescriptorMap.cpp |
152 |
| - libraries/BLE/src/BLEDevice.cpp |
153 |
| - libraries/BLE/src/BLEEddystoneTLM.cpp |
154 |
| - libraries/BLE/src/BLEEddystoneURL.cpp |
155 |
| - libraries/BLE/src/BLEExceptions.cpp |
156 |
| - libraries/BLE/src/BLEHIDDevice.cpp |
157 |
| - libraries/BLE/src/BLERemoteCharacteristic.cpp |
158 |
| - libraries/BLE/src/BLERemoteDescriptor.cpp |
159 |
| - libraries/BLE/src/BLERemoteService.cpp |
160 |
| - libraries/BLE/src/BLEScan.cpp |
161 |
| - libraries/BLE/src/BLESecurity.cpp |
162 |
| - libraries/BLE/src/BLEServer.cpp |
163 |
| - libraries/BLE/src/BLEService.cpp |
164 |
| - libraries/BLE/src/BLEServiceMap.cpp |
165 |
| - libraries/BLE/src/BLEUtils.cpp |
166 |
| - libraries/BLE/src/BLEUUID.cpp |
167 |
| - libraries/BLE/src/BLEValue.cpp |
168 |
| - libraries/BLE/src/FreeRTOS.cpp |
169 |
| - libraries/BLE/src/GeneralUtils.cpp |
170 |
| - ) |
171 |
| - |
172 |
| -set(includedirs |
173 |
| - variants/${CONFIG_ARDUINO_VARIANT}/ |
174 |
| - cores/esp32/ |
175 |
| - libraries/ArduinoOTA/src |
176 |
| - libraries/AsyncUDP/src |
177 |
| - libraries/BLE/src |
178 |
| - libraries/BluetoothSerial/src |
179 |
| - libraries/DNSServer/src |
180 |
| - libraries/EEPROM/src |
181 |
| - libraries/ESP32/src |
182 |
| - libraries/ESPmDNS/src |
183 |
| - libraries/Ethernet/src |
184 |
| - libraries/FFat/src |
185 |
| - libraries/FS/src |
186 |
| - libraries/HTTPClient/src |
187 |
| - libraries/HTTPUpdate/src |
188 |
| - libraries/LittleFS/src |
189 |
| - libraries/Insights/src |
190 |
| - libraries/I2S/src |
191 |
| - libraries/NetBIOS/src |
192 |
| - libraries/Preferences/src |
193 |
| - libraries/RainMaker/src |
194 |
| - libraries/SD_MMC/src |
195 |
| - libraries/SD/src |
196 |
| - libraries/SimpleBLE/src |
197 |
| - libraries/SPIFFS/src |
198 |
| - libraries/SPI/src |
199 |
| - libraries/Ticker/src |
200 |
| - libraries/Update/src |
201 |
| - libraries/USB/src |
202 |
| - libraries/WebServer/src |
203 |
| - libraries/WiFiClientSecure/src |
204 |
| - libraries/WiFi/src |
205 |
| - libraries/WiFiProv/src |
206 |
| - libraries/Wire/src |
207 |
| - ) |
208 |
| - |
209 |
| -set(srcs ${CORE_SRCS} ${LIBRARY_SRCS} ${BLE_SRCS}) |
210 |
| -set(priv_includes cores/esp32/libb64) |
211 |
| -set(requires spi_flash mbedtls mdns esp_adc_cal wifi_provisioning nghttp wpa_supplicant) |
212 |
| -set(priv_requires fatfs nvs_flash app_update spiffs bootloader_support openssl bt esp_ipc esp_hid) |
213 |
| - |
214 |
| -idf_component_register(INCLUDE_DIRS ${includedirs} PRIV_INCLUDE_DIRS ${priv_includes} SRCS ${srcs} REQUIRES ${requires} PRIV_REQUIRES ${priv_requires}) |
215 |
| - |
216 |
| -if(NOT CONFIG_FREERTOS_HZ EQUAL 1000 AND NOT "$ENV{ARDUINO_SKIP_TICK_CHECK}") |
217 |
| - # See delay() in cores/esp32/esp32-hal-misc.c. |
218 |
| - message(FATAL_ERROR "esp32-arduino requires CONFIG_FREERTOS_HZ=1000 " |
219 |
| - "(currently ${CONFIG_FREERTOS_HZ})") |
220 |
| -endif() |
221 |
| - |
222 |
| -string(TOUPPER ${CONFIG_ARDUINO_VARIANT} idf_target_caps) |
223 |
| -string(REPLACE "-" "_" idf_target_for_macro "${idf_target_caps}") |
224 |
| -target_compile_options(${COMPONENT_TARGET} PUBLIC |
225 |
| - -DARDUINO=10812 |
226 |
| - -DARDUINO_${idf_target_for_macro}_DEV |
227 |
| - -DARDUINO_ARCH_ESP32 |
228 |
| - -DARDUINO_BOARD="${idf_target_caps}_DEV" |
229 |
| - -DARDUINO_VARIANT="${CONFIG_ARDUINO_VARIANT}" |
230 |
| - -DESP32) |
231 |
| - |
232 |
| -if(CONFIG_AUTOSTART_ARDUINO) |
233 |
| - # in autostart mode, arduino-esp32 contains app_main() function and needs to |
234 |
| - # reference setup() and loop() in the main component. If we add main |
235 |
| - # component to priv_requires then we create a large circular dependency |
236 |
| - # (arduino-esp32 -> main -> arduino-esp32) and can get linker errors, so |
237 |
| - # instead we add setup() and loop() to the undefined symbols list so the |
238 |
| - # linker will always include them. |
239 |
| - # |
240 |
| - # (As they are C++ symbol, we need to add the C++ mangled names.) |
241 |
| - target_link_libraries(${COMPONENT_LIB} INTERFACE "-u _Z5setupv -u _Z4loopv") |
242 |
| -endif() |
243 |
| - |
244 |
| -# This function adds a dependency on the given component if the component is included into the build. |
245 |
| -function(maybe_add_component component_name) |
246 |
| - idf_build_get_property(components BUILD_COMPONENTS) |
247 |
| - if (${component_name} IN_LIST components) |
248 |
| - idf_component_get_property(lib_name ${component_name} COMPONENT_LIB) |
249 |
| - target_link_libraries(${COMPONENT_LIB} PUBLIC ${lib_name}) |
250 |
| - endif() |
251 |
| -endfunction() |
252 |
| - |
253 |
| -maybe_add_component(esp-dsp) |
254 |
| - |
255 |
| -if(CONFIG_ESP_INSIGHTS_ENABLED) |
256 |
| - maybe_add_component(esp_insights) |
257 |
| -endif() |
258 |
| -if(CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK) |
259 |
| - maybe_add_component(esp_rainmaker) |
260 |
| - maybe_add_component(qrcode) |
261 |
| -endif() |
262 |
| -if(IDF_TARGET MATCHES "esp32s2|esp32s3" AND CONFIG_TINYUSB_ENABLED) |
263 |
| - maybe_add_component(arduino_tinyusb) |
264 |
| -endif() |
265 |
| -if(NOT CONFIG_ARDUINO_SELECTIVE_COMPILATION OR CONFIG_ARDUINO_SELECTIVE_ArduinoOTA) |
266 |
| - maybe_add_component(esp_https_ota) |
267 |
| -endif() |
268 |
| -if(NOT CONFIG_ARDUINO_SELECTIVE_COMPILATION OR CONFIG_ARDUINO_SELECTIVE_LITTLEFS) |
269 |
| - maybe_add_component(esp_littlefs) |
270 |
| -endif() |
0 commit comments