CMakeLists.txt 9.3 KB
Newer Older
1 2 3 4 5 6 7
# Check ESP-IDF version and error out if it is not in the supported range.
#
# Note for arduino-esp32 developers: to bypass the version check locally,
# set ARDUINO_SKIP_IDF_VERSION_CHECK environment variable to 1. For example:
#   export ARDUINO_SKIP_IDF_VERSION_CHECK=1
#   idf.py build

8 9
set(min_supported_idf_version "5.1.0")
set(max_supported_idf_version "5.1.99")
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
set(idf_version "${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}.${IDF_VERSION_PATCH}")

if ("${idf_version}" AND NOT "$ENV{ARDUINO_SKIP_IDF_VERSION_CHECK}")
  if (idf_version VERSION_LESS min_supported_idf_version)
    message(FATAL_ERROR "Arduino-esp32 can be used with ESP-IDF versions "
                        "between ${min_supported_idf_version} and ${max_supported_idf_version}, "
                        "but an older version is detected: ${idf_version}.")
  endif()
  if (idf_version VERSION_GREATER max_supported_idf_version)
    message(FATAL_ERROR "Arduino-esp32 can be used with ESP-IDF versions "
                        "between ${min_supported_idf_version} and ${max_supported_idf_version}, "
                        "but a newer version is detected: ${idf_version}.")
  endif()
endif()

25 26 27 28 29
set(CORE_SRCS
  cores/esp32/base64.cpp
  cores/esp32/cbuf.cpp
  cores/esp32/esp32-hal-adc.c
  cores/esp32/esp32-hal-bt.c
M
Me No Dev 已提交
30
  cores/esp32/esp32-hal-cpu.c
31 32 33
  cores/esp32/esp32-hal-dac.c
  cores/esp32/esp32-hal-gpio.c
  cores/esp32/esp32-hal-i2c.c
M
me-no-dev 已提交
34
  cores/esp32/esp32-hal-i2c-slave.c
35 36 37
  cores/esp32/esp32-hal-ledc.c
  cores/esp32/esp32-hal-matrix.c
  cores/esp32/esp32-hal-misc.c
38
  cores/esp32/esp32-hal-periman.c
39
  cores/esp32/esp32-hal-psram.c
40
  cores/esp32/esp32-hal-rgb-led.c
41 42 43 44
  cores/esp32/esp32-hal-sigmadelta.c
  cores/esp32/esp32-hal-spi.c
  cores/esp32/esp32-hal-time.c
  cores/esp32/esp32-hal-timer.c
45
  cores/esp32/esp32-hal-tinyusb.c
46 47
  cores/esp32/esp32-hal-touch.c
  cores/esp32/esp32-hal-uart.c
48
  cores/esp32/esp32-hal-rmt.c
49
  cores/esp32/Esp.cpp
H
hreintke 已提交
50
  cores/esp32/FunctionalInterrupt.cpp
51 52 53 54 55
  cores/esp32/HardwareSerial.cpp
  cores/esp32/IPAddress.cpp
  cores/esp32/IPv6Address.cpp
  cores/esp32/libb64/cdecode.c
  cores/esp32/libb64/cencode.c
M
me-no-dev 已提交
56
  cores/esp32/main.cpp
57 58 59 60 61
  cores/esp32/MD5Builder.cpp
  cores/esp32/Print.cpp
  cores/esp32/stdlib_noniso.c
  cores/esp32/Stream.cpp
  cores/esp32/StreamString.cpp
62
  cores/esp32/Tone.cpp
63
  cores/esp32/HWCDC.cpp
64 65
  cores/esp32/USB.cpp
  cores/esp32/USBCDC.cpp
66 67 68
  cores/esp32/USBMSC.cpp
  cores/esp32/FirmwareMSC.cpp
  cores/esp32/firmware_msc_fat.c
69 70 71 72 73 74 75 76
  cores/esp32/wiring_pulse.c
  cores/esp32/wiring_shift.c
  cores/esp32/WMath.cpp
  cores/esp32/WString.cpp
  )

