libewa
(Linus)
March 19, 2025, 7:52am
1
I am currently trying to port code using the Arduino TFT_eSPI library, which also works on ESP32, to Swift. However, I get errors related to undefined constants/C enum members in the library. When just using the ESP32 Arduino bridge and TFT_eSPI, everything compiles, but the Swift compiler's stricter rules somehow break the library, and I am not proficient enough to solve it by myself.
I also found this topic , which helped fix some of the issues I was getting, but the aforementioned issues with scopes remain.
(Also, can someone tell me how to attach text files, so I can share the stdout of the build process?)
kubamracek
(Kuba Mracek)
March 19, 2025, 10:49pm
2
Would be good to see the actual build log / error messages. Btw you can always create a Github gist and post a link, if the forums prevent you from attaching large files.
libewa
(Linus)
March 20, 2025, 6:29pm
4
problems start in line 1917
libewa
(Linus)
April 12, 2025, 5:09pm
5
I fixed the basic typing errors, which seem to disappear when the actual compiler starts (and fails), but still get the same errors for the library.
idf_py_stdout_output_5210
[1/11] Performing build step for 'bootloader'
[1/1] cd /Users/linus/Documents/code/embedded/swift/swiftflag/build/bootloader/esp-idf/esptool_py && /Users/linus/.espressif/python_env/idf5.4_py3.13_env/bin/python /Users/linus/esp/v5.4/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /Users/linus/Documents/code/embedded/swift/swiftflag/build/bootloader/bootloader.bin
Bootloader binary size 0x55e0 bytes. 0x2a20 bytes (33%) free.
[2/11] No install step for 'bootloader'
[3/11] Completed 'bootloader'
[4/11] Building CXX object esp-idf/TFT_eSPI/CMakeFiles/__idf_TFT_eSPI.dir/TFT_eSPI.cpp.obj
FAILED: esp-idf/TFT_eSPI/CMakeFiles/__idf_TFT_eSPI.dir/TFT_eSPI.cpp.obj
/Users/linus/.espressif/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/bin/riscv32-esp-elf-g++ -DESP_MDNS_VERSION_NUMBER=\"1.8.1\" -DESP_PLATFORM -DIDF_VER=\"v5.4-dirty\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/Users/linus/Documents/code/embedded/swift/swiftflag/build/config -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI -I/Users/linus/esp/v5.4/esp-idf/components/newlib/platform_include -I/Users/linus/esp/v5.4/esp-idf/components/freertos/config/include -I/Users/linus/esp/v5.4/esp-idf/components/freertos/config/include/freertos -I/Users/linus/esp/v5.4/esp-idf/components/freertos/config/riscv/include -I/Users/linus/esp/v5.4/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/Users/linus/esp/v5.4/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include -I/Users/linus/esp/v5.4/esp-idf/components/freertos/FreeRTOS-Kernel/portable/riscv/include/freertos -I/Users/linus/esp/v5.4/esp-idf/components/freertos/esp_additions/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/include/soc -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/include/soc/esp32c6 -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/dma/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/ldo/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/debug_probe/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/port/esp32c6/. -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/port/esp32c6/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_hw_support/port/esp32c6/private_include -I/Users/linus/esp/v5.4/esp-idf/components/heap/include -I/Users/linus/esp/v5.4/esp-idf/components/heap/tlsf -I/Users/linus/esp/v5.4/esp-idf/components/log/include -I/Users/linus/esp/v5.4/esp-idf/components/soc/include -I/Users/linus/esp/v5.4/esp-idf/components/soc/esp32c6 -I/Users/linus/esp/v5.4/esp-idf/components/soc/esp32c6/include -I/Users/linus/esp/v5.4/esp-idf/components/soc/esp32c6/register -I/Users/linus/esp/v5.4/esp-idf/components/hal/platform_port/include -I/Users/linus/esp/v5.4/esp-idf/components/hal/esp32c6/include -I/Users/linus/esp/v5.4/esp-idf/components/hal/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_rom/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_rom/esp32c6/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_rom/esp32c6/include/esp32c6 -I/Users/linus/esp/v5.4/esp-idf/components/esp_rom/esp32c6 -I/Users/linus/esp/v5.4/esp-idf/components/esp_common/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_system/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_system/port/soc -I/Users/linus/esp/v5.4/esp-idf/components/esp_system/port/include/riscv -I/Users/linus/esp/v5.4/esp-idf/components/esp_system/port/include/private -I/Users/linus/esp/v5.4/esp-idf/components/riscv/include -I/Users/linus/esp/v5.4/esp-idf/components/lwip/include -I/Users/linus/esp/v5.4/esp-idf/components/lwip/include/apps -I/Users/linus/esp/v5.4/esp-idf/components/lwip/include/apps/sntp -I/Users/linus/esp/v5.4/esp-idf/components/lwip/lwip/src/include -I/Users/linus/esp/v5.4/esp-idf/components/lwip/port/include -I/Users/linus/esp/v5.4/esp-idf/components/lwip/port/freertos/include -I/Users/linus/esp/v5.4/esp-idf/components/lwip/port/esp32xx/include -I/Users/linus/esp/v5.4/esp-idf/components/lwip/port/esp32xx/include/arch -I/Users/linus/esp/v5.4/esp-idf/components/lwip/port/esp32xx/include/sys -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/variants/esp32 -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/cores/esp32 -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/ArduinoOTA/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/AsyncUDP/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/BLE/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/BluetoothSerial/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/DNSServer/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/EEPROM/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/ESP_I2S/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/ESP_NOW/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/ESP_SR/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/ESPmDNS/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Ethernet/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/FFat/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/FS/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/HTTPClient/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/HTTPUpdate/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Insights/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/LittleFS/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Matter/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/NetBIOS/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Network/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/OpenThread/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/PPP/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Preferences/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/RainMaker/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/SD_MMC/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/SD/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/SimpleBLE/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/SPIFFS/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/SPI/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Ticker/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Update/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/USB/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/WebServer/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/NetworkClientSecure/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/WiFi/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/WiFiProv/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Wire/src -I/Users/linus/Documents/code/embedded/swift/swiftflag/components/arduino/libraries/Zigbee/src -I/Users/linus/esp/v5.4/esp-idf/components/spi_flash/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_partition/include -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/port/include -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/mbedtls/include -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/mbedtls/library -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/esp_crt_bundle/include -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/mbedtls/3rdparty/everest/include -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/mbedtls/3rdparty/p256-m -I/Users/linus/esp/v5.4/esp-idf/components/mbedtls/mbedtls/3rdparty/p256-m/p256-m -I/Users/linus/esp/v5.4/esp-idf/components/wpa_supplicant/include -I/Users/linus/esp/v5.4/esp-idf/components/wpa_supplicant/port/include -I/Users/linus/esp/v5.4/esp-idf/components/wpa_supplicant/esp_supplicant/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_adc/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_adc/interface -I/Users/linus/esp/v5.4/esp-idf/components/esp_adc/esp32c6/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_adc/deprecated/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_eth/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_event/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_spi/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_pm/include -I/Users/linus/esp/v5.4/esp-idf/components/http_parser -I/Users/linus/esp/v5.4/esp-idf/components/esp_ringbuf/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_gptimer/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_usb_serial_jtag/include -I/Users/linus/esp/v5.4/esp-idf/components/vfs/include -I/Users/linus/esp/v5.4/esp-idf/components/driver/deprecated -I/Users/linus/esp/v5.4/esp-idf/components/driver/i2c/include -I/Users/linus/esp/v5.4/esp-idf/components/driver/touch_sensor/include -I/Users/linus/esp/v5.4/esp-idf/components/driver/twai/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_gpio/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_pcnt/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_mcpwm/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_ana_cmpr/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_i2s/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_sdmmc/include -I/Users/linus/esp/v5.4/esp-idf/components/sdmmc/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_sdspi/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_sdio/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_dac/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_rmt/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_tsens/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_sdm/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_i2c/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_uart/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_ledc/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_driver_parlio/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_netif/include -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/chmorgan__esp-libhelix-mp3/libhelix-mp3/pub -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/espressif__esp-modbus/freemodbus/common/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_timer/include -I/Users/linus/esp/v5.4/esp-idf/components/ieee802154/include -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/espressif__libsodium/libsodium/src/libsodium/include -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/espressif__libsodium/port_include -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/espressif__mdns/include -I/Users/linus/esp/v5.4/esp-idf/components/console -I/Users/linus/esp/v5.4/esp-idf/components/esp_vfs_console/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_https_ota/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_http_client/include -I/Users/linus/esp/v5.4/esp-idf/components/bootloader_support/include -I/Users/linus/esp/v5.4/esp-idf/components/bootloader_support/bootloader_flash/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_app_format/include -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/joltwallet__littlefs/include -I/Users/linus/Documents/code/embedded/swift/swiftflag/managed_components/espressif__network_provisioning/include -I/Users/linus/esp/v5.4/esp-idf/components/protocomm/include/common -I/Users/linus/esp/v5.4/esp-idf/components/protocomm/include/security -I/Users/linus/esp/v5.4/esp-idf/components/protocomm/include/transports -I/Users/linus/esp/v5.4/esp-idf/components/protocomm/include/crypto/srp6a -I/Users/linus/esp/v5.4/esp-idf/components/protocomm/proto-c -I/Users/linus/esp/v5.4/esp-idf/components/esp_wifi/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_wifi/include/local -I/Users/linus/esp/v5.4/esp-idf/components/esp_wifi/wifi_apps/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_wifi/wifi_apps/nan_app/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_phy/include -I/Users/linus/esp/v5.4/esp-idf/components/esp_phy/esp32c6/include -march=rv32imac_zicsr_zifencei -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -nostartfiles -Og -fno-shrink-wrap -fmacro-prefix-map=/Users/linus/Documents/code/embedded/swift/swiftflag=. -fmacro-prefix-map=/Users/linus/esp/v5.4/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu++2b -fno-exceptions -fno-rtti -fuse-cxa-atexit -DARDUINO=10812 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 -DARDUINO_BOARD=\"ESP32_DEV\" -DARDUINO_VARIANT=\"esp32\" -DESP32=ESP32 -MD -MT esp-idf/TFT_eSPI/CMakeFiles/__idf_TFT_eSPI.dir/TFT_eSPI.cpp.obj -MF esp-idf/TFT_eSPI/CMakeFiles/__idf_TFT_eSPI.dir/TFT_eSPI.cpp.obj.d -o esp-idf/TFT_eSPI/CMakeFiles/__idf_TFT_eSPI.dir/TFT_eSPI.cpp.obj -c /Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI/TFT_eSPI.cpp
In file included from /Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI/TFT_eSPI.cpp:16:
/Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI/TFT_eSPI.h:973:8: warning: #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! [-Wcpp]
This file has been truncated. show original
libewa
(Linus)
April 14, 2025, 5:42am
6
Ok, so it seems to complain about several macros not being defined in files that they are used in. VS Code "find definition" does, so this is probably a scoping issue.,
Good progress, feel free to post more logs / errors here. The last log seems to fail to compile some C++ source file? (I can't access the full log for some reason.)
libewa
(Linus)
April 17, 2025, 1:02pm
8
Oh, yeah, I moved all logs to the original Gist. Also, I uploaded the code to GitHub. It's a school project, don't question it.
Contribute to libewa/swiftflag development by creating an account on GitHub.
kubamracek
(Kuba Mracek)
April 21, 2025, 8:52pm
10
Looks like the errors are coming from the TFT_eSPI library's C code, and are unrelated to Swift:
In file included from /Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI/TFT_eSPI.cpp:24:
/Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI/Processors/TFT_eSPI_ESP32.c: At global scope:
/Users/linus/Documents/code/embedded/swift/swiftflag/components/TFT_eSPI/Processors/TFT_eSPI_ESP32.c:17:31: error: 'VSPI' was not declared in this scope; did you mean 'SPI'?
17 | SPIClass spi = SPIClass(VSPI);
I did actually find an open bugreport and an unmerged PR against this library with the same symptoms:
Looks like you probably need to pick that branch/diff and apply it?
libewa
(Linus)
April 22, 2025, 8:18am
11
THANK YOU! Now the only remaining errors are GCC errors about "misleading indentation", which are apparently resolved by passing -Wno-misleading-indentation
, however, when adding -Xcc -Wno-misleading-indentation
to target-compile-options
, nothing happens. When adding a nonexistent -Xcc
option, however, I get an error, so it IS parsed. I'm just using the wrong method to suppress this warning.
kubamracek
(Kuba Mracek)
April 22, 2025, 4:05pm
13
are GCC errors about "misleading indentation", which are apparently resolved by passing -Wno-misleading-indentation
, however, when adding -Xcc -Wno-misleading-indentation
to target-compile-options
, nothing happens.
The project is building both C/C++ code (using GCC) and Swift code (using swiftc, the Swift compiler). This error is coming from a .cpp file, and it's compiled with GCC, and is again unrelated to Swift. Swift flags (-Xcc ...) only have an effect on the Swift compiler.
Again sounds like a defect in the library itself, and I found this open issue about it: Compilation error for ESP32-S3. [-Werror=misleading-indentation] · Issue #3697 · Bodmer/TFT_eSPI · GitHub