platformio / platform-espressif8266

Espressif 8266: development platform for PlatformIO
https://registry.platformio.org/platforms/platformio/espressif8266
Apache License 2.0
320 stars 218 forks source link

Clang as the compiler? #292

Closed MacDada closed 1 year ago

MacDada commented 1 year ago

Would it be possible to use Clang instead of GCC to compile for esp8266 board?

I've already made it working for native platform, but same config/script for espressif8266 gives errors below:

➜  DnWiFiDoorLock git:(master) ✗ pio run -e nodemcu   
Processing nodemcu (platform: espressif8266; board: nodemcuv2; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Library Manager: Installing me-no-dev/ESP Async WebServer
Unpacking  [####################################]  100%
Library Manager: ESP Async WebServer@1.2.3 has been installed!
Library Manager: Resolving dependencies...
Library Manager: Installing ESPAsyncTCP
Unpacking  [####################################]  100%
Library Manager: ESPAsyncTCP@1.2.2 has been installed!
Library Manager: Installing ayushsharma82/WebSerial @ ^1.3.0
Unpacking  [####################################]  100%
Library Manager: WebSerial@1.3.0 has been installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
PLATFORM: Espressif 8266 (4.0.1) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif8266 @ 3.30002.0 (3.0.2) 
 - tool-esptool @ 1.413.0 (4.13) 
 - tool-esptoolpy @ 1.30000.201119 (3.0.0) 
 - toolchain-xtensa @ 2.100300.210717 (10.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 48 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ESP Async WebServer @ 1.2.3
|   |-- ESPAsyncTCP @ 1.2.2
|   |-- Hash @ 1.0
|   |-- ESP8266WiFi @ 1.0
|-- WebSerial @ 1.3.0
|   |-- ESP8266WiFi @ 1.0
|   |-- ESPAsyncTCP @ 1.2.2
|   |-- ESP Async WebServer @ 1.2.3
|   |   |-- ESPAsyncTCP @ 1.2.2
|   |   |-- Hash @ 1.0
|   |   |-- ESP8266WiFi @ 1.0
|-- DnWiFiDoorLock
|   |-- DnAppArduino
|   |   |-- DnAppHardware
|   |   |-- DnAppLogger
|   |   |   |-- DnAppCommon
|   |   |   |   |-- cstdarg
|   |   |-- DnAppCommon
|   |   |   |-- cstdarg
|   |-- DnAppEsp
|   |   |-- DnAppCommon
|   |   |   |-- cstdarg
|   |   |-- DnAppLogger
|   |   |   |-- DnAppCommon
|   |   |   |   |-- cstdarg
|   |   |-- WebSerial @ 1.3.0
|   |   |   |-- ESP8266WiFi @ 1.0
|   |   |   |-- ESPAsyncTCP @ 1.2.2
|   |   |   |-- ESP Async WebServer @ 1.2.3
|   |   |   |   |-- ESPAsyncTCP @ 1.2.2
|   |   |   |   |-- Hash @ 1.0
|   |   |   |   |-- ESP8266WiFi @ 1.0
|   |-- DnAppHardware
|   |-- DnAppLogger
|   |   |-- DnAppCommon
|   |   |   |-- cstdarg
|   |-- ESP Async WebServer @ 1.2.3
|   |   |-- ESPAsyncTCP @ 1.2.2
|   |   |-- Hash @ 1.0
|   |   |-- ESP8266WiFi @ 1.0
|   |-- Servo @ 1.0.2
|   |-- WebSerial @ 1.3.0
|   |   |-- ESP8266WiFi @ 1.0
|   |   |-- ESPAsyncTCP @ 1.2.2
|   |   |-- ESP Async WebServer @ 1.2.3
|   |   |   |-- ESPAsyncTCP @ 1.2.2
|   |   |   |-- Hash @ 1.0
|   |   |   |-- ESP8266WiFi @ 1.0
|   |-- DnAppCommon
|   |   |-- cstdarg
|   |-- ESP8266mDNS @ 1.2
|   |   |-- ESP8266WiFi @ 1.0
|   |-- ESP8266WiFi @ 1.0
|   |-- ArduinoOTA @ 1.0
|   |   |-- ESP8266WiFi @ 1.0
|   |   |-- ESP8266mDNS @ 1.2
|   |   |   |-- ESP8266WiFi @ 1.0
Building in release mode

Replacing the default toolchain with Clang…

Default CC (env): xtensa-lx106-elf-gcc
Default CXX (env): xtensa-lx106-elf-g++

Replaced CC (env): clang
Replaced CXX (env): clang++

Default CC (projenv): xtensa-lx106-elf-gcc
Default CXX (projenv): xtensa-lx106-elf-g++

Replaced CC (projenv): clang
Replaced CXX (projenv): clang++

Compiling .pio/build/nodemcu/src/arduino.cpp.o
Generating LD script .pio/build/nodemcu/ld/local.eagle.app.v6.common.ld
Compiling .pio/build/nodemcu/libc46/ESPAsyncTCP/AsyncPrinter.cpp.o
Compiling .pio/build/nodemcu/libc46/ESPAsyncTCP/ESPAsyncTCP.cpp.o

clang-15: error: unknown argument '-mlongcalls'; did you mean '-mlong-calls'?
clang-15: error: unknown argument: '-mtext-section-literals'
clang-15: error: unknown argument '-free'; did you mean '-fsee'?
clang-15: error: unknown argument: '-fipa-pta'

*** [.pio/build/nodemcu/src/arduino.cpp.o] Error 1
valeros commented 1 year ago

Hi @MacDada ! Unfortunately, it's currently not possible to use Clang with esp8266.

MacDada commented 1 year ago

https://github.com/espressif/arduino-esp32/issues/6858

image