set(LIBRARY_SRCS
  libraries/ArduinoOTA/src/ArduinoOTA.cpp
M
Me No Dev 已提交
77
  libraries/AsyncUDP/src/AsyncUDP.cpp
78
  libraries/BluetoothSerial/src/BluetoothSerial.cpp
79 80 81
  libraries/BluetoothSerial/src/BTAddress.cpp
  libraries/BluetoothSerial/src/BTAdvertisedDeviceSet.cpp
  libraries/BluetoothSerial/src/BTScanResultsSet.cpp
82
  libraries/DNSServer/src/DNSServer.cpp
83
  libraries/EEPROM/src/EEPROM.cpp
84
  libraries/ESPmDNS/src/ESPmDNS.cpp
85
  libraries/Ethernet/src/ETH.cpp
L
lbernstone 已提交
86
  libraries/FFat/src/FFat.cpp
87 88 89
  libraries/FS/src/FS.cpp
  libraries/FS/src/vfs_api.cpp
  libraries/HTTPClient/src/HTTPClient.cpp
J
Jeroen88 已提交
90
  libraries/HTTPUpdate/src/HTTPUpdate.cpp
91
  libraries/LittleFS/src/LittleFS.cpp
92
  libraries/Insights/src/Insights.cpp
M
Me No Dev 已提交
93
  libraries/I2S/src/I2S.cpp
M
Me No Dev 已提交
94
  libraries/NetBIOS/src/NetBIOS.cpp
95
  libraries/Preferences/src/Preferences.cpp
96 97 98 99 100
  libraries/RainMaker/src/RMaker.cpp
  libraries/RainMaker/src/RMakerNode.cpp
  libraries/RainMaker/src/RMakerParam.cpp
  libraries/RainMaker/src/RMakerDevice.cpp
  libraries/RainMaker/src/RMakerType.cpp
101 102
  libraries/RainMaker/src/RMakerQR.cpp
  libraries/RainMaker/src/RMakerUtils.cpp
103 104 105 106 107 108 109 110 111
  libraries/SD_MMC/src/SD_MMC.cpp
  libraries/SD/src/SD.cpp
  libraries/SD/src/sd_diskio.cpp
  libraries/SD/src/sd_diskio_crc.c
  libraries/SimpleBLE/src/SimpleBLE.cpp
  libraries/SPIFFS/src/SPIFFS.cpp
  libraries/SPI/src/SPI.cpp
  libraries/Ticker/src/Ticker.cpp
  libraries/Update/src/Updater.cpp
S
Sweety 已提交
112
  libraries/Update/src/HttpsOTAUpdate.cpp
113 114 115 116 117 118 119 120
  libraries/USB/src/USBHID.cpp
  libraries/USB/src/USBHIDMouse.cpp
  libraries/USB/src/USBHIDKeyboard.cpp
  libraries/USB/src/USBHIDGamepad.cpp
  libraries/USB/src/USBHIDConsumerControl.cpp
  libraries/USB/src/USBHIDSystemControl.cpp
  libraries/USB/src/USBHIDVendor.cpp
  libraries/USB/src/USBVendor.cpp
M
Me No Dev 已提交
121 122 123
  libraries/WebServer/src/WebServer.cpp
  libraries/WebServer/src/Parsing.cpp
  libraries/WebServer/src/detail/mimetable.cpp
124 125 126 127 128 129 130 131 132 133 134
  libraries/WiFiClientSecure/src/ssl_client.cpp
  libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
  libraries/WiFi/src/WiFiAP.cpp
  libraries/WiFi/src/WiFiClient.cpp
  libraries/WiFi/src/WiFi.cpp
  libraries/WiFi/src/WiFiGeneric.cpp
  libraries/WiFi/src/WiFiMulti.cpp
  libraries/WiFi/src/WiFiScan.cpp
  libraries/WiFi/src/WiFiServer.cpp
  libraries/WiFi/src/WiFiSTA.cpp
  libraries/WiFi/src/WiFiUdp.cpp
135
  libraries/WiFiProv/src/WiFiProv.cpp
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
  libraries/Wire/src/Wire.cpp
  )

set(BLE_SRCS
  libraries/BLE/src/BLE2902.cpp
  libraries/BLE/src/BLE2904.cpp
  libraries/BLE/src/BLEAddress.cpp
  libraries/BLE/src/BLEAdvertisedDevice.cpp
  libraries/BLE/src/BLEAdvertising.cpp
  libraries/BLE/src/BLEBeacon.cpp
  libraries/BLE/src/BLECharacteristic.cpp
  libraries/BLE/src/BLECharacteristicMap.cpp
  libraries/BLE/src/BLEClient.cpp
  libraries/BLE/src/BLEDescriptor.cpp
  libraries/BLE/src/BLEDescriptorMap.cpp
  libraries/BLE/src/BLEDevice.cpp
152 153
  libraries/BLE/src/BLEEddystoneTLM.cpp
  libraries/BLE/src/BLEEddystoneURL.cpp
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
  libraries/BLE/src/BLEExceptions.cpp
  libraries/BLE/src/BLEHIDDevice.cpp
  libraries/BLE/src/BLERemoteCharacteristic.cpp
  libraries/BLE/src/BLERemoteDescriptor.cpp
  libraries/BLE/src/BLERemoteService.cpp
  libraries/BLE/src/BLEScan.cpp
  libraries/BLE/src/BLESecurity.cpp
  libraries/BLE/src/BLEServer.cpp
  libraries/BLE/src/BLEService.cpp
  libraries/BLE/src/BLEServiceMap.cpp
  libraries/BLE/src/BLEUtils.cpp
  libraries/BLE/src/BLEUUID.cpp
  libraries/BLE/src/BLEValue.cpp
  libraries/BLE/src/FreeRTOS.cpp
  libraries/BLE/src/GeneralUtils.cpp
  )

171
set(includedirs
172
  variants/${CONFIG_ARDUINO_VARIANT}/
173 174
  cores/esp32/
  libraries/ArduinoOTA/src
M
Me No Dev 已提交
175
  libraries/AsyncUDP/src
176 177 178
  libraries/BLE/src
  libraries/BluetoothSerial/src
  libraries/DNSServer/src
179
  libraries/EEPROM/src
180 181
  libraries/ESP32/src
  libraries/ESPmDNS/src
C
copercini 已提交
182
  libraries/Ethernet/src
L
lbernstone 已提交
183
  libraries/FFat/src
184 185
  libraries/FS/src
  libraries/HTTPClient/src
J
Jeroen88 已提交
186
  libraries/HTTPUpdate/src
187
  libraries/LittleFS/src
188
  libraries/Insights/src
M
Me No Dev 已提交
189
  libraries/I2S/src
M
Me No Dev 已提交
190
  libraries/NetBIOS/src
191
  libraries/Preferences/src
192
  libraries/RainMaker/src
193 194 195 196 197 198 199
  libraries/SD_MMC/src
  libraries/SD/src
  libraries/SimpleBLE/src
  libraries/SPIFFS/src
  libraries/SPI/src
  libraries/Ticker/src
  libraries/Update/src
200
  libraries/USB/src
M
Me No Dev 已提交
201
  libraries/WebServer/src
202 203
  libraries/WiFiClientSecure/src
  libraries/WiFi/src
204
  libraries/WiFiProv/src
205 206 207
  libraries/Wire/src
  )

208 209
set(srcs ${CORE_SRCS} ${LIBRARY_SRCS} ${BLE_SRCS})
set(priv_includes cores/esp32/libb64)
210
set(requires spi_flash mbedtls mdns wifi_provisioning wpa_supplicant esp_adc esp_eth http_parser)
M
me-no-dev 已提交
211
set(priv_requires fatfs nvs_flash app_update spiffs bootloader_support bt esp_hid)
212

213
idf_component_register(INCLUDE_DIRS ${includedirs} PRIV_INCLUDE_DIRS ${priv_includes} SRCS ${srcs} REQUIRES ${requires} PRIV_REQUIRES ${priv_requires})
214

215 216 217 218 219 220
if(NOT CONFIG_FREERTOS_HZ EQUAL 1000 AND NOT "$ENV{ARDUINO_SKIP_TICK_CHECK}")
    # See delay() in cores/esp32/esp32-hal-misc.c.
    message(FATAL_ERROR "esp32-arduino requires CONFIG_FREERTOS_HZ=1000 "
                        "(currently ${CONFIG_FREERTOS_HZ})")
endif()

221
string(TOUPPER ${CONFIG_ARDUINO_VARIANT} idf_target_caps)
J
Jacques Supcik 已提交
222
string(REPLACE "-" "_" idf_target_for_macro "${idf_target_caps}")
M
Me No Dev 已提交
223 224
target_compile_options(${COMPONENT_TARGET} PUBLIC
    -DARDUINO=10812
J
Jacques Supcik 已提交
225
    -DARDUINO_${idf_target_for_macro}_DEV
M
Me No Dev 已提交
226 227
    -DARDUINO_ARCH_ESP32
    -DARDUINO_BOARD="${idf_target_caps}_DEV"
228
    -DARDUINO_VARIANT="${CONFIG_ARDUINO_VARIANT}"
M
Me No Dev 已提交
229
    -DESP32)
230 231 232 233 234 235 236 237 238 239 240 241

if(CONFIG_AUTOSTART_ARDUINO)
    # in autostart mode, arduino-esp32 contains app_main() function and needs to
    # reference setup() and loop() in the main component. If we add main
    # component to priv_requires then we create a large circular dependency
    # (arduino-esp32 -> main -> arduino-esp32) and can get linker errors, so
    # instead we add setup() and loop() to the undefined symbols list so the
    # linker will always include them.
    #
    # (As they are C++ symbol, we need to add the C++ mangled names.)
    target_link_libraries(${COMPONENT_LIB} INTERFACE "-u _Z5setupv -u _Z4loopv")
endif()
M
Me No Dev 已提交
242 243 244 245 246 247 248 249 250 251

# This function adds a dependency on the given component if the component is included into the build.
function(maybe_add_component component_name)
    idf_build_get_property(components BUILD_COMPONENTS)
    if (${component_name} IN_LIST components)
        idf_component_get_property(lib_name ${component_name} COMPONENT_LIB)
        target_link_libraries(${COMPONENT_LIB} PUBLIC ${lib_name})
    endif()
endfunction()

M
Me No Dev 已提交
252 253
maybe_add_component(esp-dsp)

M
me-no-dev 已提交
254 255 256
if(CONFIG_ESP_INSIGHTS_ENABLED)
    maybe_add_component(esp_insights)
endif()
M
Me No Dev 已提交
257
if(CONFIG_ESP_RMAKER_WORK_QUEUE_TASK_STACK)
M
Me No Dev 已提交
258 259 260 261 262 263 264 265 266 267 268 269
    maybe_add_component(esp_rainmaker)
    maybe_add_component(qrcode)
endif()
if(IDF_TARGET MATCHES "esp32s2|esp32s3" AND CONFIG_TINYUSB_ENABLED)
    maybe_add_component(arduino_tinyusb)
endif()
if(NOT CONFIG_ARDUINO_SELECTIVE_COMPILATION OR CONFIG_ARDUINO_SELECTIVE_ArduinoOTA)
    maybe_add_component(esp_https_ota)
endif()
if(NOT CONFIG_ARDUINO_SELECTIVE_COMPILATION OR CONFIG_ARDUINO_SELECTIVE_LITTLEFS)
    maybe_add_component(esp_littlefs)
endif()